Cyrus Missions
Give a coding task to the AI coding agents you already have. One plans and reviews, one builds — one agent can do both — and you follow it round by round, in the editor you already use.
Cyrus brings no model of its own: it uses coding agents installed on your computer — Claude Code, Cursor Agent, Codex and others — on your own accounts with them.
Get started ·
A look around ·
What you get ·
What it costs ·
What it needs ·
Terminal
Three steps to a first result
Install Cyrus Missions (publisher Cyrus-build) from the VS Code Marketplace or OpenVSX (Cursor, VSCodium, Windsurf). A Get started with Cyrus page opens once and walks through these steps; each ticks itself off when Cyrus finds it done on this computer (Cyrus: Get started opens it again). The Control Center, the Missions view and an empty mission panel all show the same step, with the one button that is next.
Get an agent ready. One coding agent, installed and signed in, is enough — it can both plan and build. Cyrus: Setup shows each agent on this computer as it was found, and for anything missing the exact command, which runs only when you say so.
Choose a project. A project is any folder you want work done in: in the editor, the folder open in the window. With more than one project, the Control Center finds the folders your projects are in and keeps them in one list.
Start your first mission. Cyrus: New mission… (or + in the Missions view). Describe a small change, the way you would brief a colleague. The agent writes a plan; you read it, change it if you like, and approve it with Run — nothing is built before that. Then it builds in rounds, each one checked and reviewed, and asks you when it needs you. You review the result.
What you set up stays, as settings. Which agent plans and which builds is yours to choose — in Setup (Plan with it / Build with it), in Cyrus: Settings (Agents for new missions), with cyrus agents use, per project, or per mission in the two buttons under its message box. The folders Cyrus looks in, and everything optional below, are boxes in Setup too.
A look around
Every picture is a render of the product’s own page, with demo data.
More, when you want it
None of this is needed for a first mission; each part is off until you turn it on.
- Missions from a Claude Code chat. Cyrus asks once whether to connect Claude Code, showing the command it would run. Connected, a chat can start and follow missions: "use cyrus to add a dark mode to the settings page." Any time later: Cyrus: Connect to Claude Code.
- Mail and chats. The assistant reads the mail and the websites you choose — Microsoft Teams among them — and files what matters under its project. It only reads. Cyrus: Assistant settings.
- Meetings (Windows). Cyrus records a meeting on this computer when you start it and writes its minutes.
- Everything in one place. Cyrus: Open Control Center (all projects), or Cyrus: Open the Control Center in its own window.
What you get
- Missions — plan → build → review, round after round, with a checklist that says what is done. Pause, stop, resume, answer its questions, send feedback on what it delivered. A mission never starts or continues by itself.
- Your choice of agents — Claude Code, Cursor Agent, Codex, Gemini CLI, opencode, Copilot CLI, Aider, Kimi. One can plan and another build, or one can do both; choose once for this computer, per project, or per mission.
- The Control Center — every project on this computer in one place, opening on a board of all your work — your to-dos, what is new, and every mission in the column it has reached. In an editor tab, or in a window of its own with no editor open. + Create makes a to-do, a mission or a project from there. A mission opens one level down: what happens next, in one block with its buttons, and a message box for your answer or a change (Settings can open missions in their own panel instead).
- Ask Cyrus — a chat beside it that knows your projects, missions and tasks: ask what to do first or why a mission stopped, and have it draft a task, a mission, or a whole new project with its plan. What it proposes is a card with one button; nothing is created until you press it.
- A history you can go back to — every round is saved on a git branch of its own (
cyrus/<mission>), which is never pushed.
- Tasks, and what comes in — one list for you and the machine; a task you give to a mission is taken up between rounds.
- From Claude Code and from a terminal — a Claude Code chat can start and follow missions;
cyrus run does the same from a script.
- The assistant (optional, off until you turn it on) — reads the mail and the websites you choose — Microsoft Teams chats among them, one entry per account — and keeps only what matters. A chat is judged once it has gone quiet, as one conversation; reading marks nothing as read.
- Meetings (optional, off until you turn it on; Windows) — Cyrus listens to a meeting on this computer when you start it, turns it into text here, and writes the minutes: decisions, who does what, what is open.
- Context notes — what your mail, chats and meetings settled is kept per project, one line each, with where it came from.
What each part needs
| For |
You need |
| Any mission |
One coding agent, installed and signed in. With two, one can review the other. |
| The mission history (go back, branch off) |
The project to be a git repository. |
| Missions from Claude Code |
Claude Code. |
| The tray icon |
Windows. |
| The assistant reading mail |
Windows with classic Outlook (the new Outlook cannot be read), and Python 3.10 or newer — Setup installs what is missing when you say so. |
| The assistant reading websites |
Microsoft Edge or Google Chrome. |
Nothing else: Cyrus installs its own parts when the editor starts, and uses the editor's own copy of Node.js where the computer has none.
A folder must be trusted for Cyrus to run in it (agents edit files and run commands there), and it needs a folder on disk — not a remote repository opened without a checkout.
What it costs, and what it does on its own
Cyrus is free. The agents are not: every plan, every build round and every review is a request to the agents you chose, on your subscription or API key with them.
- A mission runs for at most 30 rounds, and stops after 3 rounds in a row without progress. There is no limit in tokens or money.
- During a mission the doer edits files in the project and runs commands (builds, tests) without asking each time.
- If an agent cannot run — it reached its usage limit, it is signed out, it is not installed — Cyrus moves that mission to another agent that is ready and tells you. To be asked first instead, set Fallback to Ask me each time in Cyrus Settings.
- A mission never starts or continues by itself. It may pause to ask you something; only you set it going again.
- Your first mission always waits for you at its plan. After that, in the editor, a task small enough for one sitting (the brief card says D0 — task) is built straight after its plan; anything larger waits for your approval. You can change the depth on the brief card. From the Control Center's own window, from Claude Code and from
cyrus run, a plan always waits.
- Each message you send in Ask Cyrus is one request to Claude Code on your account (two when it looks into one mission's notes). It asks nothing by itself.
Privacy and data
- Cyrus has no server of its own and sends nothing to its author: no telemetry, no account.
- Your prompts, your code and the mission's files go to the agents you chose, under your own accounts with them.
- If an API key is set for a provider, Cyrus also asks that provider for its list of models, about once a day.
- Ask Cyrus shows Claude Code — with its tools and connectors switched off — the Control Center's own lists: your projects' names, their missions' titles and one-line states, your tasks, and what came in (sender, title, summary). When an answer needs it, also one mission's plan, checklist and last review, or a project's README. Never your code.
- If you turn the assistant on, the mail and pages it reads are shown to Claude Code to judge, with that agent's tools and connectors switched off. Cyrus keeps the sender, the subject and a summary — never the text of a message. What a conversation settled is kept as one line in that project's context notes, on this computer.
- If you turn Meetings on: a meeting is recorded only when you start it (or say yes when one begins). The sound stays on this computer, is turned into text here by whisper.cpp, and is removed once the minutes are written. The transcript is shown to Claude Code — tools and connectors switched off — to write the minutes. Installing the transcriber downloads whisper.cpp from GitHub and a speech model from Hugging Face, once. Tell the people you meet that you are recording; in many places the law requires it.
- Keys you enter in Cyrus Settings are kept in the editor's secret storage. Keys already in your environment are used too. Each agent is given only its own.
Where things are kept
- In each project: a
.cyrus/ folder (plans, checklists and summaries are plain files meant to be kept; logs are ignored by git), and one cyrus/<mission> git branch per mission, never pushed.
- In your home folder:
~/.cyrus/ — Cyrus's own parts (for Claude Code and terminals), the list of projects, your tasks and what came in, and the assistant's data.
Removing Cyrus
- Windows tray, if you turned it on: Cyrus: Stop auto-starting tray, then quit the tray from its menu.
- The Control Center's own window, if you used it:
cyrus serve --stop in the editor's terminal.
- Claude Code, if you connected it:
claude mcp remove cyrus -s user (and claude mcp remove outlook-readonly -s user if you set up Outlook).
- Uninstall the extension.
- Delete
~/.cyrus/.
- Per project, if you want: delete
.cyrus/ and the cyrus/* branches.
How a mission runs

"Run a model in a loop" is easy. Making the loop trustworthy is the work:
- Sizing. One cheap question sizes the mission first: a rename gets almost no ceremony, a multi-part program gets stages with exit checks.
- Plan, build, review — by different agents. The doer never grades its own work. The manager sets each round against a checklist and reviews what actually changed.
- Checks that run. A checklist item can carry a command. Cyrus runs it; a failing exit code holds the item, whatever any model says.
- Watchdogs and limits. A doer that goes quiet, repeats itself or makes no progress is stopped and looked at, not left to spin.
- Feedback after delivery. A finished mission stays open to your comments: each becomes an item, everything it checked before is checked again, and only you close the round.
From Claude Code, from a terminal, in its own window
Claude Code. Connected (step 4 above), a chat has four tools: run a round of a mission, continue a stopped one, approve one it reviewed, and list missions. The project is the folder the chat was started in. Agents that Cyrus itself runs get none of this: a mission cannot start missions.

A terminal. The editor's terminals have a cyrus command:
cyrus run --goal "add a dark mode to the settings page" --auto-approve
cyrus overview # the Control Center, as text
cyrus chat "what should I do first?" # Ask Cyrus, from a terminal
cyrus help
Its own window. cyrus ui, or Cyrus: Open the Control Center in its own window: the same Control Center with no editor open. It opens a project in your editor when you need it, and a mission you resume there keeps going when every editor is closed.
Configuration
No file is needed. To change something for a project, use Cyrus: Settings, or write .cyrus/config.json in the project:
doer.cli, manager.cli — which agents (for example "claude", "cursor-agent", "codex"); doer.model, manager.model — which model.
limits.maxIterations — rounds at most (30). limits.maxNoProgressIterations — rounds without progress before it stops (3).
host.doerIdleSec — a doer with no output and no file change for this long is stopped (600). host.itemBudgetSec — the most one doer run may take (3600).
limits.perTaskTimeoutSec — the time one manager step may take (600).
rubric — what the manager holds the work to in this project.
Cyrus IDE
This extension runs in VS Code, Cursor, VSCodium and Windsurf. There is also a dedicated Cyrus IDE at cyrus.build.
Links
License
See LICENSE.txt (included in the extension package).
Cyrus is named for Cyrus the Great — a founder across three continents who relentlessly delegated. The icon is his silhouette.
| |