ww profile create work && p-work
Five tools.
One command surface.
Workwarrior wraps TaskWarrior, TimeWarrior, JRNL, Hledger, and Bugwarrior into a single profile-based system. Switch contexts instantly. Nothing bleeds between profiles.
Most productivity stacks are five apps that don't know each other.
Task managers don't track time. Time trackers don't do accounting. Journals live in a separate app. Ledgers in another. And none of them understand that you might have three completely different work contexts — client work, personal projects, a side business — that should never touch each other.
Workwarrior doesn't replace these tools. It orchestrates them. Each tool is best-in-class at what it does. Workwarrior adds profile isolation, unified commands, a browser UI, natural language input, and a growing service layer — without any of the tools knowing the others exist.
02 — Profile IsolationSwitch contexts. Not configs.
A profile is a directory. Activating it sets environment variables. Every tool — TaskWarrior,
TimeWarrior, JRNL, Hledger — reads those env vars automatically. No symlinks. No config
switching. No path hacking. p-work puts you in your work context.
p-personal switches you out. Backup is tar. Restore is untar.
Profiles support multiple named journals, multiple named ledgers, and carry their own UDA definitions, urgency tuning, and service configs. Groups let you batch-operate across profiles with a single command.
03 — Natural Language627 rules before it ever touches an LLM.
The CMD service translates plain English into tool commands. It tries 627 compiled heuristic regex rules first — no network, no latency, no model needed. Only if nothing matches does it fall through to an optional local LLM (ollama) or remote provider.
The heuristic engine is self-improving: every CMD submission is logged, and
ww compile-heuristics --digest converts successful AI translations into new
rules. Over time, more goes through heuristics. AI dependency decreases.
Local. No npm. Python 3 stdlib only.
ww browser starts a locally-served web interface on localhost:7777.
15+ panels cover tasks, time, journals, ledgers, a unified command input, AI controls,
GitHub sync status, and a weapons bar. Server-Sent Events push profile changes to the
browser in real time. Static files served from disk — changes visible on refresh, no
restart needed.
Service Architecture
25+ domainsCreate, list, info, delete, backup, import, restore, UDA management, urgency tuning, density scoring
Locally-served web UI — 15+ panels, SSE real-time, no cloud, Python 3 stdlib only
Two-way GitHub sync + Bugwarrior pull from 20+ services (GitHub, GitLab, Jira, Trello...)
Recompile NL→command rules. Self-improving via --digest analysis of CMD log
Cross-profile search across tasks, time records, journal entries, and ledger data
LLM provider and model registry — provider add/remove, model set-default, fallback chains
Template-based capture workflows — structured prompts that write to tasks, journal, or ledger
Profile data export in JSON, CSV, or markdown — full or filtered by resource type
Extension registry for TaskWarrior hooks, TimeWarrior extensions — list, search, install
The system behind the system.
ww/system is the project's control plane — an internal coordination layer built on the same
agent-based development model that ships as optional MCP tooling for users. Not just documentation:
a formal fragility register, gate-guarded merge contracts, role assignments, and a canonical task board.
Orchestrator / Builder / Verifier / Docs
Four always-active agent roles. No agent self-approves. Orchestrator never writes production code. Verifier never writes production code.
Fragility Register
The sync engine (10 lib files) is classified HIGH FRAGILITY. Changes require extended risk briefs and integration tests before merge.
Gate Model
Gate A (spec complete), Gate B (implementation ready), Gate C (tests pass), Gate D (docs updated). No skipping gates.
Shell Standards
#!/usr/bin/env bash + set -euo pipefail on every script. Absolute paths always. Exit codes 0/1/2 enforced.
We didn't build the tools. We wired them together.
Workwarrior is as open source as it gets — a CLI layer and browser layer on top of a set of tools that are already excellent. We acknowledge the creators, document the connections, and celebrate the adaptations. The whole thing only works because these projects exist.