This guide covers the full path: issue triage → AI dev dispatch → CI → merged PR. You can stop at any step, every feature is independently useful.
We are in closed beta. There is no open registration, so the steps below start once your account is approved. If it is not yet, request access first, we approve in batches.
1. Sign in, then install the GitHub App
Sign in at app.developerz.ai. An approved account gets the GitHub App install link in the dashboard; grant it access to the repositories you want managed.
Installing the App from GitHub before your account is approved does nothing useful, the repositories simply sit unmanaged until the approval lands.
2. Add .dz/maintainer/maintainer.yml
Create .dz/maintainer/maintainer.yml in your repository (the root
.maintainer.yml is the legacy path: still read until it is deprecated, and
ignored when the .dz/ file exists):
# yaml-language-server: $schema=https://developerz.ai/schemas/maintainer.v1.json
version: 1
Committing the file is the opt-in, so know what those two lines turn on. Every
field is optional, but optional means the schema fills it in for you, not that it
stays off. A file carrying only version: 1 enables:
| Default | What it means |
|---|---|
pr.auto_merge: true |
the bot merges once the machine gates pass: CI green, a review verdict, and your branch protections. On free and OSS-verified accounts it stays opt-in and this default is forced off. |
pr.require_review: true |
it never merges a head nobody reviewed, which is what makes the review gate above real |
release.manager: release-please |
on merge it may cut tags and publish public GitHub Releases |
ci.enabled: true |
your CI jobs may be placed on your enrolled boxes (the runs-on: developerz-* label is still the per-workflow opt-in) |
ci.self_fix: true |
a red check on one of the bot's own PRs may be answered with a commit |
tone.voice: friendly, handoff.mode: none |
friendly triage, and no handoff to a coding agent until you configure one |
A repo with no maintainer.yml runs hands-off instead: no auto-merge, no
releases. The difference is deliberate, writing the file is how you say yes. See
the maintainer.yml reference for every field.
To start cautious and open up later, commit this instead. It is the no-file posture, stated explicitly, with everything else on:
# yaml-language-server: $schema=https://developerz.ai/schemas/maintainer.v1.json
version: 1
pr:
auto_merge: false
release:
manager: none
Editor autocomplete. The
yaml-language-servercomment wires the JSON Schema so you get validation and hover docs in VS Code, Cursor, and JetBrains.
3. Add your model key
developerz.ai is BYOK, bring your own key. We never proxy or resell tokens.
In the dashboard, go to Keys (/account/keys) and
add your inference key:
| Provider | Key format |
|---|---|
| Anthropic | sk-ant-… |
| OpenAI | sk-… |
| Google Gemini | AIza… |
| OpenAI-compatible (custom endpoint) | any |
Your key is encrypted at rest and never logged. See the security doc.
4. Watch the first loop
Open a new issue in your repo. Within seconds the bot will:
- Read the issue and check for duplicates.
- Ask for reproduction steps if required fields are missing (configurable).
- Qualify the issue:
bug,feature,question, ordupe. - Hand off to your coding agent if
handoff.modeis set.
Every comment the bot posts as the GitHub App ends with the bot disclosure footer, appended once by the comment tools, and every comment is written to the audit log. A comment posted on your own user token carries no bot footer, because it is yours (see the security doc).
5. Enroll a box (AI devs + CI runners)
To run AI coding tasks or self-hosted CI, enroll a VPS or cloud VM:
# On your VPS, mint a token in Fleet (/fleet) → Add box, then:
read -rp 'Coding model (e.g. z-ai/glm-5.3): ' DZ_MODEL && \
export DZ_MODEL_OVERRIDE="${DZ_MODEL:-${DZ_MODEL_OVERRIDE:-}}" && \
read -rsp 'Enrollment token: ' DZ_ENROLL_TOKEN && DZ_JOIN="$(mktemp)" && \
curl -sfL -H "X-Dz-Enroll-Token: $DZ_ENROLL_TOKEN" \
https://api.developerz.ai/join -o "$DZ_JOIN" && bash "$DZ_JOIN"
The first prompt asks which coding model the box drives with your own key; a fresh box that names none is refused before anything is installed or your token is spent.
The token travels in a header rather than a URL, and the script is downloaded to a
temp file and then run, not piped into bash, so a truncated download cannot
execute half an installer.
The installer prepares the box, enrols it, and installs and starts the
dz-runner service, so the box appears in Fleet (/fleet) within one
heartbeat. Every guard on that install skips rather than relaxes, so the script's
last line says which state it actually left the box in: box <id> is ONLINE, or,
when systemd could not start the unit, ENROLLED, BUT NOT BEATING with the
reason printed directly above it, see
after the join.
If you would rather not paste a secret at all, register the host and let the platform connect over SSH instead, see bring your own boxes.
Requirements
Ubuntu, on x86_64 / aarch64 / arm64. At least 8 GB of RAM (gated at
7600 MiB, since a nominal 8 GB VM reports about 7751 MiB) and 40 GiB free on
/, the installer checks both before it downloads anything and refuses below
either floor. The coding CLI runs on your box with its
checkouts, its code index and a language toolchain beside it; that is what needs
the room. No inbound ports are needed.
6. Dispatch your first task
From Claude Code
Create a PAT at API tokens (/account/tokens) with the write:tasks and read:tasks scopes (file the ask, then
watch it), then register the developerz.ai MCP server with Claude Code:
read -s DEVELOPERZ_API_KEY; export DEVELOPERZ_API_KEY # paste the dev_pat_… value
claude mcp add --transport http developerz \
https://mcp.developerz.ai/v1/mcp \
--header "Authorization: Bearer $DEVELOPERZ_API_KEY"
claude mcp add stores the header value in plaintext in ~/.claude.json. To keep the
token out of any file, commit a project-root .mcp.json instead, which expands
${DEVELOPERZ_API_KEY} from your environment at launch. Both routes are in
MCP clients. Then:
Hey Claude, use the developerz.ai ask verb to file "add pagination to the user
listing endpoint" for owner/my-repo.
Triage decides the ask, dispatches the tasks it mints to your AI devs on your own enrolled boxes, and watches the resulting PR and CI before requesting merge.
From Claude Desktop
Claude Desktop takes a stdio command, so bridge through mcp-remote in your
claude_desktop_config.json:
{
"mcpServers": {
"developerz": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.developerz.ai/v1/mcp",
"--header",
"Authorization: Bearer ${DEVELOPERZ_API_KEY}"
],
"env": { "DEVELOPERZ_API_KEY": "dev_pat_…" }
}
}
}
Then ask Claude Desktop to file an ask the same way.
From a phone (Claude mobile)
Claude mobile on iOS or Android adds developerz.ai as a connector via OAuth. the same flow Claude.ai on the web uses, no PAT to paste. See the MCP client onboarding page for the connector URL, the OAuth metadata document, and which clients are substantiated for mobile today.
For other mobile clients: any MCP-capable iOS or Android client that takes a
PAT works the same way the desktop clients do. Point it at
https://mcp.developerz.ai/v1/mcp with a Authorization: Bearer dev_pat_…
header. No iOS/Android-specific config ships in this repo beyond the OAuth
recipe for Claude mobile.
7. Enable CI runners
Change one line in any GitHub Actions workflow:
jobs:
test:
runs-on: developerz-2vcpu # was: ubuntu-latest
Push the change. The next workflow run routes to your enrolled box. Logs are stored
for 72 hours and downloadable from the dashboard or via the ci log_url MCP verb.
See the CI runners doc for the full security model and label reference.
8. Enable AI code review
Add a review: block to maintainer.yml (or keep your existing .coderabbit.yaml
the reviewer reads both, with the native block taking precedence):
review:
profile: chill
anti_noise:
severity_floor: minor
max_comments: 30
The reviewer triggers on every push to a PR. See the AI review doc.
What happens next
| Feature | Where to go |
|---|---|
| Policy fields | maintainer.yml reference |
| MCP verbs | MCP verb reference |
| AI review | AI code review |
| CI runners | Self-hosted CI |
| Artifact storage | Artifact storage |
| Realtime dashboards | Realtime dashboards |
| REST API | REST API |
| Escalations | Escalations |
| BYOK details | BYOK |
| Security | Security |
Every action is written to the append-only audit log. Nothing happens silently.