SITUSDemoDashboardMailboxesPolicyMandatesGrantsReceiptsVerifyPasskeysDocs

Docs

What Situs Pilot 1 is, and how to build against it.

Situs Pilot 1, as built
Situs Pilot 1 · repo situs, updated 23 Sep 2026 · compared with Situs Strategy and Architecture v4.1 (21 Sep 2026)

What the demo build is, against the design

The strategy doc describes a split-plane trust network: a Situs control plane, data planes inside certified venues, a registry, and relying parties who verify receipts. Pilot 1 is its first slice, enforcement mode on one venue. This page maps every component the doc names to what the build does today, including the operator console added since the first cut: the demo in the browser, a policy editor that publishes signed profile versions, client mailboxes feeding one queue, a live dashboard, and approval from the page, email, a Mac dialog or an iPhone.

Built and tested Present but simulated Not built (later phase) Built beyond the doc Doc's Pilot 1 needs it, build lacks it

The architecture, coloured by what exists

Layout follows the doc's system view (§15–16): request boundary on the left, the Situs control plane and the venue data plane in the middle, relying parties on the right. The line at the bottom is the enforcement-mode path every payment takes.

Named in the doc, deliberately not in Pilot 1

Capability GrantNot phased in the doc
Execution Lease budgetsPilot 1 has expiry + use count only
Watchdog · shadow groupPhase 1, after pilot
Invariant monitor · cross-agent gatePhase 2
Public venue registry · second venuePlatform MVP, month 6
A principal per clientEvery mailbox works under one treasurer's mandate: one principal, one agent
Split gateway · RA-TLSWith L2
Intent compiler · planner · schedulerRuntime mode, Phase 3

Where the build sits on the assurance ladder

Doc §18, "Assurance by degree". Every receipt carries the required and the achieved level.

L0 · Logged

Certified venue, known jurisdiction, signed request and response hashes. Usage claimed.

L1 · Software-attested▲ build reports L1-sim

Doc: build, model, config and policy measured, plus the customer KMS key-release record. The build measures only the gateway's source hash and has no key-release record, so it sits below true L1 and says so in unproven.

L2 · Hardware enclave

TDX or SEV-SNP plus GPU confidential computing, CPU and GPU quotes. Fields present in every receipt, empty and marked.

The doc's Pilot 1 checklist, line by line

From §26, "enforcement mode on one venue, five things and no more", plus its six production requirements and the Pilot 1 surfaces in §13.

Doc requirementStatusIn the build
SDK capture of the request boundary + structured intentdifferentAn OpenAI-compatible gateway instead of an SDK. Same hashes and principal, no code change for the agent.
treasury.v1 with three façadesbuiltbank.readBalance, market.fetch, bank.executeTransfer(grant).
Authority Engine, single-use Action Grants, approval bound to the action hashbuiltDeterministic, no model import (tested). Approver signs the recomputed hash, wherever they approve from.
One enforcement point, broker-injected credentials, minimal egress allowlistbuiltThe agent never holds a bank credential; a grep and a runtime probe both prove it.
Signed evidence chain, portable receipt, offline verifierbuiltFive signatures on an executed transfer; nine checks; tampering fails at the owning party's check.
Bypass test, idempotency key on every grant, "valid as of" verifier, canonical encoding frozen at v0.2builtRetry storm: three retries, one transfer. The key is derived from the payment, and a second grant for the same invoice is refused (duplicate_action), so several agents on the same mailboxes pay each invoice once. RFC 8785 JCS everywhere.
Risk officer authors treasury.v1 limits and signs the certification in the consolepartialLimits, vendors, approvers and lifetimes are edited on the Policy tab and published as a new version signed by the treasurer. The authority and pep verify it before use and refuse everything if it does not verify; mandates signed under an older version stop. Missing: a risk-officer key of its own and a certification statement.
Authority, pep and broker in confidential CPU VMs from day onegapExcluded by the build's own scope lock ("no confidential-VM plumbing"). Written up in docs/DEPLOY.md only.
HSM-held signing keys, admin separationgapService keys are PEM files in ./keys. People can sign with Touch ID or a passkey. Plan in docs/DEPLOY.md.
Maximum stale-trust window per profile, fail closed past itpartialWindow declared (60 s, now editable per profile version) and reported; the verifier warns past it. The pep reads contract status live, so it never runs stale.
Real receiving-system acknowledgment (pacs.002-class)simulatedMock bank signs its own ack with ed25519.

What the console shows

The console at :8080 runs the whole storyline in the browser. It holds no bank secret and mints nothing; its only writes are signatures made with the people's own keys.

Demo
Start an agent. A terminal and a board show every instruction, the message it came from, its outcome and its receipt, then a summary.
Dashboard
Every agent, the common queue, payments waiting for a person, and every instruction, live.
Mailboxes
One mailbox per client. Each message has an id (msg_…) that follows it through the queue (q_…) to its instructions (ins_…) and receipts.
Policy
The treasurer's mandate, and the profile behind it. Editing the profile publishes a signed version.
Mandates · Grants · Receipts
What the authority holds: signed contracts, grants and their status, and each receipt with its proof.
Verify
Check any receipt offline, then tamper with it and watch the owning party's check fail.
Passkeys · Docs
Register Touch ID or an iPhone for the treasurer or approver. Read this page and the developer guide.

Recommended next, in order

These close the gap between this demo and the pilot the doc promises a bank.

  1. A risk-officer key for profile versions, and a certification statement.Versioning, signing, verification and fail-closed loading exist. What is left is a separate key and role, so the treasurer cannot loosen the rules their own mandate sits under, and a signed statement the bank can file.
  2. Confidential VMs and HSM keys for authority, pep and broker.This needs the build's scope lock in CLAUDE.md lifted, then the steps in docs/DEPLOY.md. Until then receipts stay honest at L1-sim.
  3. Fail closed past the stale-trust window anywhere status is cached, and reserve receipt schema slots for shadow and delegation fields now, before v0.2 has external readers.
  4. Keep the queue and workloads across restarts.Mailboxes, mandates and profile versions are saved; the common queue and the running workloads are in memory and end with the console.

The demo, recorded

The terminal recording plays on the published copy of this page, or here with asciinema play demo/demo.cast. Run it yourself on the Demo tab.