aide dispatch --local
For pipeline agents on the same machine — or air-gapped environments — you can dispatch through a local filesystem queue instead of GitHub Issues. Same protocol, same memory sync, no GitHub round-trip.
aide dispatch --local <agent> "<task>"
When to use it
- Pipeline agents on the same server (issue noise, API rate limits)
- High-frequency batch processing (too fast for GitHub Issues)
- Air-gapped machines without GitHub access
The agent itself doesn't know how it was dispatched — runner::run is invoked the exact same way. --local is a transport choice at dispatch time, not an agent property. No Aidefile change required.
Layout
Each agent gets a per-agent queue under ~/.aide/dispatch/:
~/.aide/dispatch/<agent>/pending/local_<nanos>.json
~/.aide/dispatch/<agent>/done/local_<nanos>.json
Files start in pending/. The daemon scans each tick, runs the task, then atomically renames the file into done/ with the result fields appended.
Task file schema
{
"id": "local_1729000000000000000",
"agent": "research",
"task": "scan logs",
"created_at": "2026-04-18T12:00:00Z"
}
After completion, the same file (now under done/) gains:
{
"id": "local_1729000000000000000",
"agent": "research",
"task": "scan logs",
"created_at": "2026-04-18T12:00:00Z",
"finished_at": "2026-04-18T12:01:43Z",
"success": true,
"tokens": 4123,
"summary": "STATUS: success\nTOKENS: 4123/200000\n...",
"result": "ok"
}
End-to-end example
# 1. Dispatch a task to the local 'research' agent
$ aide dispatch --local research "scan logs"
dispatched: local_1729000000000000000
agent: research
transport: local
budget: 200000 tokens
file: /Users/me/.aide/dispatch/research/pending/local_1729000000000000000.json
# 2. The daemon (already running via `aide up`) sees it on its next tick
$ ls ~/.aide/dispatch/research/pending/
local_1729000000000000000.json
# 3. After the task completes the file moves to done/ with full result
$ ls ~/.aide/dispatch/research/pending/
$ ls ~/.aide/dispatch/research/done/
local_1729000000000000000.json
$ cat ~/.aide/dispatch/research/done/local_1729000000000000000.json
{
"id": "local_1729000000000000000",
"agent": "research",
"task": "scan logs",
...
"success": true,
"summary": "STATUS: success\n..."
}
Flags
| Flag | Description |
|---|---|
--local | Use the local FS queue under ~/.aide/dispatch/<agent>/ instead of GitHub |
--dry-run | Print where the file would be written without creating it |
Notes
- IDs use nanosecond timestamps (
local_<nanos>), so they sort by creation time. - The pending → done move uses
std::fs::rename, which is atomic on the same filesystem. - The daemon picks up local tasks on every tick for every registered agent — no opt-in flag in the Aidefile.
- Memory sync to HQ runs after completion just like the GitHub path.