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:

CommandWhat it does
cw tuiLive dashboard — sessions, convergence, activity
cw session listSessions, their branch and their leases
cw session path <name>A session's worktree (cd $(cw session path alice))
cw gcReclaim worktrees/branches from ended sessions
cw config notify offMute desktop notifications (or --event land|convergence)
cw config trustTrust 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|openArrange 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|evalLet 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.