Cyrus doesn’t guess what to work on.Documentation Index
Fetch the complete documentation index at: https://atcyrus.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
It uses clear signals from Linear, repositories, and labels to decide when to act and where to make changes. This page explains the mental model behind Cyrus so you can predict its behavior with confidence.
The High-Level Flow
At a high level, Cyrus works like this:- A Linear issue changes state (assigned, labeled, updated)
- Cyrus checks whether that issue matches any configured rules
- Cyrus selects one or more repositories
- Cyrus creates a clean worktree for each target repository
- Cyrus starts working
Repositories Are Routing Targets
Repositories are not just codebases — they are destinations. Each repository you add tells Cyrus:“If an issue matches these rules, work here.”An issue will only be processed if it matches at least one active repository.
Linear Teams and Labels Are Signals
Cyrus uses two types of signals from Linear:Linear Teams
- Define which teams’ issues are eligible
- One repository can accept issues from multiple teams
- Issues from other teams are ignored
Routing Labels
- Further narrow down which issues go to which repo
- Useful when one team owns multiple codebases
- Example:
frontend,backend,infra
One Issue → One or More Repositories
By default, Cyrus routes each issue to a single repository. But when you need an issue to fan out across multiple codebases (for example, a feature that touches both a frontend and a backend), Cyrus supports that explicitly. An issue can target multiple repositories when you:- Add multiple
[repo=...]description tags (or userepos=frontendreponame,backendreponame) - Apply multiple routing labels, each pointing to a different repository
Routing Priority
When more than one routing signal is present, Cyrus resolves the target repository (or repositories) in this order:- Description tag —
[repo=...]orrepos=...in the issue description (highest) - Routing labels — labels mapped to repositories
- Project assignment — Linear project mapped to a repository
- Team selection — the issue’s Linear team (lowest)
What Cyrus Will Ignore
Cyrus will not process issues when:- No repository is active
- The issue’s team isn’t selected
- Required labels are missing
- The repository was deleted or disabled
- Required integrations aren’t connected
What’s Next
Now that you understand how routing works, you can control it.
Cyrus Community
Get tips and tricks for routing on Discord

