Cyrus Missions · for VS Code and Cursor

Hand the work to the agents you already have.

One plans. You approve. One builds, in checked rounds. You review the result — in the editor you already use.

Works with Claude Code · Cursor Agent · OpenAI Codex CLI · Gemini CLI · GitHub Copilot CLI · Aider · opencode · Kimi CLI. Cyrus brings no model of its own.

Add farewell function and greet tests A real mission, replayed hello-app · 11 October 2026
You

describe the work

Add a farewell(name) function to greet.mjs that returns the text Goodbye, followed by the name, and add greet.test.mjs with node:test tests for greet and farewell.

greet.mjsthe whole project
export function greet(name) {  return "Hello, " + name;}

Cursor Agent, the usual doer (the agent that builds), is not signed in on this computer — this mission uses Claude Code.

Claude Code

plans it

Mission brief: add farewell + first test file to hello-app

A two-file change in a 4-line project. … There is no package.json, no test runner, no existing test file. So this mission is really two things: a trivial sibling function, and the project’s first test file.

  1. Add export function farewell(name) to greet.mjs returning "Goodbye, " + name — mirroring greet’s existing style … Don’t rewrite greet.
  2. Add greet.test.mjs importing both from ./greet.mjs, using node:test + node:assert … with at least one assertion per function on the exact output string.

Done means: node --test in the project directory passes with both tests running and visibly reporting (not zero tests found, not a silent pass).

Out of scope: a package.json / test npm script, input validation or error handling in either function, … a test framework (vitest/jest), CI config, README updates, touching anything outside these two files.

Scope, honestly: minutes, one iteration.

You

approve the plan

Nothing has been built. The plan is ready and the mission is idle: it waits for you, however long that takes.

In the editor this is the button under the plan, beside Edit brief and Regenerate. The replay waits for your press too.

Claude Code

builds it

round 1 · 7 tool calls · 35 s
  1. ✓Readgreet.mjs
  2. ✓PowerShellGet-ChildItem -Force | Select-Object Name, Mode
  3. ✓Editgreet.mjs
  4. ✓Writegreet.test.mjs
  5. ✗PowerShellnode --version; node --test
  6. ✗PowerShellnode --test
  7. ✓Bashnode --test
greet.mjs+4 lines
export function greet(name) {  return "Hello, " + name;} export function farewell(name) {  return "Goodbye, " + name;}
greet.test.mjsnew
import { test } from "node:test";import assert from "node:assert";import { greet, farewell } from "./greet.mjs"; test("greet returns a greeting with the name", () => {  assert.strictEqual(greet("Ada"), "Hello, Ada");}); test("farewell returns a farewell with the name", () => {  assert.strictEqual(farewell("Ada"), "Goodbye, Ada");});
$ node --testthe check
✔ greet returns a greeting with the name (1.5542ms)✔ farewell returns a farewell with the name (0.3572ms)ℹ tests 2ℹ pass 2ℹ fail 0
You

review the result

REVIEW · APPROVED

greet.mjs:5-7 adds farewell exactly mirroring greet — named export, string concatenation, "Goodbye, " + name, comma-space, no trailing punctuation, and greet.mjs:1-3 is untouched. greet.test.mjs imports both from ./greet.mjs with node:test + node:assert and one strictEqual per function on the exact strings …

I couldn’t re-run node --test myself (the command needs approval in my environment), but the doer’s run shows in the tool log as a real passing Bash invocation, and I verified both files directly.

Not establishedThe passing node --test output was not independently reproduced during review — only the doer’s logged run attests to it.

The summary says what it rests on — and what it does not. Then it is yours: accept it, or say what to fix and the next round starts.

Every line is from the mission’s own record (2026-10-11-task-3b07): its goal, the plan the agent wrote, its tool log, the check’s output, the review and the summary. Paths are shortened to file names.

One agent is enough

Cyrus brings no model of its own. One coding agent on your computer, signed in, can plan and build. With two, one reviews the other.

Which agents

The plan waits for you

An agent writes a plan first. Nothing is built before you approve it, and a mission never starts or continues by itself.

How a mission runs

Every round is checked

The build goes in rounds. Cyrus runs the checks itself after each one, an agent reviews it, and the summary says what it rests on.

What it does on its own

Three steps to a first result

Each step ticks itself when Cyrus finds it done.

A “Get started with Cyrus” page opens once after you install, and the Control Center, the Missions view and an empty mission panel all show the same step — with the one button that is next.

  1. Get an agent ready

    One coding agent, installed and signed in, is enough. Setup shows each agent on your computer as it was found, with the exact command for whatever is missing.

  2. Choose a project

    Any folder you want work done in — in the editor, the folder open in the window. The Control Center finds the folders your projects are in.

  3. Start your first mission

    Describe a small change, the way you would brief a colleague. Read the plan, approve it with Run, review the result.

What you set up stays, as settings: which agent plans and which builds, the folders Cyrus looks in, and everything optional are boxes in Setup — to change any time.

How a mission runs

Five things happen. Three of them are yours.

