CLI
rostr is a single program for macOS and Linux. Your hooks call it at the start and end of every session, and the rostr skill teaches your agent to use it too.
Concepts
- Roster
- A named list of agents you can draft from, like your Fellowship or your Smash Bros.
- Drafting
- A roster's members are in draft order. Each session gets the free member drafted least recently: anyone who hasn't been drafted yet goes first, in roster order. When no one's free, it takes the name of whoever has been resting longest, or else a numbered copy like
๐ง Gandalf 2. - Team size
- A pre-built roster is a big cast to pick from. When you assemble one, your team is its first 16, or pick 4, 8, or everyone. Then pick anyone else on that roster, or add your own, in the cast editor.
- Local or cloud
- Your whole setup lives in one place. Locally, everything is on disk. Once you turn on cloud mode, everything lives on the rostr API at
api.getrostr.sh, and every session, on your machine or in a cloud environment, drafts from there. Having a rostr key (saved byrostr cloud on, or set asROSTR_KEY) is what puts a machine in cloud mode. - Projects
- Each git repo can use its own roster. rostr identifies a project by its
originremote (owner/repo), so it's the same project on every machine and in every worktree. - Sessions
- Your hooks get each session's ID from Claude Code or Codex and pass it to rostr, so drafting, setting the first task, and releasing all happen without your agent doing anything. The start hook also sets
ROSTR_SESSIONin the session's shell, so any rostr command your agent runs knows which session it's in. - Which roster gets drafted
- The
--rosterflag on agent commands if you pass one, then the project's linked roster, then your default. Outside a git repo, rostr uses your default.
Roster commands
Set up and manage your rosters.
rostr assemble
โญ The only one you needrostr assemble [<roster>] [--preset <id> [--size <n>|all] | --names <list>] [--emoji on|off|only] [--cloud] [--no-auto-draft] [--link]Interactive setup: answer a few questions and you're done. It's the only command you need to run, and your agent can run it for you with flags.
$ rostr assembleโ Pick a preset ยท ๐ The Fellowshipโ How big is your team? ยท 6โ Name your roster ยท workโ Emoji ยท On (๐ง Gandalf)โ Where should rostr live? ยท This machineโ Draft every new session automatically? ยท Yesโ Claude Code: hooks, skill, and /draft installedโ Codex: hooks and skill installed๐ Assembled a roster named work. Start a new session to get drafted
$ rostr assemble side --names "๐งฎ Ada, Grace, Linus, Margaret, Ken, Barbara"โ๏ธ Assembled a roster named side with 6 members ๐งฎ Ada, ๐ฆ Grace, ๐ง Linus, ๐ Margaret, ๐งต Ken, ๐ป Barbararostr link / unlink
rostr link [<roster>] [--repo <owner/repo>]rostr unlink [--repo <owner/repo>]Pick which roster your project uses, or unlink it to go back to your default roster. Run rostr link on its own to see which roster this project uses and change it.
๐ก Worth it when you want to tell projects apart at a glance: give your side projects the NBA Legends, and Jordan can only mean a side project.
$ cd ~/code/recipes$ rostr linkโ me/recipes uses the work roster (your default). Pick one ยท side๐ Linked me/recipes to the side roster
$ rostr link side --repo me/blog๐ Linked me/blog to the side roster
$ rostr unlinkUnlinked me/recipes. It now uses your default roster, workrostr stats
rostr stats [<roster>, ...] [--json]See who's working on what, who's resting, and who's on the bench, across all your rosters. Name rosters to see just those.
$ rostr statswork roster๐ง Gandalf Fix auth redirect loop acme/api 12m๐ Frodo Flaky e2e tests on CI acme/web 3m๐ฑ Samwise Migrate billing to Stripe v3 acme/billing 1hbench: Aragorn, Legolas, Gimli, Boromir, Merry, Pippin
side roster๐ Jordan Port the recipe app to iOS me/recipes 40mbench: LeBron, Kobe, Magic, Bird, Curry, Shaq
$ rostr stats sideside roster๐ Jordan Port the recipe app to iOS me/recipes 40mbench: LeBron, Kobe, Magic, Bird, Curry, Shaqrostr edit
rostr edit [<roster>]Add, rename, and remove a roster's members and change their emoji, in a full-screen editor. To swap in a whole new cast, run rostr assemble and replace it.
$ rostr edit workSaved the work roster.rostr presets
rostr presets [--json]See all the pre-built rosters you can pass to --preset. They're also on the rosters page, with all their members.
$ rostr presetsfellowship ๐ The Fellowship (The Lord of the Rings)hogwarts โก Hogwarts (Harry Potter)smash-bros ๐ฎ Smash Bros (Super Smash Bros.)nba ๐ NBA Legends (Basketball)rebellion ๐ The Rebellion (Star Wars)dunder-mifflin ๐ Dunder Mifflin (The Office)billionaires ๐ฐ Billionaires (Put them to work)cs-heroes ๐งโ๐ป CS Heroes (Computer science)seminar ๐ค The Seminar (Philosophy & critical theory)matrix ๐ The Matrix (Neo vs. the Smiths)enterprise ๐ The Enterprise (Star Trek: TNG)avengers ๐ก๏ธ Avengers (Marvel)westeros ๐ Westeros (Game of Thrones)ghibli ๐ Ghibli (Studio Ghibli)olympus ๐๏ธ Olympus (Greek mythology)kanto ๐ด Kanto (Pokรฉmon)galactica ๐ธ Galactica (Battlestar Galactica)survey-corps ๐ชฝ Survey Corps (Attack on Titan)konoha ๐ฅ Konoha (Naruto)mlb โพ MLB Legends (Baseball)nfl ๐ NFL Legends (Football)nhl ๐ NHL Legends (Hockey)baltimore ๐ Baltimore (The Wire)rocinante ๐ The Rocinante (The Expanse)albuquerque ๐งช Albuquerque (Breaking Bad)tech-twitter ๐ฆ Tech Twitter (Posting through it)free-agents ๐ฒ Free Agents (Feeling chaotic?)rostr disband
rostr disband <roster> [--yes]Delete a roster, after asking. Projects that used it fall back to your default, and if it was your default, your oldest other roster takes over.
$ rostr disband workโ Disband work? 3 agents drafted, 1 linked project ยท YesDisbanded work. side is now your default rosterAgent commands
Your hooks, the rostr skill, and the /draft slash command run these.
rostr draft / bench
โ๏ธ On session start and endrostr draft [--task <description>] [--session <id>] [--json]rostr bench [<name>, ... | all] [--session <id>]Draft the next free agent when a session starts, and send it back to the bench when the session ends. The same session always gets the same name back.
$ rostr draft --task "Fix auth redirect loop"๐ง Gandalf is on it: Fix auth redirect loop
$ rostr draft --json{"name": "Gandalf", "emoji": "๐ง", "roster": "work", "display": "๐ง Gandalf"}
$ rostr bench gandalfBenched ๐ง Gandalf from the work roster.rostr task
rostr task [<name>] <description>Set or change what an agent is working on. Your hooks set the first task from your first prompt.
$ rostr task "Migrate billing to Stripe v3"๐ฑ Samwise is now on: Migrate billing to Stripe v3
$ rostr task samwise "Migrate billing to Stripe v3"๐ฑ Samwise is now on: Migrate billing to Stripe v3Slash command
If you'd rather draft by hand, turn auto-draft off and use this in Claude Code. rostr assemble installs it.
Settings
Change anything you chose during assemble.
rostr config
rostr configrostr config default <roster>rostr config emoji on|off|only [--roster <roster>]rostr config auto-draft on|offrostr config key [--token]See and change your settings. Run it on its own to see them all.
$ rostr configdefault workemoji onauto-draft oncloud off
$ rostr config emoji only๐ง Emoji only for work. Agents now show as: ๐ง ยท Fix auth redirect looprostr cloud
rostr cloud onrostr cloud installKeep your setup on the rostr API, so agents on every machine and in cloud sessions share one roster.
$ rostr cloud onโ New setup, or do you have a key? ยท New setupโ๏ธ Moved your setup to the cloud 2 rosters, 3 project links, 4 active drafts Saved your rostr key to ~/.config/rostr/credentials Run rostr config key to see it, then set it as ROSTR_KEY in your cloud environments