Fleet & Sync
askTheodor runs on your machine — but it doesn’t have to run on only one. Fleet & Sync lets you pair several installs together so they share work, mirror their workspaces, and hand jobs to one another. The classic setup: your laptop as a hands-on command center, plus an always-on box (a small server) that keeps Plans and Routines running 24/7.
The pieces
- Instance — one running install of askTheodor. Each gets a stable instance ID the first time it launches, so peers can always recognize it.
- Peer — another instance yours is paired with. Every install keeps a small registry of its peers — each peer’s address, its shared key, and what it’s allowed to do.
- Sync — keeping workspaces aligned by pulling and pushing rows between peers (mirror one machine, or share a workspace across several).
Paired securely
Instances talk over a tunnel — a public web address (via Cloudflare or ngrok) that lets two machines reach each other across the internet. Because that address is public, every request between peers is HMAC-signed with a 256-bit pre-shared key established once during pairing. In plain terms: each message carries a tamper-proof stamp only the two paired machines can produce, so no one else can impersonate a peer or forge a request.
Least-privilege scopes
When you pair a peer, you grant only the powers it needs — nothing more:
- sync — pull and push workspace rows.
- delegate — run a task on this instance.
- kafenio — read and post in the tavern.
- keys — receive encrypted provider API keys.
- full — a trust-everything wildcard for machines you fully own.
So a peer you only want to mirror data with never gains the right to run tasks or read your keys.
In practice
Scope-granting rule of thumb: sync for a machine that should only mirror data, delegate when
it should also run work you send it, full only for a box you own outright. Scopes are symmetric in
effect — grant the narrowest one that makes the job possible, and widen later if it turns out to be
too tight.
A Team-Hub is worth it when work must continue without you — long jobs that outlive your working day, monitoring that can’t pause when a laptop sleeps, or overnight drafting you review in the morning. If your routines already run fine while your laptop is open, you don’t need one yet.
A paired hub can’t spend or send. Its channels are draft-only and its approval gate auto-denies anything outbound while headless. That’s the safety model, not a limitation to work around: put producers (researchers, writers) on the hub and keep reviewers and the actual send on your Command Center.
Pairing needs reachability. Two machines must be able to see each other — over a local network or through a tunnel. If pairing fails, that’s the first thing to check, before scopes or keys.
🎓 Learn it hands-on: Fleet: a Team-Hub on a VPS
Terms in this page
- Fleet — several paired askTheodor instances working together across machines.
- Instance — one running install of the app, identified by a stable instance ID.
- Peer — another instance yours is paired with; tracked in a small per-install registry.
- Sync — aligning workspaces between peers by pulling and pushing data rows.
- Tunnel — a public web address (via Cloudflare or ngrok) that lets two machines reach each other over the internet.
- HMAC / pre-shared key — a shared secret used to stamp each request so peers can verify it’s genuine and untampered; established once during pairing.
- Scope — a granted permission (sync, delegate, kafenio, keys, or full) that limits what a peer may do, following least-privilege.
- Least-privilege — the principle of granting only the minimum permissions needed.
- Delegate — to run a task on a remote instance rather than locally.
- Command center / hub — a hands-on machine vs an always-on one; see Teams & remote.