The mission above is these five, once. A larger one repeats the fourth: the agent builds a round, Cyrus runs the checks, an agent reviews it, and the next round starts from what is still open.

  1. Youdescribe the work
  2. An agentplans it
  3. Youapprove the plan
  4. An agentbuilds itin rounds, each one checked
  5. Youreview the result

A plan you can read

The agent writes what it understood, what it will do, what “done” means and what is out of scope — before anything is touched. Edit it, or have it written again.

Checks Cyrus runs itself

After a round, Cyrus runs the project’s own checks in its own environment. A check that could not run is told apart from one that failed.

A history you can go back to

Every round is saved on a git branch of its own, cyrus/<mission>, which is never pushed. Plans, checklists and summaries are plain files in the project.

A look around

The Control Center, and what is one step in from it.

Every project on your computer in one place. These are renders of the product’s own pages; the projects and people in them are demo data.

Control Center: Every project, every piece of work, on one board. Real render · demo data

Every project, every piece of work, on one board.

Your to-dos and what came in first; then every mission in the column it has reached — planning, your approval, building, your review, done — each with its project’s mark. In an editor tab, or in a window of its own.

Getting started: Three steps, one button at a time. Real render · demo data

Three steps, one button at a time.

Each step ticks itself when Cyrus finds it done on your computer. What you set up stays, as settings.

A mission: One next step — and a box to answer it. Real render · demo data

One next step — and a box to answer it.

What it asks you or what it did for you, how it was checked, how to try it. The rest of its story is folded until you want it; every round is kept on a git branch of its own, which is never pushed.

Ask Cyrus: A chat that knows your projects, missions and tasks. Real render · demo data

A chat that knows your projects, missions and tasks.

Ask what to do first or why a mission stopped. What it proposes is a card with one button; nothing is created until you press it.

Setup: What Cyrus needs on this computer, as it was found. Real render · demo data

What Cyrus needs on this computer, as it was found.

Agents, connections, where your projects live — with the exact command for whatever is missing, run only when you say so.

Which agents

The ones on your computer, on your own accounts.

Each of these can plan and can build. One can do both, or one can plan and review while another builds. Choose once for the computer, per project, or per mission — and when the chosen one cannot run, the mission moves to one that can and says so.

  • Claude Code
  • Cursor Agent
  • OpenAI Codex CLI
  • Gemini CLI
  • GitHub Copilot CLI
  • Aider
  • opencode
  • Kimi CLI
ImagesOpenAI ImagesStability AIReplicate
AudioElevenLabsOpenAI Audio
VideoRunwayGoogle VeoReplicate

In the mission above, Cursor Agent — the usual builder — was signed out. Cyrus said so before the first word was typed, and Claude Code did both jobs.

What it costs, and what it does on its own

Said plainly, before you install it.

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 never starts or continues by itself.
It may pause to ask you something; only you set it going again. A window that closes mid-round leaves it “interrupted”, with Resume.
Your first mission always waits at its plan.
After that, in the editor, a task small enough for one sitting is built straight after its plan; anything larger waits for your approval.
While it builds, the agent edits files and runs commands.
In your project, without asking each time. At most 30 rounds; it stops after 3 in a row without progress.
A summary says what it rests on.
Which items passed a command Cyrus ran, which were accepted on reading alone, and what was not established — as in the example above.
Cyrus has no server of its own.
It sends nothing to its author: no telemetry, no account. Plans, checklists and summaries are plain files in your project, under .cyrus/.

More, when you want it

None of it is needed for a first mission.

Ask Cyrus

A chat beside the Control Center. It answers in cards — a task, a mission, a whole new project with its plan — and each is a proposal until you press it.

Mail and chats

An assistant that reads the mail and the websites you choose, Microsoft Teams among them, and files what matters under its project. It only reads.

Off until you turn it on

Meetings

Cyrus records a meeting on your computer when you start it, turns it into text there, and writes the minutes: decisions, who does what, what is open.

Off until you turn it on · Windows

From a Claude Code chat

Connected, a chat can start and follow missions: “use cyrus to add a dark mode to the settings page.”

Asked once, never assumed

From a terminal

The same loop without an editor: cyrus run --goal "…" — and cyrus ui opens the Control Center in a window of its own.

Images, audio, video

Adapters for image, audio and video services sit beside the coding agents, for missions that make more than code.

Get it

Install the extension. The rest is found for you.

In your editor

Or type this into the editor’s Quick Open box (Ctrl+P / ⌘P):

ext install cyrus-build.cyrus-missions

It installs its own parts when the editor starts, and uses the editor’s own copy of Node.js where the computer has none. What changed in each version.

Reading this on your phone?

Send the three steps and the two links to your inbox, and open them at your desk.

One mail, once. It is not a subscription, and the address is not kept.

Help and reports

Something wrong, unclear, or missing?

It goes to the person who builds Cyrus. Say what happened and what you expected; leave an address if you want an answer.

Sent as one mail to Cyrus’s author. Do not paste keys, passwords or private code.