MvgeOS¶
An open coding-agent platform. Read it, fork it, self-host it, and run it on a model you already pay for.
MvgeOS is an operating system for AI agents, written in Python. A Mvge — the agent — casts Spells against models served by Realms. Conversations persist as Tomes. Capabilities extend through Runes.
There is no account to create with MvgeOS and no telemetry in the engine.
The default model (openrouter/free) is free of per-token charges, and requires
an OPENROUTER_API_KEY because as of 2026-10-11 no free tier answers an
unauthenticated request (ADR-0020). To use another provider, bring the key for
the Realm you want.
MvgeOS - a Python-based AI coding agent
╭─ Commands ────────────────────────────────────────────────────────────────────╮
│ build Serialise the resolved runtime manifest (read-only). │
│ config Configuration management │
│ info Display the runtime snapshot as rich tables (read-only). │
│ mvge Mvge (agent) management │
│ rune Extension rune management │
│ setup Install system dependencies for runes │
│ tome Session tome management │
╰──────────────────────────────────────────────────────────────────────────────╯
Four commands and under a minute gets you from nothing to a running Mvge:
# 0. the key — required for the free router since ADR-0020
export OPENROUTER_API_KEY="sk-or-..."
# 1. the Realm — how MvgeOS reaches a model
uvx mvgeos rune install openrouter-realm --confirm-python-deps
# 2. the Mvge — carries the Spells
uvx mvgeos mvge install coding_mvge
# 3. run a task
uvx mvgeos --agent-name coding_mvge "summarise the README in this directory"
The Quickstart walks through it with real output, and Use another Realm covers the case where you already pay for a provider.
What it does¶
A Mvge reads your directory, decides what it needs, casts the Spell, and shows
you what it did. mvgeos info prints the resolved runtime so you can see the
Spells and Runes it assembled before you spend anything:
Agent: coding_mvge
Model: openrouter/free
Spells
┏━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ Source ┃ Source Rune ┃ Description ┃
┡━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ bash │ builtin │ - │ Execute a shell command with working dir… │
│ read │ builtin │ - │ Read a file from the workspace… │
│ write │ builtin │ - │ Create or overwrite a file… │
│ edit │ builtin │ - │ Modify an existing file… │
│ find │ builtin │ - │ Locate files by name… │
│ list │ builtin │ - │ List directory contents… │
│ grep │ builtin │ - │ Search file contents by pattern… │
└────────────┴─────────┴─────────────┴───────────────────────────────────────────┘
The Model: line is the model you get with no configuration, and its prefix is
the Realm — openrouter, which is why step 1 above installs openrouter-realm.
Swap the Realm and the model comes with it.
- Coding Mvge. Nine built-in Spells —
bash,edit,find,grep,list_files,read,read_url,search_web,write— installed as a package, so you can read exactly what your agent can do. Runmvgeos info --agent-name coding_mvgeto see the list yourself. - Tomes. Every conversation is an append-only JSONL file you can read, diff, fork, and export. Not a chat log locked in a database.
- Runes. Mount MCP servers as Spells, trace with OpenTelemetry, wire in
Agent Skills, read your
AGENTS.md, self-modify. Twenty in the catalog. - Realm-agnostic. The engine programs against a Realm abstraction, not one vendor's SDK. Your key goes to the provider you chose and nowhere else.
- Desktop GUI. NiceGUI + PyWebView, with live Spell tracking and diff review.
Start here¶
| Quickstart | Nothing to a running Mvge — and what five minutes does not promise |
| Concepts | What Mvge, Spell, Realm, Tome, Rune, and Sigil mean |
| Troubleshooting | Real errors, with the real output |
| FAQ | The questions that come up before anything breaks |
| Rune catalog | What is available today |
Honest status¶
- Pre-1.0. The current version is on the Quickstart. The internals are held to a high bar — mypy strict, ruff, over 3,700 tests. The command surface still moves.
- The default model call can be refused. Every command on this site was verified on a clean machine, including the task on the Quickstart. It is not MvgeOS's to fix, though: when the default free tier is at capacity the run ends in
Rate limited by the provider: Realm requested 2209s retry delay (max: 60s). Rate
limit exceeded. Please try again later..
On the check that produced the Quickstart's transcript, this exact command was
refused seven times and then completed, about 40 minutes after the first
refusal. Read the number it asks for — about 37 minutes — rather than
retrying into it. Details in
Troubleshooting.
- Runes run in-process via importlib. Not sandboxed, not
process-isolated. Read manifests before installing code you did not write;
approval-rune is a fail-closed gate you can put in
front of mutating casts.
- No run-level spend cap. Mana Budget is not implemented. Contemplation is
a per-request reasoning parameter, not a ceiling.
Rune catalog¶
A Rune is a packaged extension that hooks lifecycle Sigils and can register Spells, CLI commands, shortcuts, and Realms.
| Rune | What it does |
|---|---|
| ADR Bridge | MADR 3.0 architectural decision records: scaffold, validate, and inject decisions into the prompt |
| Approval Rune | Fail-closed execution gate — pauses every uncovered mutating Spell cast for a human |
| Checkpoint Bridge | Shadow-git workspace checkpoints, atomic leaf restoration, and file rollbacks |
| CodeAct Rune | CodeAct Python executor with AST safety, tool write-protection, and auto-dispatch |
| Eval Bridge | Evaluation harness and RL data exporter compatible with google/adk-python evalsets |
| LSP Bridge | LSP diagnostics bridge providing debounced compiler errors on edit and write |
| MCP Bridge | Model Context Protocol client — mounts MCP servers as Spells |
| OKF Bridge | Open Knowledge Format (v0.2) knowledge bundles + ADR parsing, injected into context |
| OpenCode Realm | Provider Realm for the OpenCode Zen gateway, including its free models |
| OpenRouter Realm | Provider Realm for the OpenRouter API gateway |
| OpenTelemetry Bridge | GenAI tracing across sessions, turns, provider calls, and Spell casts |
| Pi Codec | Native Pi session codec — resume, append, fork, and validate Pi agent sessions |
| Seeker | On-demand discovery of Spells, Skills, and MCP servers |
| Self-Mod Bridge | Self-modification and customization of the running Mvge |
| Session Search | Full-text BM25 search across MvgeOS Tomes and Pi sessions |
| Session Title | Auto-generates Tome titles from conversation content |
| Skill Evolution | Persistent experience consolidation and autonomous Skill evolution |
| Skills Bridge | Agent Skills / Agent Plugins discovery with progressive disclosure |
| Steering Bridge | Repository steering via AGENTS.md, layered into the system prompt |
| Sub-Mvge Bridge | Kernel sub-Mvge summoning, persistent sub-sessions, and reactive wakeup bridge |
Install any of them with mvgeos rune install <name>.
How a Rune is put together¶
runes/<name>/
├── manifest.json # name, version, entry point, Sigils, Spells, commands, deps
├── rune.py # entry point exposing rune_factory
├── pyproject.toml # packaging and third-party deps
├── README.md
└── tests/ # runs in marketplace CI
Runes are discovered from standard extension directories — the user's, the
project's, or a specific Mvge's — and load through the same path that resolves
their CLI commands, so a command that appears in mvgeos --help is a Rune that
would load.
Building these docs¶
uv tool install mkdocs --with mkdocs-material --with pymdown-extensions
mkdocs serve # preview at http://127.0.0.1:8000
mkdocs build # static output in site/
The site deploys to GitHub Pages from main via .github/workflows/docs.yml.
The repository¶
- Engine and CLI — github.com/IAmNo1Special/mvgeos
- This marketplace — github.com/IAmNo1Special/mvgeos-marketplace
- Licence — MIT