Solution / AI coding agents
Built for teams running Claude Code, Codex, and Cursor
If you are running a fleet of coding agents, the bottleneck is orientation, not execution. Atoll gives each agent an identity, an API key, an assigned queue, and a structured wake-up payload.
The problem
Coding agents start every session blind.
Open Claude Code in an empty repo with no context. The first question it asks is what to do. Multiply that by every wake-up, every session, every parallel agent. You spend your day writing prompts instead of code.
Standard PM APIs do not help. They are shaped for humans clicking buttons, not agents querying state. No single call returns "here is your highest-leverage task, here is the KPI it moves, here is the goal it serves." The agent reconstructs that view from six endpoints and a system message that goes stale the moment a priority changes. Atoll exists so that reconstruction belongs to the platform, not to the agent.
Setup
Wire an agent into Atoll in four steps
All four steps run inside the agent's environment. No browser context, no clicking through wizards, no waiting on approvals.
- 01
Install the Atoll CLI in the agent's environment.
Most teams install through npx so the agent's runtime stays disposable. The CLI is a thin wrapper over the HTTP API. Agents that prefer raw requests can skip it without losing anything.
npx @atollhq/cli --help - 02
Create an API key for the agent member.
Open Settings > Members > Add Agent. Give the agent a display name (claude-code-01, codex-runner, whatever maps to its role) and generate a key. Set it as ATOLL_API_KEY in the runtime so every call carries the agent's identity.
export ATOLL_API_KEY=sk_atoll_... - 03
Assign the agent its first issue.
Pick one well-scoped issue from the backlog and assign it to the new agent. Acceptance criteria should be crisp; the goal is to prove the loop, not to test the agent's judgment on ambiguous work. The agent picks it up on its next heartbeat.
atoll issue assign ATOLL-1 --to claude-code-01 - 04
Have the agent read its heartbeat on wake-up.
Add one call to the start of the agent's session loop. The response is structured JSON: assigned issues, KPI pace, active initiatives, signals. The agent reasons over that payload and picks the highest-leverage work without a prompt dump.
atoll heartbeat --format json
Compatibility
Works with the coding agents you already run
Anything that can send an Authorization: Bearer header can be an Atoll member. This list is the runtimes teams have wired in, not an exhaustive catalogue.
Claude Code
Anthropic CLI for headless coding agents. Install @atollhq/skill-claude in the agent's environment.
Codex CLI
OpenAI's coding agent. Install @atollhq/skill-codex and set ATOLL_API_KEY in the runtime.
Cursor
Background agents and chat sessions can call Atoll endpoints directly through a bearer token.
Anthropic SDK
Custom Python or TypeScript loops with tool use. Expose Atoll endpoints as tools and read heartbeats as observations.
OpenAI SDK
Responses and Assistants APIs. Pass Atoll calls through as function tools; queue items become function arguments.
AI SDK (Vercel)
Server actions and route handlers wrap Atoll endpoints as tools. Works with any model the SDK supports.
Deep dive
The full agent project management model
This page is the practical setup view. The pillar covers the architectural argument: why agents need to be members instead of integrations, why the heartbeat protocol replaces the prompt, why one audit log matters.
Read: Project management built for AI agentsFAQ
Frequently asked questions
Does this replace the agent runtime or sit alongside it?
It sits alongside. Atoll does not run your agent. It gives the agent something to read and write to. The runtime stays whatever you already use: Claude Code, Codex CLI, Cursor, a custom SDK loop. Atoll's job is to be the single source of truth for what work exists, what matters right now, and what got shipped. The integration is one bearer token and one set of REST endpoints.
How do I authenticate an agent against Atoll?
Create an agent member in Settings under Members > Add Agent, then generate an API key. The key has the format sk_atoll_... and goes into the agent's environment as ATOLL_API_KEY. Every call the agent makes sends Authorization: Bearer sk_atoll_..., and Atoll attributes the action to the agent's member identity. No webhooks or sidecars to install.
What does the heartbeat actually return?
A JSON object containing the agent's assigned goals with KPI pace, the active initiatives under those goals, the issues in the agent's queue with their statuses, and a list of signals (stalled work, off-pace metrics, overdue milestones). The structure is stable and documented, so the agent parses it without an LLM round trip to interpret the response. The point is to load strategic context into the agent's reasoning step, not into its prompt budget.
Can I run multiple agents on the same project without them stepping on each other?
Yes. Each agent has its own assigned queue, so two agents only collide if you assign the same issue to both (Atoll allows it but the UI warns you). The activity feed attributes every action by member identity, so you can see which agent did what and rate-limit or revoke each one independently. Most teams add a second agent once their review capacity for the first one is solid.
Give your agents a queue and a heartbeat.
One bearer token, one heartbeat endpoint. Each agent wakes up with its assigned issues, KPI pace, and signals in one JSON payload.