AIdenID Glasswing · Test Flight 2026

AIdenID Glasswing

A live operations console for websites and APIs that AI agents call. A site owner mints an agent identity, assigns it scoped work as a delegation grant, watches every request the agent makes receive a deterministic decision with a signed receipt, escalates only the ambiguous actions to a bounded semantic check, and can revoke the agent's authority so its next request is refused.

Built for Glasswing Test Flight 2026 (Boston, 27 September 2026) on top of the owner's pre-existing AIdenID clearance kernel. See "Anything built before this weekend" for the exact boundary.

The problem, and who inside a company has it

AI agents now browse, buy, export and post on behalf of people. A website or API sees a stream of requests and cannot tell which ones are a delegated agent acting inside the scope its owner approved, which ones have exceeded that scope, and which ones should be stopped right now because the owner changed their mind.

The person who owns this problem is the security or platform owner of a website or API that agents call. Today they have three bad options: block all automation, allow all of it, or hand-write rules per integration and hope nobody revokes anything mid-task. None of those produce evidence they can show an auditor afterwards.

Who pays for this and why they'd buy it

The site owner pays. The hypothesis (not proven revenue) is either per-cleared-action metering, where every non-denied decision is a billable unit, or a fixed SaaS plan per protected site. The kernel already meters every non-deny decision and models pricing plans; what is not yet proven is that a named customer will pay for it.

They would buy it because it turns "an agent did something on our site" into four things they can act on: who the agent was, what it was allowed to do, what was decided per request and why, and a signed receipt they can verify later. Revocation that actually stops the next request is the feature that makes the first three worth paying for.

How it works, and where the AI does something regular software couldn't

Deterministic path (no model involved):

  1. Mint. The operator mints an agent identity: an Ed25519 key pair held by the protected site's runner, whose DPoP thumbprint becomes the subject binding. The private key never leaves the server process.
  2. Assign work. The operator issues a delegation grant against the registered demo site with one permission and an expiry. The grant is bound to one route, carries a chain id, and records the authenticated issuer.
  3. Exchange. The runner exchanges the grant for a short-lived DPoP session token bound to the site, the resource, the requested permissions (a subset of the grant) and the chain's revocation epoch.
  4. Decide. Every request through the verifier middleware gets exactly one of six outcomes: allow, throttle, queue, sandbox, deny, price_required. Signatures, audience, resource, expiry, scope and revocation epoch are hard checks.
  5. Record. Each decision is written to a hash-chained outbox and issued a signed decision receipt with a Merkle inclusion proof, before the protected handler runs. The console reads the decision list and a server-sent-event stream.
  6. Revoke. The operator revokes the chain. The grant is marked revoked before anything is published to the outbox (a bus failure still leaves the chain revoked), the revocation epoch increments, the agent's next session exchange is refused, and any effect still waiting on that chain (a queued human approval, for example) is refused at the effect gate.

The operator console at /glasswing on the dashboard drives this workflow. The protected site (apps/protected-site) hosts the demo shop routes, the agent runner and the seven operator endpoints under /glasswing/* that the console reaches through an allow-listed dashboard proxy; the operator token stays server-side. The site embeds the control plane and serves it on its own port, so the site, the console and the decision feed share one store, one revocation epoch and one decision log.

Weekend packages on top of the kernel:

Where the AI matters: Jev runs only on ambiguous actions (the bulk report whose stated purpose may or may not fit the grant). It answers one rubric question with a structured result and an explicit status. A restrictive or non-evaluated result adds a review obligation and escalates to a human in the console. A positive result can never override a deterministic deny, and a timeout, malformed answer or missing provider never becomes a pass. Regular software cannot read "purpose: reconcile last month's invoices" against "permissions: reports:bulk" and say whether they fit; the model can, and the system is built so that its answer is advisory, logged, cache-bound to the exact action, purpose and policy, and bounded.

What's real and what's mocked

Real, running in-process for the demo:

All of that is local evidence. Hosted GitHub Actions are unavailable on this account (billing), so nothing in this repository is a CI-green claim.

Ephemeral or unavailable in the demo, stated plainly:

Nothing in the demo is a recorded replay or a stage override.

How to run it

Requirements: Node 22, pnpm 10 via corepack.

corepack enable
CI=true pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm dev

main at 2107663 (every weekend PR merged) passes locally: frozen install, typecheck, 64 test files / 465 tests, lint, secret scan. Hosted CI does not run on this account, so that is local evidence, not a CI claim; per-PR details are in docs/aidenid-build/evidence/PR-00-navigator.md.

pnpm dev builds the workspace and starts three loopback listeners with ephemeral state and login disabled: the protected site on http://127.0.0.1:4100, its embedded control plane on http://127.0.0.1:4000, and the dashboard on http://127.0.0.1:3000. The Glasswing console is http://127.0.0.1:3000/glasswing. The launcher generates the operator token and the dashboard request token per run and never prints them; details, the full environment contract and the fallback when the site is not built are in docs/aidenid-build/LOCAL_DEVELOPMENT.md. The exact click path for the demo is in docs/runbook.md.

Optional environment, all server-side:

Variable Effect
ANTHROPIC_API_KEY Enables Jev through the Anthropic SDK; forwarded to the protected-site process only. Omit and Jev reports unavailable. Never put it in a client bundle.
JEV_MODEL Overrides the Jev model (default claude-opus-5).
JEV_TIMEOUT_MS Wall-clock budget for one Jev call (default 4000). A slower answer is reported as unavailable and the action still queues for review.
AIDENID_DEV_OPERATOR_TOKEN, AIDENID_DEV_DASHBOARD_REQUEST_TOKEN Fixed secrets (32+ characters, different from each other) for scripting against the operator API. Omit for random per-run values.
AIDENID_CONTROL_PLANE_SESSION_SIGNING_JWK Private Ed25519 JWK JSON (with kid) for the standalone control plane; published as public keys at GET /.well-known/aidenid-session-jwks.json.

Keep every key in .env, never in this repository, chat, logs or a client bundle.

Anything built before this weekend

The first commit on main, prior work (47a68878abbcdcdb53376a26d5f55ea6f080d928), is a byte-identical subset of the owner's private aidenid-clearance repository at commit 0e4553e39e68b50aecbd977544f95d40c4e03de7 (committed 14 August 2026): nine workspace packages (common-schemas, crypto, eventing, policy-engine, transparency, fingerprint-sidecar, verifier-node, control-plane, dashboard) plus the root build files, 268 files in total. Every file in that commit matches its source blob hash; no git history was imported.

Two more pre-weekend files were added later in the merged foundation (PR #7), byte-identical from the same source commit when added: docs/api/openapi.json, which was then edited during the weekend to add the Jev reason codes (PR #9), and docs/dd/artifacts/cascade-latency-2026-05-02.json, which is unchanged.

Everything else after the first commit was written during Test Flight weekend (27 September 2026): the foundation itself (workspace prune, local dev runbook, gates), the revocation fixes and effect gate (withChainAuthority), @aidenid/jev, @aidenid/agent-client, the injectable session signer and JWKS route, operator site scopes on the control plane, the protected site with the Glasswing operator API, the kernel end-to-end test, the Glasswing console, the demo launcher, this README and the runbook.

The Senti CLI and API used by the builders to coordinate are pre-existing tools, not shipped code.