Deterministic before clever
Severity-weighted findings produce the score. A single critical — or anything
under 50 — rejects. A high, or a score under the buyer’s floor, routes to review.
THEMIS (Θέμις) is the signed publish-time gate: approve / review /
reject from a bounded dossier — deterministic policy, request-bound
Ed25519 receipt, no free crawl of the candidate. Not Metis (cognition).
Not WARDEN (invoke-time firewall).
uvx create-aimarket-agent themis --kind tool --metis
WebGL is unavailable here. The gate logic is identical — read the signed verdicts below.
The policy engine decides immediately from identity, transport, permissions, cost, schemas and evidence shape. Metis may add an asynchronous second opinion — it never overrides the signed verdict. Alien Monitor only ever sees dossier-free telemetry.
Severity-weighted findings produce the score. A single critical — or anything
under 50 — rejects. A high, or a score under the buyer’s floor, routes to review.
URLs are parsed, never fetched — so a decorative reference proves nothing and
no longer counts. Only digest-bound artifacts satisfy the evidence floor, and an
attestation is checked offline against its own signed statement.
The response signature covers the exact submitted input and the result, under a
persistent provider key stored with mode 0600.
Modes are off / advisory / enforce. Pin an auditor
key and verdicts are recorded from then on; blocking still takes a deliberate
enforce. THEMIS never lists anything by itself.
Every finding carries ASI mappings from the OWASP Top 10 for Agentic Applications, so a verdict lands in language a security reviewer already uses.
With request_metis the verdict returns instantly and a bounded advisory job
runs behind a poll URL. A shared job store lets any replica answer any poll.
Declared permissions stay a declaration — but the publisher can sign the exact declaration with its provider key. Policy can demand that signature, and a proof over different permissions is a critical finding, not a shrug.
Every report below is the literal output of this repository’s policy engine on
examples/safe_candidate.json
and two mutations of it. The 3D gate above is driven by exactly these numbers.
Four different questions, four different components. Conflating them is how supply-chain controls quietly stop working.
| Component | Question it answers | When it runs | Can it block a listing? |
|---|---|---|---|
| THEMISthis repo | May this third-party capability enter the public catalogue? | Publish time, once per candidate | Yes — when Hub admission mode is enforce |
| Metisverification tier | Is this report internally consistent? | Asynchronously, after the verdict | No — advisory only, never overrides |
| WARDENARGUS firewall | Should this tool call be allowed right now? | Every invoke, on the client side | No — it gates local calls, not the catalogue |
| LUMENtrust graph | How much does the network trust this provider? | Continuously, from observed behaviour | Indirectly — trust floors filter discovery |
Consuming the ecosystem — searching Hub, calling listed capabilities, oracles, Metis — needs no THEMIS at all. You are a buyer. THEMIS is on the selling path.
Listing a paid capability on the public Hub is a multi-layer publish path. THEMIS is only the last, optional overlay on top of gates that are already on in production.
Operator-issued bearer / publisher token. There is no anonymous publish route.
Minimum bond ≈ $25. Failed or unsigned invokes can slash it.
publisher_id, provider_pubkey, HTTPS invoke_url, schemas, price.
Request-bound Ed25519 on every invoke, checked by Hub.
LUMEN thresholds on discovery and invoke, enforced by Hub and clients.
Pin an auditor key and verdicts are recorded (advisory); blocking needs
an explicit enforce.
THEMIS is the finished reference for the five-language create-aimarket-agent tutorial — twelve steps from an empty folder to a deliberate Hub publish, with the same 84 tests and the same fail-closed defaults you see above.
uvx create-aimarket-agent · tool + Metis
Write the product decision before the code
Strict dossier, unknown fields rejected
Deterministic policy → score → tier
Real, lazy, non-blocking advisory
Cover the exact submitted input
Behaviour, not only happy paths
Exercise the business case end to end
Run Metis without blocking the user
Locked deps, unprivileged image
An explicit operator action
Definition of done, then next exercises