Skip to content

Your orchestrator

Your orchestrator speaks first every time cadrei opens it, so you always know which crew you’re in. You’ll see a short (cadrei opened this chat) message before it: that’s cadrei waking it up, not you, and it never counts as your yes to anything.

  • On the first run, it says hi, names your crew, and offers three ways to start: a read-only review of your repo (only the reviewer runs, and nothing changes), a small feature built on a branch, or another team.
  • Every time after, it says up to three lines: who it is and which crew, the team line when someone’s running, and the one thing that matters most right now (a member stopped by safeguards, leftover one-time grants, a project that isn’t on this machine, a member waiting on you, or Your team is ready. What's next?).

When it opens, cadrei hands it a snapshot of your crew: projects, teams, who’s running and what they’re doing. So it doesn’t need to run anything to greet you. It may run cadrei ls, cadrei ls --json, cadrei ls --all and cadrei allow list without asking you first, since they only read. Everything else still asks.

While anyone on your team is running, your orchestrator ends every reply with one short line:

Started the reviewer on my-app. It's reading the code now and will report
the top 3 things to fix.
Team: reviewer working just now

Members waiting on you, or stopped by safeguards, come first and in bold: Team: **! reviewer waiting on you** · engineer working 25m · designer idle. With nobody running, there’s no line. Cadrei sends the line fresh with every message, so it’s always current and costs your orchestrator no extra work.

The first time the line shows on a machine, a hint comes right under it, once:

Team: reviewer working just now
(Say "hide the team line" if you'd rather not see this.)

To hide it, ask: “hide the team line”. Your orchestrator adds - Don't end replies with the team status line. under ## Preferences in your crew’s playbook.md and commits it, so it’s a preference of your crew and travels with a backup. There’s no setting or command for it. Say “show the team line” to bring it back. Hidden or not, your orchestrator still tells you in words when someone’s waiting on you or stopped by safeguards, and cadrei ls shows your team anytime.

An orchestrator the every-chat hook started has no team line, since that hook can’t add cadrei’s settings to a chat. It runs cadrei ls when your team’s status matters, and Claude Code asks you first.

The every-chat hook is a SessionStart hook in ~/.claude/settings.json that makes every new Claude Code chat open as your orchestrator. It isn’t offered on the first run. Instead, your orchestrator offers it once, right after your first finished task. Say no, and it doesn’t ask again (you can still ask it anytime).

Command What it does
cadrei hook says whether it’s on
cadrei hook on adds it: new Claude Code chats open as your orchestrator
cadrei hook off removes it: new chats are plain again
cadrei hook skip records your no to the offer

Its cadrei commands act on the crew for its folder (your default crew outside every crew and project). It runs <cadrei program> hook orchestrator, and stays silent in member sessions, in an orchestrator cadrei opened, and in chats started with CADREI_OFF=1 claude. An orchestrator started this way gets the same snapshot, but no team line and no read-only commands allowed in advance. Without the hook, run cadrei, or ask any chat to use cadrei’s instructions.

The hook is added with a backup of the file (settings.json.bak-cadrei), keeping every other setting. cadrei hook off and cadrei uninstall remove it.