Changelog
Unreleased
Section titled “Unreleased”These changes become 0.2.1. Your folder of teams, members and settings is now called your crew everywhere (the folder layout still says cadrei: ~/.cadrei/<name>, cadrei.conf).
- A friendlier first run: one screen checks your tools (one line when all is well), shows the whole plan, and asks for one key. Enter sets it all up and opens your orchestrator,
pkeeps it in the plain terminal,rrestores a crew from GitHub,qquits and changes nothing. In a repo with its own Claude Code settings, skills or agents, the repo isn’t trusted unless you pressa. A new crew’s folder is trusted in Claude Code, so your orchestrator opens without a prompt. - A mascot and the brand’s colors: a tiny mascot tops the first run and
cadrei --versionin a terminal with 256 colors or more, your crew’s name shows in clay, and cadrei’s tmux sessions have a green status bar. Plain mode,NO_COLORand pipes stay as they were. - Model and effort per member:
model:andeffort:at the top of a member’s file,MODEL=andEFFORT=incadrei.conffor the whole crew, orcadrei up ... --model <model> --effort <level>for one start.cadrei lsshows them, and your orchestrator keeps its own model unless you setORCHESTRATOR_MODEL. - Plug back in: after
cadrei uninstall, or after deleting~/.cadrei/configand~/.cadrei/framework, the nextcadreifinds your crews and plugs them back in. Each crew now keeps everything about itself: where its projects are on this machine and its orchestrator’s chat (in.claude/local/, which git ignores), and the tmux choice (ORCHESTRATORincadrei.conf). - Archive and restore:
cadrei uninstall --archivechecks each crew’s backup, offers to push it, and packs your crews and settings away in~/.cadrei-archive/<date-time>/, so a reinstall is a true first run.cadrei restore, oroon that first run, brings it all back to the same places, chats included. A run that stopped halfway finishes when you run it again. - Your orchestrator opens in tmux by default, so it keeps going when you close the window.
cadrei tmux on|off [--here]changes that, and--no-tmux,--detachand--freshwork for one run. - The orchestrator greets you: by name and crew, with the first thing worth knowing (a stuck member, leftover one-time permissions, a missing project). It gets a live snapshot of your setup when it opens, and a few read-only commands are allowed for it without a prompt.
- A team status line ends your orchestrator’s replies while someone is running:
Team: engineer working 4m · reviewer idle. Say “hide the team line” to turn it off for your crew. cadrei lsis a status screen showing what each member is doing: working, waiting on you, idle, starting, or stopped by Claude’s safeguards.cadrei ls --jsonhas the same states.- Safeguard stops: when Claude’s safeguards stop a member’s reply,
cadrei up,cadrei ls, the status line and your orchestrator tell you, with how to fix it in its window or start it fresh. cadrei new <name>makes a crew.cadrei initstill works.cadrei hook on|off|skipmanages the every-chat hook, and your orchestrator offers it once, after your first finished task.- Did you mean: a mistyped command gets a suggestion, and
cadrei projectalone lists the project commands.
Changed
Section titled “Changed”- Every command speaks in one voice: errors say what happened and then how to fix it, checks use ✓, ! and ✗ (plain
+,!andxwhen the output isn’t a terminal), and paths show with~. Colors follow your terminal’s theme, andNO_COLORturns them off. cadrei helpis shorter, with examples of what to ask your orchestrator, andcadrei help advancedhas Crews and Setup groups.- Hook commands cadrei writes do nothing when the program is gone, so an uninstall without
cadrei uninstallleaves no errors behind. cadrei project syncand a GitHub restore trust only clones without their own Claude Code settings.- The member protocol asks members never to write a real-looking secret, not even a fake one.
- Sessions cadrei starts from inside a Claude Code chat no longer take that chat’s own session markers, so a member keeps its transcript and its own effort.
cadrei stop,uninstallanduninstall --archiveact only on sessions your crews recorded as theirs, never on another setup’s sessions on the same tmux server.- Your orchestrator’s greeting names a waiting or stopped member by its own team and project, with the command to open it.
- The brand art (the logo, the characters and the lead’s terminal art in
mascot/) is all rights reserved, not covered by the MIT license. NOTICE lists its files, and release archives carry it. The code stays MIT.
Security
Section titled “Security”- Team members can’t edit a crew’s
CLAUDE.md,CLAUDE.local.mdor.mcp.json, can’t read or write~/.cadrei-archive, and can’t runcadrei new. - The health check warns about
CLAUDE.md,CLAUDE.local.md,.mcp.jsonand Claude Code settings at the top of a crew, since your orchestrator loads them. - The pre-push check refuses this machine’s own files (
.claude/local/) if they were ever committed, and a password or token in a URL. A project’s repo URL is stored and shown without its password or token. cadrei project addandproject linkdon’t trust a folder whose own Claude Code settings, or skills, agents or commands in any of its folders (for a worktree or a submodule, in its main checkout or superproject too), would run for your team, links among them included; trust it yourself withcadrei project trustonce you’ve looked.- An archive or restore refuses crew names that would climb out of their folder, and archives whose folders are links. A restore goes back to a linked place only for an archive made on this machine, needs
~/.cadreiempty, keeps the config it would replace, names any model settings it brings back, and never deletes a crew’s only whole copy, or anything it didn’t make, while moving it. A restore of an archive from elsewhere names, before you agree, anything in a crew’s git settings or layout that could run a program, and cadrei’s own git commands in a crew run none of its hooks.
For tool builders
Section titled “For tool builders”cadrei ls --json is now a documented public interface, version 1, with a compatibility promise: within a version, fields are only added. See For tool builders.
- New:
cadrei ls --json --watchstreams the same state as JSON lines, a whole snapshot first and then each change. A snapshot of a crew that’s gone carriesmissing, and ateam_startedline carrieslegacyfor a team from cadre 0.1.x. - Added at the top level:
orchestrator_opens_inandhook. Added to each running member:state,sinceandwaiting_for. - Added to each running member:
no_activity_since(working or waiting, with no activity for 10 minutes or more) andturn_error(idle after a turn that ended in an error), andmodel,effort,model_fromandeffort_from. Added to the crew:modelandeffort. cadrei ls --jsonnever asks which crew; with a project in several crews it fails as it does without a terminal.- A team from cadre 0.1.x counts as your default crew’s: it shows in that crew’s
runningwithlegacy: true, and with--allunderlegacytoo. cadrei ls --json --allwith no crews at all exits 0, with"cadreis": []andorchestrator_opens_inset toterminal.
Upgrading from 0.2.0
Section titled “Upgrading from 0.2.0”Nothing to do. On its first run, 0.2.1 moves each crew’s project places and orchestrator chat from ~/.cadrei/config into the crew, adds /.claude/local/ to the crew’s .gitignore, and says so once. A crew you already have keeps opening its orchestrator in the terminal; run cadrei tmux on to move it to tmux.
Once 0.2.1 has run, 0.2.0 can’t find your projects or pick up your orchestrator’s chat: they’re in each crew’s .claude/local/ now, where 0.2.0 doesn’t look. Going back to 0.2.1 brings them back. cadrei help, cadrei --version and cadrei --check don’t move anything, so you can try those first. A project you link again while on 0.2.0 loses to the crew’s own copy, so link it after upgrading, not before.
0.2.0 - 2026-10-09
Section titled “0.2.0 - 2026-10-09”Cadre is now Cadrei (pronounced CAD-ray), since other AI agent tools already use the name Cadre. Cadrei is one program, written in Go, that you install with Homebrew or a small download script. Run cadrei, then talk to the orchestrator. This is a breaking upgrade: read “Upgrading from 0.1.x” below before you install.
Breaking changes
Section titled “Breaking changes”| Change | What to know |
|---|---|
| Cadrei is a program, not a git clone | git pull in projects/cadre no longer upgrades. Upgrade with brew upgrade cadrei, or run install.sh again. |
Cadreis live in ~/.cadrei/<name> |
0.2.0 does not open a 0.1.x cadre. The orchestrator brings it in when you ask (“bring in my old cadre from ~/.config/cadre are left as they are. |
| Personas are now members | personas/ becomes members/ and persona-settings.json becomes member-settings.json (bringing an old cadre in writes the new names). CADRE_PERSONA becomes CADREI_MEMBER. cadrei ls --json lists members. |
| Team and member names | They may use letters, digits, - and _. A team or member with a dot in its name (allowed in 0.1.x, for example ml.ops) cannot be started; rename its folder (the orchestrator does it on request, and does it when it brings in an old cadre). |
| Old command names | Each prints one line pointing to the new way and exits 1: cadrei down says to use cadrei stop, cadrei add project to ask the orchestrator or use cadrei project add, and so on. |
cadrei ls output |
A new status screen. Scripts use cadrei ls --json. |
cadrei.conf |
Read as KEY=VALUE lines. Shell code in it is ignored with a warning. |
| Projects | projects.yaml holds each project’s repo, team and about, and no local paths. Where each project is on a machine is kept in ~/.cadrei/config/places/. New clones go to a projects folder you choose (~/Developer is suggested), not into the cadrei. |
| Session names | They gain the cadrei’s name. Sessions started by 0.1.x show as legacy until restarted. |
| The orchestrator hook | It runs <cadrei program> hook orchestrator. The first run offers to replace the 0.1.x hook. |
| Python and jq | No longer needed. |
- Plain
cadreiopens the orchestrator in your terminal, in your cadrei’s folder, with the cadrei’s permission mode.cadrei --tmux [--detach]runs it in tmux instead, to come back to later or over SSH. One orchestrator runs per cadrei: a secondcadreisays where it is open, or attaches to it in tmux. - First run: a new cadrei with a starter
devteam (an engineer and a reviewer), or a restore from GitHub; offers to add the folder you are in as a project, link the skill and add the hook, each on your yes; then a short greeting and the orchestrator. - Health check on every
cadrei, silent unless something is wrong;cadrei --checkruns the full one. It recognizes 0.1.x leftovers and offers to point them at the new program. - Projects across machines:
cadrei project add | link | unlink | sync | trust | path | dir. Missing projects are marked incadrei ls, and the orchestrator offers to clone them again, link their new folder or unlink them. Cadrei never unlinks a project by itself, and unlinking never touches the folder. - Backup and restore: ask the orchestrator to back up your cadrei to a private GitHub repository; the first run on a new machine restores it, shows what it brings in, and clones its projects after a yes.
teams/is tracked, so members’ work there travels too. A pre-push hook refuses to push files that look like credentials, and files over 50 MB. - Conversations resume: members and the orchestrator continue their last conversation when started again.
--freshoncadrei,cadrei upandcadrei stopstarts a new one. cadrei stopstops a team or a member; with no team, every member of this cadrei after a confirmation (--all: every cadrei). It never stops the orchestrator.cadrei allowgrants narrow permissions to every member, the channel for consent you give in the orchestrator:add <rule>,add --auto "<sentence>",--once,list,remove. It refuses blanket rules and anything that reaches cadrei’s own files, warns about other wildcards, and commits every change. Members start with a validated, read-only copy of the grants, plus fixed rules that keep them off cadrei’s own files.- Trust: registered project folders are marked trusted in Claude Code, so members start there without the trust prompt (
--no-trustskips it). - Several cadreis:
cadrei init <name>andcadrei use <name>. A command acts on the cadrei whose folder or project you are in, else the default. Configuration is read only from~/.cadreiorCADREI_HOME. cadrei uninstallshows its plan and asks. It removes the skill link, the hook, each cadrei’s pre-push hook,~/.cadrei/configand~/.cadrei/framework, keeps every cadrei and project, and ends with the command that removes the program.- Install:
brew install rafi-ramdhani/cadrei/cadrei, orinstall.sh, which downloads the release binary, checks it againstchecksums.txtand places it in~/.local/bin.
Security
Section titled “Security”- Members cannot grant permissions, stop the whole cadrei, uninstall, create or switch cadreis, or add, link, unlink or trust projects. Sessions started by 0.1.x carry
CADRE_PERSONA, which counts the same way; this alias goes away in a later release. cadrei.confis parsed, never run, and no configuration is read from the folder you happen to be in.- Edits to
~/.claude.jsonand~/.claude/settings.jsonkeep every other key and their order, keep a backup, are written atomically, and are skipped on any doubt. - 0.1.x ran its Python helpers with the current folder on the module path, so a folder holding a file such as
json.pycould run code as you whenever you rancadrethere. 0.2.0 has no Python helpers.
Upgrading from 0.1.x
Section titled “Upgrading from 0.1.x”Nothing is migrated by code, and your old cadre is only read.
- Stop your teams. In 0.1.x:
cadre down --all. Or after the upgrade:cadrei stop, which also stops sessions 0.1.x started. - Install 0.2.0:
brew install rafi-ramdhani/cadrei/cadrei, orcurl -fsSL --proto '=https' https://raw.githubusercontent.com/rafi-ramdhani/cadrei/main/install.sh | sh. - Run
cadrei. It creates a new cadrei with the starter team and offers to link the cadrei skill, point the orchestrator hook at the new program, and remove the oldcadrecommand and skill links. When it finds your 0.1.x cadre, it prints its path. - Tell the orchestrator: “bring in my old cadre from
”. It reads the old members, playbook, house rules, projects, permission mode and lasting grants, shows you one plan, and copies them on your yes. Projects are linked where they are. Grants go throughcadrei allow, so a rule it refuses is reported, not forced. One-time grants are not carried over. - Start teams again as you need them. Members start new conversations under the new names.
The 0.1.x clone stays where it was. Running git pull in it is harmless: its cadre command and its skill then point you to Cadrei, and its hook does nothing.
If you changed files in your 0.1.x clone (for example bin/cadre, bin/orchestrator-hook.sh or skills/cadre/), git pull --ff-only stops and changes nothing, which is safe. To finish: keep your edits (git stash for uncommitted changes, or git branch my-0.1-edits for commits), then run git reset --hard origin/main in the clone. Or skip the pull: install Cadrei with Homebrew, and its first run offers to point the command, skill and hook away from the clone. The same holds for edits in any file the update changes, not only those three.
0.1.1 - 2026-10-08
Section titled “0.1.1 - 2026-10-08”cadre init,cadre addand the installer work on a machine without a git identity: the change is left uncommitted with a note instead of failing.- Clearer control flow in
bin/cadre(noA && B || C), lint-clean at shellcheck’s strictest level. - The smoke test uses its own git config.
0.1.0 - 2026-10-08
Section titled “0.1.0 - 2026-10-08”First public release.
install.sh: one command from nothing to a working cadre;--fromrestores an existing cadre and its projects on a new machine.cadrecommand:init,use,add project|team|persona,up,down,attach,ls,projects,path,sync,version.- Per-project team sessions (
cadre up dev my-appgivesdev-my-app-<role>). - Project registry (
projects.yaml) with projects cloned intoprojects/. - Shared persona protocol, orchestrator skill, optional SessionStart orchestrator hook.
- Starter template with a dev team and a research team.
- End-to-end smoke test and CI on macOS and Linux.