Vestra Code
It writes the code. You decide what lands.
Our coding agent for Windows. Open a project, say what you want, and watch it read, edit and test the code, asking before anything is written.
Vestra Code is a coding agent that runs on your Windows PC. Open a project folder, describe the change you want, and it gets to work: it reads the code, searches for what it needs, writes the change and runs your tests to check it.
It’s our own take on the coding agents developers now use every day, built around one rule. Nothing is written to your disk until you’ve seen it and said yes, unless you’ve told it not to ask.

Try it
Below is a small copy of the app, running in this page. Pick a task, approve the changes when it asks, and type in the box while it works. Then drag the effort slider and run it again.
Add a dark mode toggle to the settings page, and remember the choice.
Thought for 3sPlanning the run
- Settings lives in src/settings. I need to know how the app sets its colours today.
- Look for anything already called theme before adding a new module.
Plan complete4 of 4
- Find how the app handles themes (done)
- Add a theme module (done)
- Add the switch to Settings (done)
- Run the tests (done)
Listed the project folder
src/ tests/ index.html package.json tsconfig.json vite.config.ts
Searched for 'theme'
src/app.ts:4 // TODO: theme
src/settings/Settings.tsx:20 {/* TODO: dark mode toggle */}
src/styles.css:1 :root { color-scheme: light dark; }Thought for 2sPlanning the changes
- A small theme module, then the switch in Settings.
- Set data-theme on the root element so the CSS can follow it.
Wrote src/theme.ts +19
// Light and dark themes. The choice is kept per device, in localStorage.export type Theme = "light" | "dark";const KEY = "theme";/** The saved choice, or the system setting if there isn't one. */export function getTheme(): Theme {const saved = localStorage.getItem(KEY);if (saved === "light" || saved === "dark") return saved;return matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";}/** Apply a theme to the page and remember it on this device. */export function applyTheme(theme: Theme): void {document.documentElement.dataset.theme = theme;document.documentElement.style.colorScheme = theme;localStorage.setItem(KEY, theme);}
Edited src/settings/Settings.tsx +22 −6
@@ -1,7 +1,16 @@import { useState } from "react";import { useEffect, useState } from "react";import { Section } from "./Section";import { Switch } from "../ui/Switch";import { applyTheme, getTheme, type Theme } from "../theme";export function Settings() {const [compact, setCompact] = useState(false);const [theme, setTheme] = useState<Theme>(getTheme);useEffect(() => {applyTheme(theme);}, [theme]);const toggleTheme = () => setTheme((t) => (t === "dark" ? "light" : "dark"));return (@@ -8,2 +17,2 @@<div className="settings"><div className="settings" data-theme={theme}><Section title="Layout">@@ -15,8 +24,15 @@<Section title="Appearance"><p className="muted">The app follows your system theme.</p><label className="row"><span><strong>Dark mode</strong><small>Saved on this device.</small></span><Switchchecked={theme === "dark"}onChange={toggleTheme}aria-label="Dark mode"/></label></Section>{/* TODO: dark mode toggle */}</div>);
Ran npm test
✓ src/settings/Settings.test.tsx (6) ✓ src/theme.test.ts (8) Tests 14 passed (14)
Thought for 1sWrapping up
- Both files are in, tests pass. Summarise.
Done. Settings has a Dark mode switch under Appearance. It starts from your system setting, and your choice is saved on this device.
I added src/theme.ts for reading and applying the theme, and the tests pass.
Ask Vestra Code to work on this project
Watch it work
Every step shows up as it happens. “Read src/app.ts”, “Searched for ‘theme’”, “Ran npm test”: each is a row you can open to see what it found. Steps of the same kind are grouped, so a long run stays easy to follow.
Files are written in front of you. You see “Writing README.md… 19 lines” and the content streaming in underneath, before anything is saved. Its reasoning folds away into “Thought for 3s”, one click from being read.

Every change arrives as a diff. Approve it, edit it before it’s written, or reject it with a note. When the turn is done, you get one line, such as “2 files changed +41 −6”, and one Undo for all of it. Undo only restores files that still hold what the agent wrote, so it never throws away your own edits.
Steering
You don’t have to wait for it to finish to change your mind. Type while it works, and your message waits in a queue above the box. It lands at the next step, once the current one is done, so nothing is cut off halfway. If it can’t wait, press Send now.

New in 1.12
Version 1.12 is about seeing what the agent is doing without reading every line.
- Thinking you can follow. Its reasoning rolls past with a live, one-line summary of the current step, such as “Reading the failing test”. When it’s done, it folds to “Thought for 8s · Fixing sum”.
- A plan you can see. It writes its plan as a checklist and ticks each item off as it goes.
- An activity map. Files in the project light up as they’re read or edited, and when a command runs.
- Test results on the step itself. A green ripple when the tests go from failing to passing, and a red marker when a command fails.


When the agent starts a local dev server, the page opens in a preview pane next to the chat and reloads as it edits.

For runs you leave alone, progress shows in the Windows taskbar, a badge tells you when something needs your approval, and notifications let you approve or deny from wherever you are. The tray icon has Pause all. After a long run, or one in the background, a “While you were away” report sums up what changed, which commands ran and how the tests went.

The home screen learns when you usually work. At your usual time it asks “Ready to work?”; otherwise it might be “Bit early, but we can still work…” or “Late one tonight?”. It learns this on your PC only. Each Vestra model now has its own colour (Robot blue, Cyber violet, Cyber Mini teal), and there are sounds if you want them.
Thinking effort
A slider sets how hard it thinks: Low, Medium, High, Extra High or Ultra. Medium is the default. Higher levels think for longer before they act, which is worth it for a stubborn bug or a change that touches many files. Ultra thinks for as long as it needs.
Models
Sign in with your Vestra account in your browser, or paste a Vestra Platform API key.
- Robot 1.1 Coding, our model for code, on paid plans.
- Cyber and Cyber Mini, our security models, for people approved through Vestra Enclave. Approval unlocks them in the model picker automatically. You don’t need a separate key.
- Your own keys for OpenAI, Anthropic, OpenRouter and Google Gemini.
- Local models through Ollama, LM Studio or any OpenAI-compatible endpoint.
Vestra’s own models run on UK Private Cloud Compute, managed by Magon: our own servers, not someone else’s cloud.


Leave it running
There are three access modes. Ask every time is the default. Auto-approve edits writes files without asking but still asks before running a command. Full access does both.
Autonomous runs until the task is done, which makes it the mode for something you leave overnight. Nobody has to press Continue:
- it carries on past output limits by itself, and tidies its own context when the conversation gets long;
- it notices when it’s stuck, nudges itself once, then stops with a summary of what’s done and what isn’t;
- you can give a run a time limit or a step limit;
- it keeps your PC awake while it works, and tells you when a run finishes or needs your approval.

Talk to it
Click the microphone and say what you want. It stops listening when you pause, and the words go into the box. There’s a hands-free mode, and push-to-talk on Ctrl+Shift+Space. The speech-to-text is our own, based on Whisper and running on our servers.
Everything else is a keystroke away too: Ctrl+K opens a command palette for your chats, projects, models and settings.
Security
- The agent works inside the project folder you open. It can’t read or write anything outside it.
- Files that usually hold secrets, such as
.envfiles and keys, always need your permission to read, in every mode. - Anything risky waits for your approval, and nothing is approved on a timer.
- Your sign-in tokens and API keys are encrypted with Windows’ own data protection.
- The app only talks to the providers you connect.
Get it
Vestra Code is for Windows. It installs for your own user account, so it doesn’t need administrator rights. The download is for paid VestraAI plans: sign in at ai.vestra.systems and open Vestra Code from your account menu.
Questions? Write to [email protected] or ask us on Discord.