Coming from Crystal
Crystal was deprecated in February 2026 and its successor is an editor. If what you wanted was Claude Code and Codex in parallel worktrees, Ouijit does that, and is maintained. Here's how the pieces line up.
Why Ouijit
The agent runs as its own CLI in a terminal, in the task's worktree, so Claude Code and Codex work exactly as they do anywhere else, and Pi and OpenCode join them.
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.
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.
| Crystal | Ouijit |
|---|---|
| Project | Project, from a repository on disk or cloned from GitHub |
| Session | Task. Starting it creates the worktree and opens a terminal in it. |
| Several sessions from one prompt | Several terminals on one task, or ask the agent to split the prompt into tasks. |
| Main branch | Branch from, under Project Settings → Worktree. Each task also has its own merge target. |
| Run commands | Scripts, under Run Commands. Each runs in a runner panel beside the terminal. |
| Diff viewer with manual edits | Diff review, with notes the agent reads. Edits happen in your editor, via Open in editor. |
| Rebase from main, Merge to main | From the terminal, or a done hook |
| A commit per iteration | None. The agent commits when you ask it to, or a hook does. |
| Prompt history | The agent's own session, resumed by the continue hook |
| Claude Code and Codex | Claude Code, Codex, Pi and OpenCode, with live status and the ouijit command. Any other CLI runs too. |
| Pointing Claude Code at Bedrock | The same. The agent is its own CLI, with its own settings. |
What you give up
- Editing inside the diff. Ouijit's diff is for reading and for notes to the agent.
- Checkpoint commits after every turn. Commit from the terminal, ask the agent, or put it in a hook.
- The rebase and merge buttons. Git runs in the terminal.
- Windows. Crystal built from source there; Ouijit runs on macOS and Linux.
Move a project over
- Push or finish your Crystal sessions. Ouijit makes its own worktrees.
- Install Ouijit and open the repository as a project.
- Under Project Settings → Lifecycle Hooks, put your agent in the start hook with the task's prompt, for example
claude "$OUIJIT_TASK_DESCRIPTION"orcodex "$OUIJIT_TASK_DESCRIPTION". - Add each run command under Project Settings → Run Commands.
- Under Project Settings → Worktree, set Branch from if your sessions branched from something other than the checked-out branch.
- Press
⌘Nfor a task, give it a prompt and start it. The start hook runs in its new worktree.