Agent Office v0.27.0 · POC Get started
Menu: Guides

Guides

Personal and company deployments

The same office serves one person running agents for their own work and a company running agents for its business. What each needs, how to set it up, and what isn't there yet.

An office for one person and an office for a company run the same platform. They differ in who signs in, who approves what, which model credential is allowed, and what has to keep working when nobody is watching.

PersonalCompany
WhoYou (maybe a partner as a viewer)A team with owners, admins, leads and viewers
HostA Mac that is always on, or one small VPSA dedicated VM, run like any server with admin credentials
Model credentialA Claude subscription token is fine for your own workAnthropic API keys from a Console workspace with a spend limit; per-agent keys for sensitive agents
ApprovalsYou merge your own policy PRsDifferent people approve hires, access and budget
Sign-inA password, on a private URL (Tailscale or similar)Your identity provider (SSO)
First thing that goes wrongNobody notices an agent is waiting; the disk dies without a backupThe security review asks about SSO, audit export and retention

See Model credentials for Anthropic's terms on subscription tokens and API keys.

Start with officectl init --profile personal or --profile company for matching defaults. Once the office runs, Settings → Readiness checks this office against both lists below and links to the fix for anything missing.

A personal office#

  1. Host. A small Ubuntu 24.04 VPS with the bundled Gitea is the shortest path (Quickstart). A Mac works too (macOS desk Mac). Keep the office off the public internet unless you need it there: a Tailscale address is enough for your phone.
  2. Credential. officectl init --model-credential-kind subscription stores a claude setup-token token. Settings shows "Subscription: personal use".
  3. Approvals. require_approvals defaults to 0, so you merge your own hires and policy changes. Needs you still lists everything that waits for you.
  4. Backups. Set backup.schedule and backup.dir in office.yaml and the office backs itself up every day, the bundled Gitea included (Scheduled backups). Copy the backups off the machine, and keep a copy of secrets.key somewhere else (a password manager): backups don't contain it, and a restore on another machine needs it.
  5. Upgrades. officectl upgrade <version> shows the notes for every release it crosses and stops on breaking changes. Settings → About this release shows what you are running. After each one, restart and run officectl doctor, officectl verify and officectl smoke (After an upgrade): the smoke confirms with a real run that your credential works through the model proxy.
  6. Know when you're needed. On Account → Notifications, add an ntfy topic and install the ntfy app: approvals, policy proposals, agents' pull requests, replies to your mail and failures arrive as a push (Notifications).
  7. Costs. Settings → Spend shows each agent's spend today against its daily budget, and the last 7 days. On a subscription token, dollar figures are estimates; budget.max_runs_per_day (default 24) caps runs instead.
  8. If something goes wrong. Stop now on an agent's desk ends its running work at once; Settings → Emergency stop (or officectl halt) stops every agent. Neither needs a pull request.

A company office#

  1. Sign-in. Connect your identity provider (Single sign-on) and turn auth.local_passwords off, so its MFA and off-boarding apply. Set auth.oidc.require_group to the group allowed in; the office re-checks everyone with the provider every hour (max_session_minutes).
  2. Host. A dedicated VM that runs nothing else, patched and backed up like any host holding admin credentials. Read What the POC does and doesn't protect against first.
  3. Credentials. API keys only: an office key from a Console workspace with a spend limit, and a per-agent key for any agent that handles sensitive data. Agents never see the key: each run gets a token for the office's model proxy, which stops working when the run ends. Set daily budgets per agent with hard_stop: true; each run reserves its share when it starts, so runs started together can't overshoot.
  4. People and roles. Owners and admins few; leads review agents' work and merge project PRs (code.review); everyone else a viewer. Invite people by email; remove them in access.yaml by PR.
  5. Approvals. List different people as hiring_approvers, access_approvers and budget_approvers in access.yaml: the office refuses a merge unless the person merging is an approver for every kind the change touches (policy_roles). Raise require_approvals to 1 or more for a second pair of eyes.
  6. Connections. Prefer per-agent identities (Slack bots, machine accounts) and read-only tokens; mark writing tools as approval-required in grants. Give temporary grants an expires date, and keep access_review.every: 90d (the company profile's default) so each agent's owner confirms its grants every quarter; export completed reviews for your auditor (Expiring grants and access reviews).
  7. Audit. The ledger is hash-chained and anchored hourly in the policy repo, by an account that can't change policy (officectl verify check 8 proves it). Stream it to your SIEM with ledger.export.url, or export it with officectl ledger export (Audit and the ledger).
  8. Change management. Pin an exact version in the office repo and upgrade by pull request; the Changelog lists Breaking, Migrations, Upgrade notes and Security for every release. Run officectl doctor, officectl verify --live and officectl smoke after each upgrade.
  9. Start agents at draft. officectl init --profile company sets autonomy.default: draft in office.yaml: every write an agent makes (a Slack post, an email, a PR, a published artifact) waits for a person to approve or edit it. Agents earn act one kind of action at a time: once a track record meets the bar, the office opens a policy PR raising it, and a hiring approver merges it. A rejected draft streak or a flagged act lowers it again at once (Graduated autonomy). Existing offices can add the same line.
  10. Outside content. Agents that read mail, Slack or tickets from outside can be asked to do things by whoever wrote them. Set run.untrusted_writes: approve on those agents, so their writes in such runs wait for a person.
  11. Changes to agents. Give important agents evals: a policy PR that changes their charter or model shows whether they got better or worse before anyone merges it. Mark routines verify: true to grade everyday runs.
  12. If something goes wrong. Stop now on an agent's desk, or Settings → Emergency stop for the whole office, works at once, without a pull request, and is on the record.

The first week of a company pilot#

  1. Install on a dedicated VM; run officectl doctor and officectl verify until both pass.
  2. Connect SSO with require_group; invite the pilot group; turn local passwords off.
  3. Apply one starter kit by PR, with per-agent API keys and small budgets.
  4. Once the hires are merged, run officectl smoke (Smoke test): a few cents of real runs that prove, on this host with your real key, that a chat run goes through the model proxy, a webhook starts an event run, and a handoff to a colleague comes back. Give one agent a named webhook (run.on) and a colleague it may delegate to, so no step is skipped. Check the approval wake-up by hand once, as the smoke's note describes.
  5. Add one connection with read-only scopes; set run.untrusted_writes: approve on agents that read outside content. With the company profile, agents' writes start as drafts on Needs you; approve, edit or reject them so each agent builds a track record.
  6. Point ledger.export.url at your SIEM, set backup.dir on another disk, and store secrets.key apart.
  7. Run officectl halt and officectl resume once, so the team knows the emergency stop works.
  8. After a week: run officectl smoke again (it shows the runs still work after a week of real use), read Insights (its Autonomy panel shows each agent's drafts approved as-is), the agents' feedback and verifier pass rates, then decide what to widen: merge the promotion PRs the office opened for the kinds of action agents have earned.

Not there yet for companies#

NeedState
A licence and a security contactAsk the vendor

The Roadmap has the full list.