Skip to content

Overview

Coordinate coding agents via events.

Quick start

What Aiur is

Aiur turns tracker work into isolated implementation runs.

StageAiur does
SelectWatches labelled tracker tickets.
RunStarts one isolated agent run per dispatched ticket.
ProveSurfaces CI, review feedback, complexity, and walkthrough evidence.
FinishReturns an accepted PR for human-controlled landing.

Tracker-driven

Choose a tracker with tracker.kind.

tracker.kindSource
linearLinear board.
githubGitHub issues.
memoryIn-memory tracker.

On trackers that support labels, Aiur runs a label-based state machine.

The label lifecycle

LabelMeaning
agent:todoQueued work.
agent:in-progressIsolated run active.
agent:ci-waitCode complete; waiting for terminal CI.
agent:human-reviewCI passed; PR ready for human review.
agent:reworkCI or review requires another run.
agent:mergingAccepted PR entering merge.
agent:doneWork complete.

The terminal error and cancellation states are agent:error and agent:cancelled (also spelled agent:canceled). agent:watch labels a PR for monitoring; it is deliberately not a dispatch state. Agents keep the Agent Workpad current, move tickets to human review when the PR is ready, and never self-merge.

Complexity routing

Each ticket carries a complexity:1complexity:5 label. That label routes the model, agent, and skill depth, while the run resolves its backend, model, and effort from the issue labels.

Backends

Choose an implementation backend with a model:<backend> label, and add model:remote to enable remote control.

BackendNotes
codexDefault Codex backend.
claudeHeadless Claude backend.
claude-replPersistent interactive backend for remote control.
kimi, openrouterConfigurable OpenAI-compatible instances.
deepseekOpenAI-compatible; requires explicit enabled: true.

Kimi, DeepSeek, and OpenRouter have separate credentials and defaults. Route by a model:<backend> label, or name the backend in agent.routing; a bare backend label uses that backend's default model. For example:

yaml
agent:
  routing:
    "complexity:3": kimi
  backend_configs:
    deepseek:
      enabled: true

The registry reads MOONSHOT_API_KEY, DEEPSEEK_API_KEY, and OPENROUTER_API_KEY; OpenRouter's balance meter additionally uses OPENROUTER_MANAGEMENT_KEY. DeepSeek is deliberately not dispatchable until the explicit enabled: true opt-in is present.

Browse the docs

GoalPage
Install and startQuick start
Stream Deck controlsOperate the Stream Deck
Configure a workflowConfiguration
Run and control AiurCLI
Understand the driverExecutor
Read fleet workUnits
Resolve agent issuesCommands
Follow large featuresBuild Orders
Follow ticket stateHow a ticket flows
Choose workflowsSkills

Command macro, delegate micro, maximize APM.