Skip to content

TruePPM

Built for waterfall, agile, and hybrid programs. Every stakeholder — the Scrum Master, the Project Manager, the PMO Director, the Executive — gets the view they need, from the same source of truth.

Most P3M tools force a choice. TruePPM is designed from the ground up so teams can work the way they work — and every stakeholder still sees what they need.

Waterfall

CPM forward/backward pass, milestones, baseline comparison, Monte Carlo risk. The Project Manager gets a Gantt that computes the math — P50, P80, P95 confidence intervals, not a single optimistic date. PM guide →

Agile

Sprint boards, WIP limits, velocity tracking, burndown charts, retrospectives. The Scrum Master lives in the board view and never has to open a Gantt. Scrum Master guide →

Hybrid

The same task is both a WBS node and a sprint story. Sprint velocity feeds the CPM forecast — non-destructive suggestions today; automatic reforecast on sprint close landed in 0.3. Zero reconciliation meetings. Read the full story →

Terminal window
git clone https://gitlab.com/trueppm/trueppm.git && cd trueppm
docker compose up -d
docker compose exec api python manage.py seed_demo_project --with-personas
# Web UI → http://localhost:5173 (six persona logins, password: demo)
# API → http://localhost:8000/api/schema/swagger-ui/

The persona password is demo because the local Docker stack runs with DEBUG=True; on a non-dev install the seed prints a one-time random password unless you set TRUEPPM_DEMO_PASSWORD. See seed_demo_project.

Or use the scheduling engine standalone — no server required:

Terminal window
pip install trueppm-scheduler

View trueppm-scheduler on PyPI →

from datetime import date, timedelta
from trueppm_scheduler import schedule, Calendar, Project, Task, Dependency
calendar = Calendar() # Mon–Fri working days
project = Project(
id="p-1", name="My Project", start_date=date(2026, 1, 5),
tasks=[
Task(id="t-1", name="Design", duration=timedelta(days=5)),
Task(id="t-2", name="Build", duration=timedelta(days=10)),
],
dependencies=[Dependency(predecessor_id="t-1", successor_id="t-2")],
calendar=calendar,
)
result = schedule(project)
print(result.tasks[1].early_finish) # 2026-01-23
print(result.critical_path) # ['t-1', 't-2']

Stack: Django 5.2 + Channels · React 19 + Vite · PostgreSQL 16 + ltree · Apache 2.0

Real scheduling, not task lists

CPM forward/backward pass on every change. You always know which tasks drive your deadline and where you have float. All 4 dependency types with calendar-aware lag.

Monte Carlo risk analysis

Add three-point estimates and get P50/P80/P95 completion dates. Commit to P80 — there’s only a 50% chance you’ll hit the CPM date.

Self-hosted, Apache 2.0

Your data stays yours. Run it on your infrastructure. The scheduling engine ships standalone on PyPI — use it without the API if you just need the math.

Built for collaboration

Real-time WebSocket push, 5-role RBAC, offline-first sync for unreliable networks. Every mutation broadcast to connected clients.

PersonaMethodologyTruePPM gives them…Guide
Project ManagersWaterfall / HybridCPM schedules, Monte Carlo confidence intervals, critical path, velocity-suggested Gantt durations (automatic reforecast added in 0.3)Guide →
Scrum MastersAgile / HybridSprint board, WIP limits, velocity tracking, burndown, retrospective-to-backlog automationGuide →
Product OwnersAgile / HybridBacklog management, velocity-based release forecasting, sprint scope protectionGuide →
Team MembersAnyBoard-first task view, My Work cross-project surface, real-time updates, offline syncGuide →
Resource ManagersAnyPer-project capacity preflight, allocation tracking; cross-program leveling in EnterpriseGuide →
PMO DirectorsAnyProgram coordination; portfolio health scores, demand intake, governance in EnterpriseGuide →
ExecutivesAnyMonte Carlo confidence intervals per project; portfolio RAG status, board-ready reports in EnterpriseGuide →

The Since column is the release a capability first shipped in. 0.2 (the 0.2.0-alpha.1 pre-release) is the current build; the 0.1 rows are the foundation it builds on.

