Skip to content

Desktop app · macOS · Windows · Linux

Fewer tokens per verified outcome.

Mark 1 runs beside your coding agent. It checks the work with your own tests, stops retry loops before they get expensive, remembers what went wrong, and signs a receipt you can verify without trusting us.

Mark1-mac-arm64.dmg 161 MB Mark1-mac-x64.dmg 168 MB Mark1-win-x64.exe 133 MB Mark1-linux-x86_64.AppImage 160 MB Mark1-linux-amd64.deb 122 MB

Unsigned build. macOS: right-click the app, choose Open, then Open again. Windows: More info, then Run anyway. Linux: chmod +x the AppImage.

Works with
  • Claude Code
  • Codex
  • Gemini CLI
  • opencode
  • Copilot CLI
  • Cursor

How it works

Six things happen beside every session.

Capture, verify, arrest, remember, route, receipt. Nothing changes in how you drive the agent.

  1. Session traces
  2. Anchors and verdicts
  3. Memory and routing
  4. Receipts
  1. 01

    Capture

    Hooks and transcript tails from the agent you already run. It reads only after you consent.

  2. 02

    Verify

    Your tests, build, types and lint run as anchors and each returns a verdict.

  3. 03

    Arrest

    Stops the retry loop at the knee, before the next attempt costs more than it is worth.

  4. 04

    Remember

    The reason a check failed is kept as a short note and injected next time.

  5. 05

    Route

    On API-key traffic, a cheaper model where it already passes. Subscription agents keep theirs.

  6. 06

    Receipt

    Signed by your device and by our server. Verifiable offline, by anyone.

Arrests

Stop at the knee, not at the bill.

Every retry is a bet. Mark 1 tracks the odds that the next attempt lands against what it will cost, and stops the loop when the bet is no longer worth it. You see the numbers it used.

The knee: chance the next attempt lands, against its cost The chance that attempt n lands falls with every attempt, from 0.71 on the first to 0.03 on the eighth. The cost of an attempt, as a share of task value, stays flat at 0.14. The curve crosses it at attempt 5, where Mark 1 stops. 0.80.60.40.2 12345678 attempt n stop c(n) / V p̂_LCB(n)
chance the next attempt lands cost of an attempt arrest
attempt
5
p̂_LCB
0.11
c(n) / V
0.14
Illustrative curve. Your numbers come from your own sessions.

The rule

p̂_LCB(n) · V(task) ≤ c(n)

When the lower bound on the chance that attempt n lands, times what the task is worth, is no more than what attempt n will cost, the loop stops. The verdict and the evidence go to you instead of into another retry.

Local caps, whatever the policy says

  • At most 3 blocks in a row
  • Hourly ceiling
  • Pause wins

Verify

Verified by your tools, not by another model.

Anchors are the checks you already have: tests, build, types, lint. Mark 1 runs the ones you consent to and records a verdict: satisfied, violated, refused or error. No second model grading the first.

  • satisfied , the check passed
  • violated , the check failed
  • refused , you did not consent to it
  • error , the tool itself did not run

Each anchor is consented once per tool, bound to the binary it hashes. Revoke any time.

Anchors local catalog
  • ruff check . static default on
  • tsc --noEmit static default on
  • cargo check static default on
  • go vet ./... static default on
  • pytest -q suite opt in
Static checks run by default; test suites only where you turn them on.

Memory

Pitfalls remembered once, injected every time.

When an attempt fails a check, the reason is kept as a short note and handed to the agent the next time it reaches the same place. Notes, not transcripts.

Session 1 violated

pitfallpayments.py

idempotency key required on the charge endpoint

the test that caught it: test_charge_idempotent

The check failed on attempt 2. The reason became a note.

Session 2 injected at start

pitfallpayments.py

idempotency key required on the charge endpoint

the test that caught it: test_charge_idempotent

Handed to the agent before it touches the same endpoint again.

Routing

