Interactive widgets · live demos, no signup

Every KYE Protocol surface, live on the page.

Five interactive widgets in one place. Pick your role and self-route. Simulate an agent-backed purchase and watch the runtime decide. Explore the Decision Map chain. Map the blast radius of a compromise. Replay an evidence pack. No signup, no install — change the inputs and the runtime semantics become tangible.

Widget 1 · Choose your role

Self-route in five seconds.

Nine role cards, each routing to the right entry page on the site. Banks land on the agent-purchase simulator. CISOs land on the Blast Radius Map. Auditors land on the Evidence Pack Viewer. Builders land on the Build surface.

Embed it

Drop the widget host into any HTML page and the role-router renders.

<!-- KYE Choose-Your-Role router -->
<div data-role-router></div>
<script type="module" src="https://kyeprotocol.com/main.js"></script>
Widget 2 · Agent-purchase simulator

Change the inputs. Watch KYE decide.

Seven inputs — agent state, customer authority, merchant, basket amount, approval threshold, card / token state, risk state. Four live outputs — runtime decision, Decision Map, signed webhook event, evidence-pack preview. Decision logic is rule-based for clarity; production runtime mechanism stays on the patent track.

The real call

The simulator above is illustrative. In production, your app makes one POST to the KYE Runtime Authority API:

curl -X POST https://gateway.kye.example/v1/runtime/authorize \
  -H 'Authorization: Bearer $KYE_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "actor_entity_id":     "kye:entity:agent:shopping_agent_456",
    "principal_entity_id": "kye:entity:person:customer_123",
    "subject":             "kye:capability:payment_action:card_purchase",
    "resource":            { "merchant_id": "M-7104", "amount": 9999, "currency": "GBP" },
    "scope":               { "instrument": "kye:card_token:tok_abc..." }
  }'

# → 200 OK
# {
#   "decision":  "allow_with_constraints",
#   "reason":    "scope_within_attenuated_authority",
#   "obligations":     [ { "type": "audit.emit" }, { "type": "basket_hash_binding" } ],
#   "stop_conditions": [ "actor.stop_signal", "delegation.revoked", "scope.attenuated" ],
#   "evidence_refs":    [ "kye:evidence-pack:01HX..." ],
#   "decision_map_ref": "kye:decision_map:01HX..."
# }

SDK

import { KyeClient } from '@kye-protocol/sdk';

const kye = new KyeClient({ baseUrl: process.env.KYE_GATEWAY, token: process.env.KYE_TOKEN });

const result = await kye.runtime.authorize({
  actor_entity_id:     'kye:entity:agent:shopping_agent_456',
  principal_entity_id: 'kye:entity:person:customer_123',
  subject:             'kye:capability:payment_action:card_purchase',
  resource:            { merchant_id: 'M-7104', amount: 9999, currency: 'GBP' },
  scope:               { instrument: 'kye:card_token:tok_abc...' },
});

if (result.decision === 'allow_with_constraints') {
  // honour result.obligations + result.stop_conditions
} else if (result.decision === 'require_approval') {
  // queue human approver, retry with same policy_decision_id
}
Widget 3 · Decision Map viewer

Every decision comes with a map.

The runtime emits a signed Decision Map with every /v1/runtime/authorize response. Below: a sample chain — principal → delegation → actor → capability → scope → state → policy → decision, bound to audit_ref + evidence_refs.

Render it yourself

import { renderDecisionMap } from '@kye-protocol/sdk/widgets';

renderDecisionMap(document.querySelector('#dm-host'), {
  decision: 'allow_with_constraints',
  reason:   'scope_within_attenuated_authority',
  nodes: [
    { type: 'principal',  ref: 'kye:entity:person:customer_123',           short: 'customer_123' },
    { type: 'delegation', ref: 'kye:delegation:tpp_to_agent_002',          short: 'tpp_to_agent_002' },
    { type: 'actor',      ref: 'kye:entity:agent:shopping_agent_456',      short: 'shopping_agent' },
    { type: 'capability', ref: 'kye:capability:payment_action:card_purchase', short: 'card_purchase' },
    { type: 'scope',      ref: 'kye:scope:eu_eea_corridor_below_500_gbp',  short: '≤ £500 EU/EEA' },
    { type: 'state',      ref: 'kye:state:active',                         short: 'active' },
    { type: 'policy',     ref: 'kye:policy:agent_purchase_v1',             short: 'agent_purchase_v1' },
  ],
  audit_ref:     'kye:audit:event_001',
  evidence_refs: ['kye:evidence-pack:authority_revocation_001'],
});
Widget 4 · Blast Radius Map

See what breaks before it breaks.

Pick a compromised credential, agent, capability, delegation, or principal. The Blast Radius Map shows the downstream agents, payment authorities, capabilities, sessions, and webhooks that fan out — plus the required revocations a runbook should execute.

The cascade event

When KYE emits a revocation, every subscriber receives the same signed envelope:

{
  "schema_version":  "kye.webhook.v1",
  "event_id":        "kye:event:01HX...",
  "event_type":      "kye.authority.revoked",
  "occurred_at":     "2026-05-07T21:30:00Z",
  "actor_entity_id":     "kye:entity:agent:shopping_agent_456",
  "principal_entity_id": "kye:entity:person:customer_123",
  "subject_ref":     "kye:authority:grant:purchase_001",
  "reason_code":     "principal_revoked_authority",
  "data": {
    "previous_state":        "active",
    "new_state":             "revoked",
    "affected_capabilities": ["kye:capability:payment_action:card_purchase"]
  },
  "audit_ref":     "kye:audit:event_001",
  "evidence_refs": ["kye:evidence-pack:authority_revocation_001"],
  "delivery":  { "idempotency_key": "kye:event:01HX...", "replayable": true },
  "signature": { "algorithm": "ed25519", "key_id": "kye:key:webhook_signing_001",
                 "signature": "..." }
}
Widget 5 · KYE Evidence Pack Viewer

Replay decisions, verify signatures, map to controls.

Pick a sample evidence pack. Verify its signature offline against the publisher's published JWKS. Replay the bound Decision Map against the snapshot inputs. Walk the audit chain. Project the pack onto SOC 2, ISO 27001, EU AI Act, PSD3, or DORA controls via the KYE Compliance Mapping Rail.

Verify offline

import { verifyEvidencePack } from '@kye-protocol/sdk';

const pack = await fetch('/v1/evidence-packs/01HX...').then(r => r.json());

// Pull the publisher's JWKS once and cache it.
const jwks = await fetch('https://issuer.example/.well-known/jwks.json').then(r => r.json());

const result = await verifyEvidencePack(pack, jwks);
//   result.valid         // boolean
//   result.algorithm     // "ed25519"
//   result.key_id        // "kye:key:evidence_signing_001"
//   result.replay_decision // re-run the bound /v1/runtime/authorize against the
//                          // snapshot inputs; returns the same decision the pack
//                          // recorded — a mismatch emits kye.decision.replay_mismatch.

if (!result.valid) throw new Error('evidence pack signature invalid');
For your role

Where to go next.

Ready to see your AI agents flagged?

Start in shadow mode. We’ll deliver your first Evidence Pack in 4–8 weeks.