Run multiple AI agents from different providers in parallel on the same codebase without them overwriting each other's file edits.
Store multi-step AI task progress in SQLite so an agent resumes exactly where it stopped after a crash or restart.
Use heartbeat-based lease expiry to automatically reassign a stuck task node to another agent without manual intervention.
Build a custom AI agent in any language that coordinates with agentd via Unix socket JSON without needing a special SDK.
Requires Rust and Cargo to build from source, or download a prebuilt binary, agents communicate via a Unix domain socket.
agentd is a background daemon written in Rust that acts as a coordination layer for AI agents running on your local machine. The core problem it solves is that AI agents, especially ones handling long-running tasks with many steps, need somewhere outside themselves to store what they have done and what still needs to happen. If the agent crashes or is restarted, that state would otherwise be lost. agentd handles this by running as a separate process and storing all task state in a SQLite database on disk. The daemon organizes work as a directed acyclic graph (DAG), which is a way of describing a set of tasks where some must finish before others can start. Each node in that graph goes through strict states: pending, running, completed, or failed. When an agent wants to work on the next available step, it asks the daemon for a lease. The agent must send periodic heartbeats to keep that lease active. If the agent goes silent for too long (the default is 300 seconds), the daemon marks the node as failed and returns it to pending so another agent can try it. A second major feature is resource locking. When multiple AI agents from different providers or tools might try to edit the same file at the same time, agentd gives each agent a way to claim an exclusive lock on that file before touching it. If another agent already holds the lock, the newcomer gets a null response and knows not to proceed. The README includes detailed examples showing two agents from different providers competing to edit the same file and how the coordination works. Locks also expire, so a stalled agent cannot block others forever. Communication with the daemon happens through a Unix socket using a simple line-by-line JSON format, meaning any language or tool that can write to a socket can use it without a special library. The daemon also keeps an append-only event journal, which gives a historical record of what happened during a task. The project is built with Rust and can be compiled from source using Cargo or downloaded as a prebuilt binary.
← guozijn on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.