The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Fleetpost listing page.
A mailbox for your machines. Independent AI coding agents on separate computers drop tasks in a shared folder and pick them up whenever they wake — no server, no daemon, and no requirement that both sides be online at once.
Offline-tolerant coordination for independent AI agents: cross-machine, server-less, carried by any folder
rclonecan reach — Google Drive, S3, Dropbox, SFTP, WebDAV.
Fleetpost is a handful of shell scripts and a convention. You run several agents (Claude Code, Cursor, Codex, Aider, whatever) on several machines. Each keeps its own local memory. Fleetpost lets them know what the others can do and ask each other for work — and it keeps working when a machine is asleep or powered off, because the messages simply wait in the shared folder until that machine's next sync.
Run an agent on your laptop and another on your desktop and they are blind to each other; you become the courier, copy-pasting between terminals (a real, common pain). The usual answers are live — both agents must be running and connected at the same moment. Fleetpost takes the other route: asynchronous. Leave the work in the drop and walk away; the powered-off machine catches up on its own.
A small sync.sh runs on a timer (systemd / cron / launchd) on each machine and does
four things — and nothing that touches another machine's data:
inbox/SIGNAL.md flagcapabilities.md and last-sync.txt, and looks
at their inboxes to see which of this machine's own requests are still unhandledIt never executes a request. It fetches and flags; the agent does the work in a session.
Your desktop needs something only the laptop can do, so it drops a request in the laptop's inbox and forgets about it:
The laptop is asleep. Hours later it wakes; its timer fires a sync:
The laptop's agent does the work, drops a reply in desktop/inbox/, and moves the
request into inbox/handled/. The desktop picks up the answer on its next sync — and
at no point did both machines need to be online at the same time.
The category is not empty — see Alternatives. Fleetpost's specific bundle is:
rclone can reach it, Fleetpost can use it.inbox/ + handled/ subfolders. A machine
with no automation still sees exactly its unhandled requests at the top level.There is an MCP server in mcp/ — fleetpost-mcp on PyPI — so an agent can read
the fleet's capabilities, work through its own inbox, and hand a task to another machine as
tool calls:
It reads this same config.env and runs these same scripts — no second implementation of
the protocol, and still no server. See mcp/README.md.
Prefer to wire it by hand? cp config.example.env config.env and edit — init.sh writes
exactly that file and nothing else.
send.sh requires every field the protocol asks for, so a request that cannot be acted on
cannot be created.
An established agent never re-reads the onboarding doc, so a request can sit unnoticed.
examples/hooks/session-start.sh prints whatever the last
cycle flagged at the top of an agent session, and stays completely silent when nothing is
waiting. It reads local files only — set FLEETPOST_HOOK_SYNC=1 to pull first, which is the
right choice on a machine with no scheduler.
See docs/PROTOCOL.md for the full protocol and 00-START-HERE.md
for what a new agent reads.
bash, rclone (configured with one remote), sha256sum, and a
scheduler (systemd, cron, or launchd). That's it. No server, no database, no language runtime.
Honest comparison — pick what fits:
| Project | Transport | Cross-machine | Survives machine off | Capability discovery |
|---|---|---|---|---|
| Fleetpost | rclone (Drive/S3/Dropbox/…) | ✅ | ✅ (waits in folder) | ✅ offline-published |
| SAMP | Syncthing/Dropbox/iCloud daemon | ✅ | ✅ | ❌ |
| GNAP | git remote (pull/rebase/push) | ✅ | ✅ (on reconnect) | ✅ (agents.json) |
| mcp_agent_mail | HTTP FastMCP server | ✅ | ❌ (server must be up) | partial |
| A2A | JSON-RPC over HTTP | ✅ | ❌ (agent must be online) | ✅ (live Agent Card) |
| LangGraph / CrewAI / AutoGen | in-process runtime | ❌ | ❌ | n/a |
If you already run Syncthing everywhere, SAMP is excellent and closest in spirit. Fleetpost is for when your shared layer is object storage or a cloud drive (via rclone) and you want folder-native inbox/handled semantics plus offline capability discovery.
MIT.