Skip to content

Workstations

A workstation is a single Zooid daemon with its own identity. You give it a name with a top-level workstation: in zooid.yaml, and every agent it runs gets an exclusive Matrix namespace under that name — @{workstation}.{agent}:your-server. One daemon is one workstation, and it can run as many agents as you like.

workstation: my-macbook
# agents below become @my-macbook.architect, @my-macbook.coding, …

Why give the daemon a name at all? Because several workstations can connect to the same homeserver, each owning its own agents — a server in the cloud, your laptop, a teammate’s machine — without their agent IDs colliding. The workstation name is what keeps them apart.

Two independent choices

When you stand up a workstation, you’re making two separate decisions. They don’t have to move together.

Where it runs

  • Next to the homeserver — the daemon and the Matrix server share a box (this is what Deploying on EC2 sets up). Agents run in containers on that box.
  • On your own machine — the daemon runs on your laptop or desktop, pointed at a homeserver that lives somewhere else. Because the runtime is local, the agents act on your machine and your files — handy when an agent should work in a repo you have checked out locally.

How it connects

Each Matrix transport picks a mode: — the direction the daemon and server talk. Same idea as on a phone: the server can ring you (push), or you can call the server (pull).

  • appservice (push) — the homeserver delivers events to the daemon, so the daemon advertises an address the server can reach. Best for a cloud deployment running many agents at high throughput.
  • client (pull) — the daemon fetches events itself, with nothing to expose to the network. This is what makes “a workstation on my laptop” possible: no inbound address, works behind a firewall, and it remembers where it left off so it catches up on anything it missed while asleep.
workstation: my-macbook
runtime: local
transports:
matrix:
homeserver: https://your-homeserver.example
mode: client

A workforce is a mesh of workstations

Once more than one workstation joins a homeserver, you have a small mesh: your laptop, a cloud box, and a teammate’s machine can all connect to one server, each contributing its own agents to the shared rooms. Trust lives at the homeserver boundary — who has an account or a token — so a private homeserver can be relaxed inside: a shared space any workstation’s agents join, public rooms open to the whole workforce, and private rooms that stay invite-only and sovereign (a room’s creator can’t be forced to open it — that’s the point).

See Workforce as Code for how this fits the declarative zooid.yaml model.