CapabilitySinceDescription
Scheduling engine0.1CPM + Monte Carlo. Ships standalone as trueppm-scheduler on PyPI.
REST API0.1Full CRUD for projects, tasks, dependencies, resources, calendars, members, sprints. OpenAPI 3.0.3 schema.
RBAC0.15-role per-project permissions (Owner / Admin / Scheduler / Member / Viewer) on every endpoint.
Real-time0.1WebSocket broadcasts for all mutations, deferred to transaction commit.
Offline sync0.1WatermelonDB-compatible delta protocol with soft-delete tombstones.
Schedule (Gantt)0.1Custom canvas renderer — critical path, baseline comparison, milestones, build mode.
Board / Kanban0.15-column board with WIP limit overload detection and drag-to-status.
Sprints0.1Full plan → activate → close lifecycle, burndown, velocity, capacity preflight, retrospective.
Risk Register0.1Probability × impact scoring, lifecycle states, task links, CSV export.
My Work0.1Contributor surface — flat task list across projects, planned vs. estimated dates.
Velocity feedback loop0.1Sprint velocity suggests revised CPM durations non-destructively (ADR-0065).
MS Project import / export0.1.xml import/export; .mpp accepted when the optional MPXJ dependency is installed (full .mpp support lands in 0.6).
Inbound task sync0.1Webhook ingest endpoint for upstream task systems.
Helm chart0.1Kubernetes deployment with vendored sub-charts for PostgreSQL and Valkey.
Settings & administration0.2Workspace / Program / Project settings shell on live APIs — members, roles, methodology, workflow, notifications, access, integrations, and lifecycle.
Programs (OSS)0.2Program entity with rollup KPIs, cadence, cross-project risk policy, and a dual-level program backlog (epic / feature / story / task).
Recurring tasks0.2Recurrence-rule generator with custom and fractional work hours, excluded from the CPM critical path.
Durable execution0.2Outbox-dispatch hardening, Beat heartbeat, dead-letter alerting, retention purge editor, and Idempotency-Key support.
Task collaboration0.2In-drawer comments with threaded replies, @mention fan-out to project members, emoji reactions, file and external-URL attachments, and a notification bell + inbox (ADR-0075).
Notifications0.2Per-user email and Slack-webhook notifications with a preference matrix; Git-aware task automation.
MS Project import UI0.2In-app create-from-import flow layered on the 0.1 import / export REST endpoints.
Sample projects0.3Four richly-modeled sample projects (waterfall, agile, hybrid, and a multi-project program) loadable in one click, plus universal JSON project import / export.
Program schedule0.3Compute-on-read merged cross-project critical path for a program — within-program scheduling visibility (the program-true critical path across member projects).
Daily standup0.3A walk-the-board standup surface — step person-by-person through assigned work, projector-friendly and keyboard-driven.
Today view0.3A personal “what needs me today” surface that pulls your due and in-progress work across every project into one list.
Retro board0.3A live, multi-column sprint retrospective board with a team-health pulse and retro-to-backlog action items.
Flow analytics0.3Cumulative-flow diagram, weekly throughput, cycle / lead-time percentiles, and throughput-based flow forecasts for continuous-flow teams.
Scope-change audit0.3An audit trail for post-activation sprint scope changes — every injection and removal recorded, with forecast-transparency on accepted-only scope.
Task classification0.3Task type, readiness, and governance-class fields powering board readiness chips and Product Backlog grooming.
v2 interface & View focus0.3The navy/sage v2 interface refresh — unified app-shell bar, ⌘K command palette, and context bar — plus the role-context “View focus” lens.

Beyond the new capabilities above, several 0.1 rows gained substantial 0.2 depth that doesn’t surface as its own line — schedule UX (continuous zoom, drag-to-pan, backlog-to-timeline promotion, dependency-chain hover, pull-to-commit), board depth (bulk actions, full-text search, swimlanes, activity feed, PDF export, per-card real-time sync), and the velocity → CPM hybrid bridge (sprint-close calibration, sprint → milestone rollup). The 0.2.0-alpha.1 CHANGELOG entry is the full record.