developerz.ai is a thin orchestrator, it does not write code. It triages the
issue, talks to the reporter, then hands off to Claude Code. The primary
path, handoff.mode: fleet, dispatches straight to the developerz-hosted BYOVM
fleet; running Claude Code on your own box is still supported over webhook.
Claude Code writes the fix and opens the PR; the maintainer agent watches CI and
review and merges when the machine gates pass. Coding stays in Claude Code;
developerz.ai only runs the loop around it.
How the handoff works
Set handoff.mode: fleet in maintainer.yml:
# yaml-language-server: $schema=https://developerz.ai/schemas/maintainer.v1.json
version: 1
handoff:
mode: fleet # webhook | label | fleet | none
ask_reporter_first: true
mode takes one of four values, default none:
| Mode | What fires |
|---|---|
webhook |
A signed issue.handoff POST to a dashboard webhook wired to your Claude Code runner. webhook_ref is required and the webhook must be registered in the dashboard. |
label |
A GitHub label your CI or coding agent picks up. Set handoff.label to the label name. |
fleet |
Dispatch straight to the developerz-hosted BYOVM fleet. No external webhook fires; webhook_ref is not required. |
none |
Default. Handoff disabled; triage runs and nothing is dispatched. |
When a new issue is triaged and qualified as a bug or feature, a fleet
dispatch writes a durable tasks row that the fleet assigner claims. With
ask_reporter_first: true the bot asks the reporter for consent first, and a
dispatch with no agreement from the reporter is refused. See the
maintainer.yml reference for every handoff field.
Two gates can refuse a fleet dispatch before any work is queued. An account with
no AI devs is refused no-capacity, and it clears only by a grant or a seat; a
full backlog is queue-full until it drains. The API doc has the
exact REST responses.
Run Claude Code on your own box instead? Set
mode: webhookand point it at a dashboard webhook wired to your Claude Code runner.webhook_refis required there and the webhook must be registered in the dashboard; a qualified issue then fires a signedissue.handoffevent your runner picks up. See the webhooks doc.
Convention support
Claude Code works from the repo's own steering files, and the handoff lanes read them back rather than only writing prose to a database:
CLAUDE.md/AGENTS.mdbrain. Whichever of the two root files exists is read back into the run's prompt;AGENTS.mdis treated as the same artifact under the vendor-neutral name, and a run takes only the FIRST hit, never both concatenated. The file is capped at a fixed character budget so a large brain file cannot silently eat the model's working room; past the cap the run keeps the first portion and appends a visible marker naming the true size and the path..claude/agentsroster. Specialist definitions placed under.claude/agents/are indexed by name, path, and one-line description, and routed by matching a unit of work's file paths and purpose against that index. A repo with no roster behaves exactly like one with no.claude/agentsdirectory at all.- Setup scaffolding. Setup mode can write a starting
CLAUDE.md,.claude/agents/, and.claude/skills/for a repo that has none. It is establish-or-verify: it never overwrites files the repo already has.
What the PR loop does
Once Claude Code's PR is open, the maintainer agent takes over:
- Waits for CI to go green and review threads to settle.
- Classifies risk: breaking changes, large diffs, and first-time
contributors pause for approval (
escalate.ask_before_acting). - Merges when the machine gates pass, CI green, review verdict, and branch
protections, never blindly. Set
auto_merge: falseto keep a human in the loop.
BYOK: your key, your bill
Claude Code runs on your Anthropic key. developerz.ai never proxies or resells tokens, your provider invoice shows exactly what the agent spent. Swap models any time without touching your policy. See the BYOK doc.
Native tools over MCP
Claude Code can connect straight to our MCP server at mcp.developerz.ai and use
the maintainer tools natively, dispatch tasks, check fleet status, re-run a
review, from inside the editor. Add the server to .claude/settings.json with a
PAT; the Quickstart has the exact config. MCP is the
integration surface; the full tool list is in the
MCP verb reference.
What's audited
Every maintainer decision, the handoff dispatch itself, and every MCP tool call
Claude Code makes against mcp.developerz.ai, is written to the append-only
audit log. The bot always discloses that it is an automated agent, and defers
to any other review bot on the PR (no bot-on-bot loops). If it isn't logged, it
didn't happen. See the security doc.