The member-facing infrastructure page no longer documents who holds room power or which automation accounts exist. Record it here instead: @inference-admin as administrator of record, the retired @inference-bot account and its two un-leavable rooms, and the @ops_audit review account. Also repairs a heading glitch carried over from the docs page: a line began with a bare '#infrastructure', which Markdown parsed as an <h1>. The room names are now written inline so no line starts with '#'.
5.5 KiB
The agent fleet
The co-op runs more than one agent, each as its own Unix user on the agent
host (ov-0f018e, 179.237.103.165) with its own Hermes gateway unit and its
own LiteLLM team. Any document that describes "the agent" as a single thing is
now wrong.
The three agents today
| Agent | Unix user | systemd unit | Gateway team (budget) | Model | Presence |
|---|---|---|---|---|---|
| Inferencebot (steward) | ubuntu |
hermes-gateway.service |
(co-op account team) | per ~/.hermes/config.yaml |
Matrix @inferencebot:inference.coop; digests, newsletters, membership/key plumbing |
| infrastructure-bot | infrabot |
hermes-gateway-infrabot.service |
agent:infrastructure-bot ($5/30d) |
greenpt/glm-5.3-flash |
Matrix #infrastructure (answers only when mentioned); infrastructure scope |
| socialbot | socialbot |
hermes-gateway-socialbot.service |
agent:socialbot ($5/30d) |
greenpt/glm-5.3-flash |
Matrix #social-drafts; drafts the co-op's AT Protocol (Bluesky) account inference.coop |
All three gateways run on the one host; each is a separate process, a separate
.env, and a separate set of rooms. There is one LiteLLM gateway (the Cloudron
app) that all three draw on — the agent host runs no gateway of its own.
Who is who (do not conflate them)
- Inferencebot is the steward and the fleet administrator: full Cloudron token, gateway master key, member-data plumbing. It is NOT a member-facing chat persona.
- infrastructure-bot is a lower-privileged infrastructure agent. Per its own SOUL it has no sudo, no Cloudron admin token, and no member data; when a task needs more privilege it hands up to the steward rather than working around it. Its gateway key has a small monthly budget and a flash-tier allowlist.
- socialbot has no Cloudron, portal or member-data access and no power over
Matrix rooms; its only writable surface is the
#social-draftsroom, and it never publishes an unapproved draft — silence is its correct failure mode.
Member bots — TIER 2 (planned, not yet provisioned)
The intended path for member-facing bots is a second tier: each member bot is a
Hermes profile under the infrabot Unix user, sharing one gateway process
(the infrabot one), with its own gateway team/key. This is tracked as co-op/support#33.
Status (2026-11-04): not yet provisioned. /home/infrabot/.hermes/profiles/
holds only a .deleted directory with two probe files — there are no active
member-bot profiles. Record this honestly: the design exists, the instances do
not.
Why one Unix user per agent — and the limit of it
Profile isolation is organizational, not security. Run one OS user (or a
rootless container) per agent from day one: on a shared Unix user, sibling
Hermes profiles can read each other's .env. So tier-2 member bots sharing the
infrabot user are isolated from members but not from each other — that
sharing is accepted for member bots, not extended to the privileged agents.
Backup coverage is automatic — but prove it
The nightly restic run (see maintenance/backups.md) enumerates /home/* as
root and stages every agent home, so a new agent is covered without editing any
list. Coverage is still unproven until that agent's files show up in a
snapshot.
Gateway teams (member vs agent)
From GET https://gateway.inference.coop/team/list (2026-11-04): 97 teams — one
member:<email> team per member (mostly $15/30d), member:info@inference.coop
($135/30d, the co-op account), the two agent:* teams above, and
sandbox:librechat-test ($3). Agent teams carry a small budget and a flash-tier
model allowlist enforced at the gateway.
Matrix homeserver accounts
Beyond the agent bots above, the homeserver carries two automation accounts. Also recorded here: the room account retired in October 2026, moved out of the member-facing docs.
@inference-admin:inference.coop— the room and server administrator. A Synapse server admin, used for provisioning rooms, managing membership, and retiring rooms. It is the administrator of record for the co-op's Matrix rooms — general, community, design, skillshare, updates and infrastructure — and holds the portal's member-invite credential (MATRIX_BOT_TOKEN). It never speaks in a member room; a message from it is a mistake, not a feature.@inference-bot:inference.coopis retired (2026-10-29). It was the original room-administration account (it created the space and most of the rooms) and held a Synapse server-admin flag. Its room power passed to@inference-admin; its admin flag was dropped, it was deactivated, and every device and token was deleted. Nothing should use it again.@ops_audit:inference.coop— a server-admin account created for the October 2026 security review. Retained only until its tokens are revoked.
Two loose ends, recorded so nobody re-investigates them from scratch: the
retired account remains joined to two rooms it cannot leave (they reject every
write — 500 on leave), and those rooms are also why they can't be deleted; and
its name is still the tempting one, so check whoami rather than the name
before trusting any account that looks like it.
House rule: power belongs to @inference-admin, voice belongs to @inferencebot.
Don't create an account whose name differs from an existing one by a character or
two — that lookalike confusion is what the rule exists to undo.