Documentation
Kairo: triage, review, and Ask
Spam triage for outside contributions, Kairo Review on Change Requests, and Ask on any repository.
Kairo is the AI built into Upstream. It does three things on upstream.codes.
Spam triage
Triage is free and unlimited on every plan. It checks change requests, issues, discussions, and comments from people outside the project. Maintainers, organization members, trusted people, and anyone with a merged change request skip it.
Kairo judges effort and quality. It never judges whether an agent wrote something. Quick checks run first, such as a brand-new account, a tiny docs-only change, a duplicate, or an ignored template. Only unclear cases go to the AI check.
Flagged items move to the Triage page and out of the main lists. Authors still see their own items, with a short reason and a Request a human look button. Nothing is ever deleted. Maintainers decide with Not spam or Spam.
Optional settings, under Settings → Kairo:
- How strict triage is: relaxed, normal, or strict.
- Close likely spam automatically. Only when Kairo is very confident and the quick checks agree.
- Ask the author first. For unclear items, Kairo asks the author for context before pinging maintainers.
- Require a linked issue, and limit open change requests per outside contributor.
Maintainers get one daily digest instead of a notification per item.
Kairo Review
Kairo Review reads a Change Request version and reports every real problem: bugs, security issues, and broken repository rules. There is no limit on findings. Nitpicks are off unless you turn them on.
Kairo reads the diff, related code, linked issues, AGENTS.md, and CONTRIBUTING.md. On paid plans it also reads house rules from .upstream/review.md. It never reads private workspace context on upstream.codes.
When a new version arrives, Kairo reviews only the files that changed and closes its own findings that were fixed. Its result is the kairo/review check. Make it a required check to block merges on open issues.
Every finding has Fixed, Won't fix, and Wrong. Won't fix and Wrong become notes Kairo follows in future reviews of that repository. Only maintainers can teach it.
The owner or an admin chooses whether Kairo reviews every change request or only when asked. Each repository can override that. Ask from a Change Request with the Kairo button, or comment:
@Kairo reviewto review the current version.@Kairo review deepfor a deeper review (maintainers, paid plans). A deep review counts as 6 units per 400 changed lines.
Mention Kairo
Type @ in any comment on a Change Request to mention Kairo. Ask it anything about the change, like @Kairo why does this cache per session?, and it replies in the same thread with links to the code. Mention it in a thread on a changed line and it starts from that line.
Anyone who can comment can ask. Each question counts as one of your daily Ask questions, and failed answers aren't counted. Kairo always replies, even when it can't help, so a mention is never ignored. It can't push code, approve, or merge; when you ask for a change, it says what to change.
Ask
Press ⌘I on any repository to ask about it. Kairo answers from the code with links to the exact lines, and says when it doesn't know. It can't change anything. Signed-in people can share an answer from a public repository as a link.
On Pro and Team, switch the dock from This repository to All of the namespace to ask across every repository you can read there. Maintainers see what people ask most under Settings → Kairo.
Usage and billing
| Free | Pro | Team | Enterprise | |
|---|---|---|---|---|
| Spam triage | Unlimited | Unlimited | Unlimited | Unlimited |
| Kairo Review | Review Lite on public repositories, 30 units a month | 300 units a month | 300 units per seat, pooled | 300 units per seat, pooled |
| Ask | 10 questions a day | 100 a day | 60 per seat a day, pooled | 150 per seat a day, pooled |
One review unit covers up to 400 changed lines. Review Lite skips change requests over 2,000 changed lines. On Free, every namespace you own shares one allowance. The repository owner pays for reviews; the person asking pays for questions. Failed reviews and answers are refunded. Paid plans can keep going on credits after the allowance, up to a monthly limit you set in Settings → Billing.
Your code is never used to train models.