Your AI writes code. malveon reads it back.
malveon compares what you asked for with what is in your code and answers item by item. It doesn’t run your app, and it doesn’t ask the AI anything.
Three things, all already on your computer
- Your plan. A checklist in any format you already use: Markdown, JSON or plain text. Each line is one thing you want built.
- Your prompts. Optional. What you type to Claude Code, Codex, Cursor or Antigravity. Most requests never make it into a plan, so this is where a lot of “done” claims hide.
- Your code and its history. Read straight from your project folder and git.
Four steps, none of them an AI
- 01Mark the start. malveon saves a snapshot of your code before the AI begins. That’s how it can tell what the AI changed. Anything you had already written but not saved to git is part of the snapshot, so it isn’t blamed on the AI.
- 02Read the code. It builds a map of your project: the pages, the requests they make, the server addresses that answer them, and the database calls behind them. It does this by reading files. Nothing is started.
- 03Check every line. For each item on your plan, malveon looks up what the line names (a URL, a file, a component) and follows the chain from the button to where the data is saved.
- 04Give a verdict. If something is proven wrong, the result is “blocked” and the command exits with an error. A git hook can use that to stop the commit.
The same code always gets the same answer, because nothing in these steps guesses.
A straight answer for each line
Every plan line gets one of these. Each answer points to the file and line it is based on.
| Answer | Meaning |
|---|---|
| CONNECTED | Built, and the screen reaches its server code or database. |
| BROKEN | Built, but it won’t work as written. For example, the page calls an address the server doesn’t have. |
| NOT BUILT | Your plan names it. The code doesn’t have it. |
| HALF BUILT | One part exists, the other doesn’t. A save button whose server code saves nothing. |
| SKIPPED | Not checked: a heading, a design note, or a line that names nothing malveon can look up. The report says which. |
The report opens with one verdict. FAILED means something is proven wrong in the code. NEEDS YOU means nothing is proven wrong, but something is yours to settle, such as a request like “make it faster” that no check can cover. VERIFIED BY CODE means everything malveon could check is built and connected.
And it keeps three things apart, on the first line of every report:
- Read from the code. Done on every run.
- Your build and tests. Passed, failed, or not run. Only when you ask.
- Your real app. Never verified. malveon doesn’t run it.
Pick how you work
- In the terminal. One command before your AI starts, one after it says it’s done. Best if you want it in a git hook.
- Your AI runs it. Connect malveon to Claude Code, Cursor, Codex or Antigravity, and the AI checks its own work before it tells you it’s done.
- In your editor. The VS Code and Cursor extension checks when you save and puts problems next to your code.
They all run the same checks. Use more than one if you like.
Where malveon stops
- It never runs your app, opens a browser, or checks a live site. CONNECTED means built and connected in the code, not clicked through.
- It doesn’t prove your business logic is right.
- It runs your project’s own build and test commands only after you say yes, once per project.
- It sends a few anonymous usage signals (your operating system, which command ran, whether a check came back clean). Never your code, file names, plans or prompts. You can turn them off. Details in the privacy policy.
Find out what your AI actually finished.
curl -fsSL https://get.malveon.com/install.sh | shWindows: irm https://get.malveon.com/install.ps1 | iex. Also on npm, Homebrew, Scoop, and the VS Code and Cursor extension. Free during the beta. No account. Your code stays on your computer.