Live · first autonomous PR proven end-to-end

Your issues, fixed while you sleep.

A cloud bot clones your repo, fixes the issue with your own Claude subscription, and opens a proven PR on a heimdall/* branch. You review. You merge. No shared keys. No self-merge.

Nothing ships unproven.

your terminal · anywhere
$ rr "fix the flaky auth test and open a PR" ↳ signed · enqueued to your team's queue cloud maintainer · clones your repo · fixes with your Claude sub PR opened → heimdall/issue/flaky-auth-test gate-PASS · runnable evidence attached · a human merges
BYO Claude subEd25519-signed requestsPer-team secret partitionsNever self-mergesMITFree while we prove it
Onboard

Three commands to your team's first PR.

Prereqs, once: install Heimdall (below), install the GitHub App on your repo, and run claude setup-token for your own Claude credential. Then:

1

Point rr at the control plane

$rr setup --mode control-plane --endpoint <endpoint> --enroll-token <enroll-token>

Writes your mode + endpoint. The enroll token is a one-time bootstrap credential your admin hands out — never your signing key.

2

Mint your signing identity

$heimdall-presence beat

Generates a local Ed25519 keypair and enrolls it. From here on, every request you send is signed — the server derives your team_id from the signature, so you never send it.

3

Connect your Claude sub + GitHub App

$rr connect --gh-app-installation-id <id> --repo <owner/repo>

Two signed POSTs: your Claude credential (write-only, into your team's own Secret Manager partition) and your GitHub App installation. The bot works with your tokens, on your repo.

Then, from any terminal

rr "<task>" — and a proven PR shows up.

The maintainer clones, fixes with your Claude sub, and opens a PR on a heimdall/* branch. It cannot push to main and it cannot merge — that's yours.

The multi-tenant story
The output

What lands on your repo.

Not a diff dumped over the wall — a reviewable PR with runnable evidence and an honest attestation. The autonomy ends at the merge button.

heimdall opened a pull request OPEN · awaiting your review
Heimdall fix: flaky auth test in payments
heimdall/issue/flaky-auth-test → main
falsify · assertion oracle scored a perfect 1.0 lint · tests · green secret-scan · full history clean SI-2 attestation · machine-readable evidence block attached
Opened by Heimdall's issue-resolution loop on a gate-PASS fix. Autonomy ends here — a human reviews and merges. Heimdall does not self-merge.
# scoped bot token · pushes only to heimdall/* · no push to main · no merge
Multi-tenant · falsifiably isolated

A shared control plane you can trust with your keys.

Every request is Ed25519-signed and the team_id is derived server-side — a client cannot claim another team. Each team's Claude cred lives in its own Secret Manager partition, under a per-team daily spend cap. The public surface is enqueue-only and provably cannot dispatch. We wrote a cross-tenant attack oracle — six mutant attacks, each a real breach attempt — and it kills 6 / 6 = 1.0.

Read the receipts
Why the PR is worth merging

The work can't grade its own homework.

Heimdall puts verification gates in front of AI coding agents: every change ships behind an external, falsifiable oracle that must be proven able to go red before it's trusted green. A gate that can't fail proves nothing.

01 · ORACLE

External, falsifiable oracle

Every fix wires a check the implementation can't satisfy by claiming success. It's written so it can actually fail — no test that cannot go red.

02 · GATE

Merge blocked until proven

The PR ships only on a gate-PASS: deterministic checks that go red on failure, not the model's say-so. The verdict rides along as evidence.

03 · DIVISION OF LABOR

Prove with tools, reason with the model

The gates decide with falsifiable checks; the model does the reasoning and generation. Prove with tools, reason with the model.

The receipt

We didn't just claim it. We proved it.

The maintainer opened its first autonomous PR end-to-end on real Cloud Run + Firestore — a gate-PASS fix a human merges. Behind it: the isolation oracle, the reuse engine measured on 8 cold repos against a frozen rubric, and the open bring-up ladder — 29 real bugs, found and fixed before that PR.

See the proof
What the watchman watches

The gate suite.

Every fix — the bot's or your own — runs the same gates before it can ship. Each item below is a shipping binary, grouped by what it guards.

Secrets
secret-scangitleaksPre-commit + pre-push secret detection.
heimdall-selfscanbin/heimdall-selfscanFull-history scan + identity allowlist — the native pre-push hook.
Correctness
oracle / falsify--assert-score 1.0Assertion gates that must score a perfect 1.0 — no partial credit.
corpuscorpusRegression gate across the corpus — yesterday's green stays green.
Hygiene
bloat-gatebloat-gateDead code and bloat caught before it lands.
parallel-gateparallel-gateParallel-safety on concurrent work.
lint-clean · tests-passingLint is clean and the suite is green — or the push waits.
conflict-reflection · code-review · no-dirty-stateMerge-conflict awareness, a review verdict, and a clean working tree.
Delivery
error_tailloud failureFailures report loudly with a tail of the real cause — no silent no-ops.
bounded retries · dead-letterA stuck task retries a bounded number of times, then dead-letters instead of looping forever.
A push is proven only when every gate passes — human or bot. How that holds even with --no-verify
designmatch

Visual-parity gate for React Native screens — your build scored against the design canonical. /hmd:designmatch

Reuse engine

Reuses existing code instead of reinventing it — the part measured to generalize on cold repos.

Self-improvement loop

Runs measured keep/discard experiments on its own routing — the parts that don't help get cut.

hmd --team N

Spawn N parallel Claude workers on one task, locally.

Statusline, everywhere

The watchman HUD self-bootstraps for every teammate on SessionStart — no manual config — and renders across any terminal (Warp, iTerm2, Terminal.app, tmux, screen, VS Code, kitty, Alacritty) via capability tiers (truecolor → 256 → plain).

The CLI

The command reference.

rr drives the cloud maintainer; hmd runs the gates and swarm on your own machine.

rr · hmd help
rr setup --mode control-planepoint rr at the control plane (endpoint + enroll token)
rr connectregister your Claude cred + GitHub App install
rr "<task>"enqueue a task → cloud maintainer opens a PR
heimdall-presence beatmint the Ed25519 signing identity + enroll
heimdall-presence off [--global]go invisible — this repo, or every repo
heimdall-presence on --no-filesstay present, withhold file detail
hmd "build X"run a task end-to-end in the current dir
hmd --team N "task"spawn N parallel workers (tmux)
hmd demothe staged deny→fix→pass first-run
hmd guard installwire the pre-push gate
hmd --updatepull latest from GitHub
hmd versionprint the pinned release tag
/hmd:status/hmd:save/hmd:maintain/hmd:debloat/hmd:designmatch/hmd:bench/hmd:level/hmd:report-bug
Team dashboard · live

See your team's watchmen — live.

A presence wall for your team: who's online, what each watchman is verifying, the file they're on, and how fresh the last beat is. Scoped to the teams you belong to — nothing else.

How to get in

Sign in with your local hmd.

The page shows a one-time device code — run hmd dashboard login <code> in a terminal where hmd is signed in, and your local HAID key proves who you are. No password, no pasted secret: the browser only ever holds a short-lived, server-scoped session token — never a team secret.

Open the dashboard
Install & trust

Install Heimdall. Read it before you run it.

One line installs the CLI that gives you rr, hmd, and the gates. Pinned to a release tag, so what you read in the source is exactly what runs. The gates run local; the cloud maintainer only ever holds your own credentials, in your own partition. Remove it with hmd uninstall.

Free while we prove it — no plans, no cards. Heimdall is free while we earn your trust.

BYO credentials Signed requests No sudo Pinned to a tag MIT
$ curl -fsSL https://raw.githubusercontent.com/randomittin/heimdall/v2.0.16/install.sh | bash
$ less install.sh # short, function-wrapped, no sudo, no prompts
$ rr setup # then onboard in 3 commands, above
Roadmap · not shipping yet

What's next.

A credible roadmap signals direction. None of the below is in the current build — it's here, fenced, on purpose. Recently landed: the first autonomous PR proven end-to-end, multi-tenant rr on a live control plane, per-team BYOC with daily spend caps, the cross-tenant isolation oracle, presence opt-out (per-repo + global invisibility), and the self-bootstrapping statusline — now shipped, no longer roadmap.

Self-serve enroll COMING

A front door that vends a bounded enroll token, so a team can onboard without an admin handing one over. Today: admin-issued tokens.

Per-task status COMING

rr status <task-id> reading the live queue + PR state, so you never poll blind.

Detect-and-fix debloat (v2) COMING

Proposes and performs the cut, not just flags dead code.

Shared team state COMING

Multiple humans on one project, with shared state and conflict awareness. Today: N parallel workers + coordination ledger.