Roster

Roster · open source, MIT alpha

Hire staff whose brain is a repo.

An agent-run org, powered by GitHub. Each staff member has a charter, a memory, and a morning session that does a day's work and hands off.

Get started
See how it works
Brain
Chief Technology Officer · 3 facts in 2 sections
Search facts and files
What we have tried
one-plan-pricingboss
One plan, one price, and pricing is not ours to change.
So: raise packaging as a decision rather than testing it.
setup-step-drop-offmeasured
38% of accounts never finish the setup step (n=212, Jun to Aug).
So: nothing upstream of it is worth spending on until it moves.
Constraints
approve-outboundboss
Nothing goes out under the company name unread.
So: finished work waits in drafts/; never schedule a send.

Runs any coding agent with a command line.

Claude CodeCodexNanocoderYour own agent
The shape

One repo per mind. That's the whole database.

An ops repo holds what the business is and how it runs. Each staff member gets a private repo that is their memory, their personality and their schedule. The framework writes templates out, then gets out of the way.

acme/roster-ops
The org layer. Change it once, everyone inherits it.
org/business.mdWhat the business is
org/operating.mdThe autonomy contract
org/voice.mdHouse style
org/guardrails.mdThe non-negotiables
prompts/Composable run kinds
compose.mjsBuilds the prompt at run time
workflows/session.yamlThe reusable session
acme/technology
One brain per staff member. This one is @cto.
CHARTER.mdThe personality. Written by a person.
staff.yamlHandle, schedule, identities, peers
memory/INDEX.mdOne line per fact, read at every boot
memory/notes/The argument behind a fact
log/decisions.mdWhy things were decided
.github/workflows/Three callers, about 40 lines each

The Roster package itself is never a runtime dependency of your org. A run at 07:00 does not depend on npm.

A day in the org

They work at seven. You read it over coffee.

A session boots, works and hands off in 11 to 55 minutes. Everything it did is a commit, a comment or a pull request you can read.

07:00
The schedule wakes them

A GitHub Actions cron calls the session in your ops repo. No server of ours in the path.

07:00
They boot from memory

Org layer, charter and run kind, composed. Then memory/INDEX.md, one line per fact.

07:04
They do the work

Edit, commit, open pull requests, file asks with a peer. As their own GitHub App, never as you.

07:23
They hand off

Finished work waits for you to merge. Decisions wait in your Inbox. Memory is pruned.

Any time

@mention wakes them. Name a staff member in a comment on their tracker and it's a task, not a session: focused, on a shorter ceiling, answered on the thread.

The portal

Every brain, readable. On your machine.

A local app over the checked-out repos. It reads from disk, so it needs no login and no API quota, and it works offline. When it writes, it writes as you.

A staff member's facts, notes and files in one place, because they were always the same thing.

The Roster portal, Brain screen
Built to be trusted

Autonomy you can read. And diff, and undo.

Every behaviour traces back to a file. When someone asks why it did that, the answer is a line in a repo you own.

Composable prompts

Org policy, the charter and the run kind, stacked. A role extends the org without forking it.

org/operating.md
org/guardrails.md
org/voice.md
org/business.md
cto/CHARTER.md
prompts/daily.md
= the prompt, composed at run time

The plan, then the apply

Nothing changes anything without --apply. Every file, repo and label is listed before it exists.

roster hire cmo
+acme/marketingprivate repo
+staff.yamlmanifest
+memory/INDEX.mdempty memory
+cmo-daily.yaml07:00 schedule
~from-ctolabel on the peer
Install the App yourself. GitHub asks a person to choose the repos.

Honest health

A workflow that has never run has proved nothing. So doctor says unproven, not fine.

Callers reachableOK
Agent credential on technologyOK
cmo-daily has never runUnproven
Install cmo on acme/appYou

Memory that stays small

One line per fact, and the argument in a note. Deleting is the maintenance, and every run is cheaper for it.

6,000
words to boot, today
52,000
with a narrative status file

Upgrades are merges

The machinery is vendored with a recorded merge base, so framework changes arrive as a three-way merge. An edit to a framework-owned file is reported before it turns into a lost fix.

roster upgrade
Any coding agent

Bring the agent. Keep the org.

Roster composes a prompt and hands it over. A runner is three facts: how to install it, how to run it, and which secret holds its credential. Presets ship for Claude Code, Codex and Nanocoder.

read-onlyworkspacefull

One word for how much freedom it gets. Each agent hears it in its own flags.

org.yaml
org: acme
agent:
  id: codex
  permissions: full

# or anything with a command line
agent:
  id: my-agent
  install: cargo install my-agent
  run: my-agent --headless < "$AGENT_PROMPT_FILE"
  token_env: MY_AGENT_TOKEN
The CLI

Browser or terminal. Same files.

Everything the portal does is also a command, doing the same work on the same files. The portal is the shorter road, not the only one.

Terminal
npx @nanocollective/rosterSet up, or join, an org in a browser
roster init --org acmeOps repo, org layer, merge base
roster hire ctoRepo, workflows, labels, peers
roster app ctoTheir GitHub App and its secrets
roster doctorIs any of this actually wired up
roster portalRead every brain, locally
roster upgradeFramework changes, your edits kept
Nothing changes anything without --apply.
Principles

Opinions, written down.

Roster runs daily against a live org. These are the lessons that cost something.

A generated charter produces a generic agent.

CHARTER.md is the one file Roster refuses to write. It decides everything else, so a person writes it.

A run at 07:00 must not depend on npm.

The machinery is vendored into your repos. The framework is never a runtime dependency of your org.

A bot signing itself with a job title is a tell.

Staff post as their own GitHub App on private trackers, and as one shared, anonymous identity in public.

Setup takes days, not minutes.

So setup stores no step counter. It asks doctor what is true every time it draws.

Nothing goes out under the company name unread.

Finished work waits as a pull request, and merging is yours. Replies go out as you, through your own gh.

Deleting is the maintenance.

Every line of memory is read at every boot, by every run. So the index stays one line per fact.

Your first hire is one command away.

You need gh, a GitHub organisation and a credential for a coding agent. The rest is a page in your browser.

Get started