### Clone the repo ```bash git clone https://github.com/babbworks/ww ~/ww cd ~/ww ``` The repo is your installation. There's no package manager step — workwarrior lives in `~/ww` (or wherever you clone it).
### Run the installer ```bash ./install.sh ``` The installer presents a version card for each dependency: TaskWarrior, TimeWarrior, JRNL, Hledger, Bugwarrior, and the optional tools. For each one it shows installed version, latest available, and the minimum required. On macOS it can install missing tools via Homebrew automatically. On Linux it shows the right command for your distro (apt, dnf, pacman).
### Source your shell config ```bash source ~/.bashrc # or source ~/.zshrc ``` The installer adds `ww-init.sh` to your shell config. This injects the `ww` command, shell functions (`task`, `timew`, `j`, `l`, `i`, `q`), and `p-` aliases for each profile. </div> </div>
### Check dependencies ```bash ww deps check ``` Shows the status of every dependency with version info. Install anything missing: ```bash ww deps install ```
### Create your first profile ```bash ww profile create work p-work ``` You now have an isolated workspace at `~/ww/profiles/work/` with its own TaskWarrior database, TimeWarrior instance, journal directory, and ledger files. Every tool command (`task`, `timew`, `j`, `l`) operates within this profile.
### Launch the browser UI (optional) ```bash ww browser ``` Opens `http://localhost:7777` with 15+ panels. No npm. No cloud. Python 3 stdlib only.
</div> --- ## Optional Extras ```bash ww tui install # taskwarrior-tui — full-screen terminal UI ww mcp install # MCP server — AI agent access to TaskWarrior data ``` --- ## Platform Notes | Platform | Shell | Status | |----------|-------|--------| | macOS (arm64, x86_64) | bash, zsh | Fully supported | | Ubuntu/Debian | bash, zsh | Fully supported | | Fedora/RHEL | bash, zsh | Supported | | Arch Linux | bash | Supported | | Windows (WSL2) | bash | Tested, supported | --- ## Updating Workwarrior is a git repo. Update by pulling: ```bash cd ~/ww git pull ``` Profile data lives in `profiles/` which is gitignored — it never moves during an update.