Cheaper models where they already pass.

On API-key traffic, Mark 1 keeps a ladder per task type and routes to the cheapest model whose measured pass rate holds. Subscription agents keep their model and get everything else.

  1. rung 1 cheap model Routed here while its measured pass rate holds
  2. rung 2 mid model Next rung when the cheap one slips
  3. rung 3 top model Top of the ladder, used when nothing below holds
enforced
API-key traffic passes through Mark 1. The routed model is the model that ran.
steered
Mark 1 sets the model through the agent’s own config, then confirms which model actually served.
advisory
Subscription agents keep their model. The ladder shows what it would have chosen.

Routing only touches traffic that carries your API key. If your agent runs on a subscription, the model is chosen by the subscription and Mark 1 leaves it alone.

Mark 1 Route screen: ladders per task type, route decisions and fidelity tags
Route screen with an API key. Illustrative data.

Proof

Verify Omium. Don't trust it.

Every number on your dashboard traces to a receipt signed by your device and by our server. The verifier is a standalone binary that runs offline. Anyone can check a receipt. Nobody can edit one.

  1. seq000181
    time14:02:07
    hash3c9e0b71d4a2
    device server
  2. seq000182
    time14:02:11
    hashe17f52c0a9b8
    device server
  3. seq000183
    time14:02:11
    hash8a44d1f6e03c
    device server
  4. seq000184
    time14:02:14
    hashb1f4a0c97d21
    device server
  5. seq000185
    time14:02:19
    hash9f3a1c77e0b2
    device server

One receipt

{
  "seq": 185,
  "checkpoint": 4,
  "issued_at": "2026-09-18T14:02:19Z",
  "prev_receipt_hash": "b1f4a0c97d21…",
  "merkle_root": "7d21c4e9a0b5…",
  "device_sig": "ed25519:…",
  "server_sig": "ed25519:…",
  "witness": "pending"
}

Synthetic values, real field names. Hashes shortened for display.

Download the verifier Verifier source and binaries
The Mark 1 Receipts screen: four sealed checkpoints, each with device and server signatures and a witness pending chip, beside a Verify offline panel.
Receipts screen. Device and server signatures, witness pending hourly.
  • coverage band

    How much of the traffic Mark 1 actually saw. Every number carries it.

  • cost basis

    Dollars on API keys, quota on subscriptions. Never mixed in one report.

  • indicative or guarantee-grade

    Below the coverage floor a number is indicative and says so. Guarantee-grade is refused, not softened.

Agents

Works with the agent you already run.

Claude Code, Codex, Gemini CLI, opencode, Copilot CLI and Cursor. Mark 1 attaches through each agent's own hooks and config, never the binary. Pinned versions are listed, and anything it writes can be reverted byte for byte.

  • Claude Code

    Anthropic

    attach
    hooks in settings.json
    detach
    reverts byte for byte
  • Codex

    OpenAI

    attach
    hooks.json
    detach
    reverts byte for byte
  • Gemini CLI

    Google

    attach
    hooks in settings.json
    detach
    reverts byte for byte
  • opencode

    SST

    attach
    plugin
    detach
    reverts byte for byte
  • Copilot CLI

    GitHub

    attach
    env pointer
    detach
    reverts byte for byte
  • Cursor

    Anysphere

    attach
    hooks.json
    detach
    reverts byte for byte

Pinned versions are listed in the app.

Download · macOS · Windows · Linux

Install in under a minute.

Pick your platform. The first run asks for consent before it reads anything.

Mark1-mac-arm64.dmg 161 MB Mark1-mac-x64.dmg 168 MB Mark1-win-x64.exe 133 MB Mark1-linux-x86_64.AppImage 160 MB Mark1-linux-amd64.deb 122 MB

Unsigned build. macOS: right-click the app, choose Open, then Open again. Windows: More info, then Run anyway. Linux: chmod +x the AppImage.

