Quickstart
These pages describe the main branch. The latest published release is v0.6.0; features marked “In the next release” on the home page are not in it.
cd your-project # any git repo
cw init # create/attach this repo's crossweave workspace
cw # opens the cockpit (macOS) or the TUI
cw session new api # independent worktree on branch cw/api
cw session new web # independent worktree on branch cw/web
# Terminal 1: open the first shell (Ctrl-] detaches)
cw session attach api
# …in each shell, run your own tools and make/commit changes in that worktree
# In a second terminal:
cw session attach web
cw session stop api # close the shell (and what runs in it); the worktree stays
cw session start api # open a fresh shell there
Check what's safe to merge, then land conflict-free work:
cw converge status # pairwise conflict matrix + recommended merge order
cw land all # land every conflict-free, committed session, in that order
Each session has its own branch and worktree. Commit the changes you want to keep
inside that session before landing it; cw converge status shows conflicts and a
recommended order, and cw land still performs its own trial merge. If this project
has a trusted converge.testCommand, run cw config trust once and then cw check
before landing to see the test verdict on the session row. To make that a rule, set
"converge": { "testCommand": "…", "requireCheck": true }: cw land then refuses a
session whose last check is not a fresh pass (CHECK_REQUIRED); --skip-check is the
explicit way past it. The check runs with the session's own $PORT, cache and database
values while the session is running.
Other everyday commands:
| Command | What it does |
|---|---|
cw tui | Live dashboard — sessions, convergence, activity |
cw session list | Sessions, their branch and their leases |
cw session path <name> | A session's worktree (cd $(cw session path alice)) |
cw gc | Reclaim worktrees/branches from ended sessions |
cw config notify off | Mute desktop notifications (or --event land|convergence) |
cw config trust | Trust converge.testCommand for this workspace |
cw notify "tests written" [--kind done|ask] | Say, from inside a session (or its agent's hook), that it is done or needs an answer: ✓ or amber on its row, the words in the notification |
cw check [session] | Run the trusted converge.testCommand in a session's worktree; exits 1 on failure; the rail shows ✓ tests / ✗ tests |
cw hooks install|remove <claude|codex> [--yes] | Wire (or take back) the agent's own Stop/Notification hooks to cw notify, so marks are exact. Merges into the agent's config, backs it up first, never overwrites a file it cannot parse; Gemini has no hook system to wire |
cw debug [session] [--raw] | One compact text bundle for a session — the last check's failing tail, the error lines its terminal showed, the diffstat, the agent's latest words — with secrets scrubbed by a heuristic (--raw turns that off). Made to paste to an AI |
cw session history [--status landed|dead] [--query text] | Sessions that were landed or deleted, kept after their row is gone (the newest 500) |
cw pane list|split|select|zoom|layout|move|sync|close|open | Arrange the running cockpit's panes from a shell (it asks you before it closes, synchronizes or opens a page or file) |
cw browser list|console|network|errors|dom|shot|navigate|click|type|eval | Let an agent read and drive a Browser pane — only when the pane's Agent switch is on (off by default); text read from a page is untrusted data |
Full command tree: cw --help, and cw <command> --help for any
subcommand.