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

FlagDescription
--localUse the local FS queue under ~/.aide/dispatch/<agent>/ instead of GitHub
--dry-runPrint 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.