Mark 1 home screen: a session list with token counts, arrests and verdicts beside each run.
Illustrative data

First run

  1. 01 Sign in with Omium.
  2. 02 Pick the agents and projects it may read.
  3. 03 Consent to the checks it runs.

Unsigned build

Signing is in progress. Until it lands, each OS needs one extra step on first open.

macOS
Right-click the app, choose Open, then Open again.
Windows
More info, then Run anyway.
Linux
chmod +x the AppImage.

Pricing · Preview

Two ways your agent pays. Mark 1 knows which.

Subscription agents are priced in quota, so Mark 1 reports tokens and arrests, not dollars. API-key agents get routing too, and dollars appear only when the cost basis is real.

Regime 01

Subscription

Your agent draws on a plan quota. The plan picks the model, so there is no price per token to report.

  • Capture Session traces from the hooks you enable.
  • Verify Your tests, build, types and lint, recorded as verdicts.
  • Arrests Stops the retry loop when the next try is not worth it.
  • Memory Pitfall notes handed back at the same place next time.
  • Receipts Signed checkpoints you can verify offline.
  • Routing Not in this regime. The plan picks the model.

Reports tokens and arrests, not dollars.

Price Preview

Regime 02

API key

Your agent bills per token through your own key, so Mark 1 can see what every attempt costs.

  • Capture Session traces from the hooks you enable.
  • Verify Your tests, build, types and lint, recorded as verdicts.
  • Arrests Stops the retry loop when the next try is not worth it.
  • Memory Pitfall notes handed back at the same place next time.
  • Receipts Signed checkpoints you can verify offline.
  • Routing Per task type, to the cheapest model whose measured pass rate holds.

Reports tokens, arrests and dollars. Dollars appear only when the cost basis is real.

Price Preview

Pricing arrives with the first guarantee-grade reports.

FAQ

Questions.

Which agents does Mark 1 support today?

Claude Code, Codex, Gemini CLI, opencode, Copilot CLI and Cursor. Mark 1 attaches through each agent’s own hooks or config file and never touches the agent binary. The pinned versions it has been tested against are listed inside the app.

What does Mark 1 read, and what does it send anywhere?

It reads only the projects you enable: the agent’s hooks, the tail of its transcript, and the anchors you consent to run. What leaves the machine is typed evidence, verdicts and receipts, plus sanitized diff hunks only if you opt in. Full diffs and source code never leave, and what does leave is pinned to your region.

What is an arrest, and can I turn it off?

An arrest stops the next attempt when another try is likely to cost more than it is worth. Mark 1 arrests at most three times in a row and never more than an hourly ceiling, and if you pause it, the pause wins. The off switch is in Settings.

What counts as a verified outcome?

An outcome your own tests, build, type checker or lint passed. Mark 1 runs the checks you consented to and records the result as a verdict: satisfied, violated, refused or error. No second model grades the first.

Does routing work on my subscription plan?

No. On a subscription your plan picks the model, so there is nothing for Mark 1 to route. It still watches the session, gates retries and remembers what failed, and it still signs receipts. Routing needs an API key, because that is the only regime where Mark 1 can choose the model per task.

Why is the build unsigned, and how do I open it?

Code signing is in progress. Until it lands: on macOS, right-click the app, choose Open, then Open again. On Windows, choose More info, then Run anyway. On Linux, chmod +x the AppImage.

What is a receipt, and how do I verify one offline?

A receipt is a checkpoint over your session events, signed by your device and by our server. The verifier is a standalone binary that runs offline, with no account and no network. Export a receipt from the Receipts screen and anyone can check it without trusting Omium.

Why are some numbers marked indicative?

Until check coverage is above the floor and a noise certificate exists for your setup, Mark 1 cannot stand behind a number, so it labels it indicative. The app says so on every screen where such a number appears. Guarantee-grade numbers arrive once both conditions hold.

Download Mark 1.

Receipts from the first session.

Download