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.

An agent working in a task's terminal, with the diff of its changes and a note for it beside

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.

CrystalOuijit
ProjectProject, from a repository on disk or cloned from GitHub
SessionTask. Starting it creates the worktree and opens a terminal in it.
Several sessions from one promptSeveral terminals on one task, or ask the agent to split the prompt into tasks.
Main branchBranch from, under Project Settings → Worktree. Each task also has its own merge target.
Run commandsScripts, under Run Commands. Each runs in a runner panel beside the terminal.
Diff viewer with manual editsDiff review, with notes the agent reads. Edits happen in your editor, via Open in editor.
Rebase from main, Merge to mainFrom the terminal, or a done hook
A commit per iterationNone. The agent commits when you ask it to, or a hook does.
Prompt historyThe agent's own session, resumed by the continue hook
Claude Code and CodexClaude Code, Codex, Pi and OpenCode, with live status and the ouijit command. Any other CLI runs too.
Pointing Claude Code at BedrockThe same. The agent is its own CLI, with its own settings.

What you give up

Move a project over

  1. Push or finish your Crystal sessions. Ouijit makes its own worktrees.
  2. Install Ouijit and open the repository as a project.
  3. Under Project Settings → Lifecycle Hooks, put your agent in the start hook with the task's prompt, for example claude "$OUIJIT_TASK_DESCRIPTION" or codex "$OUIJIT_TASK_DESCRIPTION".
  4. Add each run command under Project Settings → Run Commands.
  5. Under Project Settings → Worktree, set Branch from if your sessions branched from something other than the checked-out branch.
  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