Hire and remove people
A person is an entry in people in the team file, credentials of their own, and a container. ost hire does the part that can be done from the command line, keeps the file’s comments and formatting, and prints the rest as steps. ost fire is the reverse.
ost hire developer --model sonnetost hire reviewer --name "Ines Varga" --pronouns she/her --model sonnet --yesThe argument is a role from the stock catalog or a custom one. The model is required, because there is no default model: give it with --model, or answer when asked in a terminal. Everything else is optional; what you leave out is generated:
| Value | If not given |
|---|---|
--name |
A name from a small built-in list of neutral names whose handle is free. |
--handle |
The first name, as a DNS label of at most 30 characters. A handle that is taken, or office, gets a numeric suffix (sam-2). |
| Pronouns | Asked for in a terminal, they/them otherwise. |
--repos |
Write on the primary repository for code roles and on the infra repository for infra roles, read on everything else. Other roles read only. |
--avatar |
The handle as the seed. An https URL is stored as avatar.url instead. |
In a terminal it asks about the name, handle, pronouns, model and repo grants (press Enter to keep the generated value), shows a summary and asks to confirm. Without a terminal it needs --yes; with --json and no --yes it prints the plan with "written": false and changes nothing.
What it does
Section titled “What it does”- Checks that git would ignore the secrets (
.outstaff/secrets/and the.envfile), asost setupdoes, before writing anything. Like everyostcommand it finds the team file from anywhere inside the repository. - Adds the person to
peopleinteam.yaml. Comments, quoting and the other sections stay as they were. - Renders the avatar to
.outstaff/people/<handle>/avatar.svg(or.png) whenintegrations.avatarsis configured. - Does what
ost setup <handle>does: writes.outstaff/people/<handle>/.env.exampleand prints the guide per adapter. - Prints the next steps and runs
ost validate.
It creates nothing in GitHub, the chat workspace or the tracker.
-
Follow the setup guide to create the person’s GitHub App, chat app and tracker member, and fill the identities in the team file:
identities.vcs,identities.chatandidentities.tracker. The office recognizes the agent’s own activity only by an exact match. -
Add the container.
ost hireprints the pieces in the pattern of the examples:- Docker Compose: a service, its home volume and its secrets, plus the office’s copy of the person’s token.
- Kubernetes: a
people/<handle>/kustomization.yamland a line in the topkustomization.yaml.
The secret names printed are those of the configured adapters (the acme example uses GitHub, Slack and Its a Plan). The authoritative list is the
.env.examplethatost setupwrote. -
Run
ost setup <handle> --deriveandost doctor <handle>until nothing fails. -
Start the container, and say hello to the new person in the team’s chat channel once they are connected.
ost fire samRemoves the person from people, again keeping the file’s formatting. It refuses an unknown handle and asks to confirm (--yes without a terminal). If policies.usage.shared lists the person, they are removed from the group, and a group left with one member is dropped. Any other place that still mentions the handle is listed and left alone.
Nothing outside the team file changes. It prints what to remove by hand: the person’s GitHub App, chat app and tracker member, their secrets, the compose service or Kubernetes folder, and the work still assigned to them in the office. Stop the agent’s container first.
Every option is in the CLI reference.