Documentation

Services

All 25+ service domains, the service contract, and how to build new services.

Everything in Workwarrior is a service. The ww dispatcher routes commands to executable scripts in services/<category>/. Adding a service requires no changes to any existing file.

Service Registry

Domain Commands Description
ww profile create, list, info, delete, backup, import, restore, uda, urgency, density Profile lifecycle and configuration
ww journal add, list, remove, rename Named journal management
ww ledger add, list, remove, rename Named ledger management
ww group list, create, show, add, remove, delete Profile groups
ww model list, providers, add-provider, set-default, check LLM registry
ww ctrl status, ai-on, ai-off, ai-status, ai-mode, prompt-ww AI mode and settings
ww find <term> Cross-profile search
ww issues sync, push, pull, status, enable, disable, custom GitHub sync
ww custom journals, ledgers, tasks, times, issues Configuration wizards
ww extensions taskwarrior list/search/info/refresh Extension registry
ww export JSON, CSV, markdown Profile data export
ww questions list, new, delete, <template> Template-based capture
ww browser start, stop, status Local web UI
ww remove <profile> Full profile removal
ww shortcut list, info, add, remove Alias management
ww deps install, check Dependency management
ww compile-heuristics –verbose, –digest Recompile NL rules
ww gun <args> Bulk task series
ww sword <task> -p N Task splitting
ww next Next-task recommendation
ww schedule Auto-scheduler
ww mcp install, status MCP server
ww tui install taskwarrior-tui installer

Shell Functions

Injected at shell init:

Function Description
task TaskWarrior with active profile TASKRC
timew TimeWarrior with active profile DB
j [name] "text" JRNL entry, optional journal name
l [name] <cmd> Hledger, optional ledger name
i Bugwarrior pull shorthand
q <template> Questions runner
p-<name> Activate profile

Building a New Service

Services are executable scripts in services/<category>/. The dispatcher discovers them at runtime — no registration step.

#!/usr/bin/env bash
set -euo pipefail

source "$WORKWARRIOR_BASE/lib/logging.sh"

case "${1:-}" in
  --help|-h)
    echo "ww myservice — description"
    echo "Usage: ww myservice <subcommand>"
    exit 0
    ;;
  list)
    log_info "Listing..."
    ;;
  *)
    log_error "Unknown subcommand: '${1:-}'"
    exit 1
    ;;
esac

Make it executable: chmod +x services/myservice/myservice.sh

It’s immediately available as ww myservice and appears in ww help.

Profile-Level Services

profiles/<name>/services/<category>/ shadows global services. Per-profile customizations without modifying global state.