Signed policy
A pinned publisher key, verified artifacts, and a rollback floor define the session’s governance baseline.
mistwire.io governance for AI sessions
Governance loads before work starts, and monitors itself while your agent works. How it works
Connected session surface
The governance connection establishes a repeatable working environment across AI sessions in the same workspace.
A pinned publisher key, verified artifacts, and a rollback floor define the session’s governance baseline.
The signed bundle supplies the same verified workflow library to every governed session that installs it.
Connected sessions read and write the same remote workspace memory without using local project files as the memory store.
The installed hook set applies the same local controls to governed sessions running in that environment.
observe → adjudicate → countersign
Verification
The evaluation path exposes the trust root, exact attestation payload, artifact digests, rollback state, and signed receipt. Each check can be performed outside the service’s own presentation layer.
Read /v1/trust, verify the publisher key ID through a separate channel, then enroll with --expect-publisher-key-id. Omitting that option leaves the first connection as trust on first use.
On every pull, the client verifies the bundle signature and re-hashes each artifact against the signed manifest before installation.
mw-govctl attest --print-payload prints the literal signed bytes transmitted by the client, including each observation the service will adjudicate.
An independent verifier can check a receipt with the receipt key in the trust root. The client also refuses a bundle older than its installed rollback floor.
Evaluate first
Everything below runs with no account, no token, and nothing installed. The signed material is public on purpose: handing it to a stranger costs nothing, and verifying it is the whole point. Read what we would put on your machine, and check that the bytes match what we signed, before you decide whether any of this deserves your trust.
Two roots: one verifies the bundles we publish, one verifies the receipts we issue.
curl -sS https://governance.mistwire.io/v1/trust
The machine-readable contract, including the limits. It is generated from the same constants the server enforces, so it cannot describe behavior the service does not have.
curl -sS https://governance.mistwire.io/v1/bootstrap
Every artifact, its kind, and the file mode it installs with. Nothing here is a surprise at install time.
curl -sS https://governance.mistwire.io/v1/bundle/stable
Artifacts are content-addressed. Take a sha256 from the manifest above and fetch those exact bytes.
curl -sS https://governance.mistwire.io/v1/blob/<sha256>
Recompute the digest yourself. If it differs from the manifest, the artifact was substituted — and this is the check the client performs on every pull, which is why the blob endpoint can be public and cached without being trusted.
curl -sS https://governance.mistwire.io/v1/blob/<sha256> | shasum -a 256
Registering a key is the first step that needs a credential, and it is the one step a machine cannot do alone — deliberately. Without it, whoever answered first would become trusted. Request an invite code: you pick your name, it is reserved on the spot, and the code is issued immediately. Everything after it is automatic.
Connection paths
The MCP endpoint exposes the full governance surface to an agent session and requires nothing installed. The CLI is the same protocol with a client written for you. The session harness treats a failed policy load or identity registration as a terminal bootstrap failure.
Two paths. The MCP endpoint needs nothing installed and is the one to start with; the CLI is the same protocol with a client written for you. A complete governed session also attaches the workspace memory service and uses the locally installed shared skills and hooks.
MCP · nothing to install
Every step runs over this one transport. An agent that can make HTTPS requests and write files needs no client from us.
https://governance.mistwire.io/mcp
governance_enroll
governance_get_trust_root
governance_get_bundle
governance_submit_attestation
governance_enroll takes the operator token in the
Authorization header, not as a tool argument — arguments are
mirrored into Mcp-Param-* headers so an edge can route without
reading bodies, which would copy a credential somewhere intermediaries log.
An agent that wants the whole contract in one fetch, before it has
enrolled or trusted anything, can read
/v1/bootstrap.
CLI · enroll / pull / attest
Not distributed yet. The client is written and tested but has no published build, so these commands are shown for shape rather than to run today. The MCP path above does the same work with nothing to install.
curl -sS https://governance.mistwire.io/v1/trust
export MW_GOV_ENROLL_TOKEN='<invite-code>'
mw-govctl setup \
--server https://governance.mistwire.io \
--expect-publisher-key-id <verified-key-id>
mw-govctl attest --print-payload
One command does enroll, pull, and attest. The invite code carries the name you chose when you requested access, and that name wins over whatever the client asks for — which is what stops two testers being promised the same identity. Without an invite, the label defaults to an opaque identifier rather than your hostname, because the label is the one field on the wire you could over-share in.
Runtime boundary
Start and resume events require a successful governance load. After that gate, installed hooks make local decisions inside the agent harness. Policy, memory, and evidence traffic travel separately from model and tool requests.
solid = local request · dashed = governance traffic
Required governance policy and identity checks complete before the session may work.
The installed hook evaluates each governed action on the customer’s machine.
Local hooks remain active. A required refresh failure ends the session; remote memory and new evidence are unavailable while disconnected.
Data disclosure
The supplied client walks the signed manifest rather than enumerating the customer’s filesystem. Its attestation schema reports metadata for the artifacts this service published into its own governance directory.
mw-govctl attest --print-payload prints the literal bytes transmitted. This is the most direct way to review the disclosure for a specific machine before submitting it.
Received by the service
The customer controls the only free-form identifier: the enrollment label.
Cannot be received through mw-govctl
mw-govctl has no filesystem enumeration step and sends no content field.
The shared workspace memory service receives content only when a connected session explicitly writes a memory. Those writes do not travel through mw-govctl, are not part of an attestation, and do not create memory files in the local project. Memory-service retention is separate from the enrollment and receipt stores described above.
Cost
Saying this up front rather than in a footnote, because finding out later is the part people resent. There is no charge today and no way for you to be charged today — and this will become a paid service once it leaves beta.
Alpha and beta access is free. We collect no payment method, so there is no mechanism by which a charge could reach you — not an intention, an absence of plumbing.
Nothing converts to a paid plan on its own. When pricing exists you will be told, in advance, and the service keeps working under whatever terms applied when you enrolled until you agree to new ones.
We have not set one. Anyone quoting you a figure for this is guessing. What we can say is the shape: this is a control plane, not a proxy, so it is not priced per token or per model call.
Every receipt you have already received stays verifiable without us — they are signed, and the public key that checks them is published. Evidence you collected during the free period does not expire when access does.
Honest limits
This proof of concept separates customer-signed observations from a service-signed verdict. That separation improves attribution while leaving the customer in control of the machine that produces the observations.
If a customer deletes a hook and signs an observation claiming the expected digest and mode, the service can return Compliant. The service does not prevent or detect that lie.
The resulting evidence is specific: the signed observation and countersigned receipt bind the claim to an enrolled agent key, a bundle, a time, and a verdict. A retained observation and receipt support later attribution and cryptographic non-repudiation. The service does not persist its copy, and the signatures do not establish that the observation was truthful.
The design currently depends on one process and does not support horizontal scaling.
Enrollments, invites, and read tokens survive a restart. Replay state and the service’s receipt store do not — they are in memory, and a restart clears both.
Tenant isolation and per-tenant trust roots are not implemented.
There is no workflow to issue, overlap, revoke, or replace signing keys.
Three doors, one answer. An agent signs a request and calls /v1/me or runs mw-govctl me; a person pastes their read token at /me. All three read the same assembly function on the server, so a human and their agent cannot be shown different accounts of the same identity.
The response is the whole record: the enrolled key, the invite it came from, everything typed on the access-request form, and the receipts still held. It also states what is not retained and what exists outside the view — listed because a page showing only what we keep would read as exhaustive when it is not.
--print-payload remains the other half: it shows the bytes leaving your machine, where me shows the records held on ours.