Coming from Claude Squad

If you used Claude Squad, you already know how Ouijit works. Each task gets a git worktree and an agent, and the agent is still a CLI in a terminal. Here's how the pieces line up.

A project's board with tasks in To Do, In Progress, In Review and Done, and their terminals in the sidebar

Why Ouijit

The agents run as their own CLIs in real terminals, in their worktrees, with no tmux in between. Each card shows what its agent is doing, and a sound or notification tells you when a turn ends.

Every agent gets the ouijit command. Ask it to split a feature into tasks and it starts them, each with its own agent. It can read the other agents' terminals, open its plan beside itself, link you to the line it changed, and stage review comments for you to send.

Auto-yes becomes safe. A task can run in a sandbox, so an agent with permission checks off is held to its worktree. Ouijit is free, open source, and runs on macOS and Linux.

What maps to what

A hook is a command the project runs when a task changes status. The start hook runs in the new worktree with the task's prompt in $OUIJIT_TASK_DESCRIPTION, and the done hook runs when the task is marked done. Both live under Project Settings → Lifecycle Hooks.

Claude SquadOuijit
SessionTask. Starting it creates the worktree and opens a terminal in it.
n, N (new session, with a prompt)New task. The prompt goes on the card, and the start hook hands it to the agent. ⌘N opens the composer from anywhere.
default_program and profilesStart hook, per project, such as claude "$OUIJIT_TASK_DESCRIPTION".
cs -p codexA different start hook, or a one-off command when you start the task.
-y, --autoyesRun the agent with its permission checks off, in a sandbox that holds it to the worktree.
tmux session; ↵ to attach, ctrl-q to detachA terminal card. Click it. Nothing to attach or detach, and no tmux.
Preview tabThe terminal itself, live. Each card shows whether its agent is thinking or waiting.
Diff tabDiff review, with notes the agent reads
s (commit and push)From the terminal, or a done hook that pushes. Pull requests from the project menu.
c (checkout), r (resume)Nothing pauses. Open the worktree itself from Open in → Editor. Quitting saves the session, and the next launch restores the terminals in their worktrees.
D (kill session)Trash the task. The worktree goes to the system trash.
↑/↓, j/kThe sidebar, or ⌘K to jump to any terminal, task or project.
One branch per sessionOne branch and worktree per task, named after the task number, such as T-42.
tmux and ghNothing. gh only for the pull request surface.

What you give up

Move a project over

  1. Push or finish your Claude Squad sessions. Ouijit makes its own worktrees.
  2. Install Ouijit and open the repository as a project.
  3. Under Project Settings → Lifecycle Hooks, put your default_program command in the start hook with the task's prompt, for example claude "$OUIJIT_TASK_DESCRIPTION".
  4. If you ran with --autoyes, add --dangerously-skip-permissions, or your agent's equivalent, to that command and set the hook to run in the sandbox, in its row under Lifecycle Hooks.
  5. For pull requests in the app, enable them under Project Settings → Experimental and run gh auth login.
  6. Press ⌘N for a task, give it a prompt and start it. The start hook runs in its new worktree.

Start commanding.

View on desktop to download
Read the docs