Operating Model — integrate against the canonical capability + scope contract.
One schema. One endpoint. Every capability your tenant exposes — bound to the scope, side-effect level, and obligations your runtime promises to honour.
The Operating Model is the developer-facing entry point into the constitution’s Operating Model Rail (§18). You declare what your service can do; KYE™ turns that declaration into a runtime contract that every authorize call resolves against.
What it is
A signed declaration of every capability your service offers.
Your service’s Operating Model is a JSON document (schema: the Operating Model record) that enumerates: every capability id you expose, the side-effect level of each (read, write, destructive, financial), the scope grammar that bounds it, the obligations you commit to (rate-limits, redaction, retention), and the policy bundle that decides the runtime verdict. KYE™ treats this document as the authoritative answer to “what can this service do, and under what conditions?” — every authorize call is evaluated against it.
It’s built once, versioned forever, and replayed offline by any auditor with your JWKS. The constitutional lock at §18 forbids any out-of-band capability declarations elsewhere in your stack.
Schema shape
The five top-level fields.
operating_model_id— canonicalkye:om:<trust-domain>:<subclass>:<local>URN.capabilities[]— capability declarations, each withid,side_effect,scope_grammar,obligations[].policy_bundle_ref— the signed policy bundle (OPA / Cerbos / Cedar) that decides the runtime verdict.signatures[]— one or more Ed25519 signatures over the canonical-JSON encoding.provenance— commit SHA, build attestation, signer chain.
Full schema: https://kyeprotocol.com/schemas/operating_model.v1.json. Reference example: github.com/KYE-Protocol/examples/operating-model.json.
Endpoints
Three endpoints. One contract.
POST /v1/operating-model— publish (or rotate) your signed Operating Model. Returns the canonicalkye:om:…URN.GET /v1/operating-model/:id— fetch any tenant’s declared Operating Model with its signature chain.POST /v1/runtime/authorize— the runtime endpoint that resolves every action against the Operating Model bound to the calling tenant.
Authentication: mTLS + OAuth2 client-credentials. Rate-limit: 60 publishes per tenant per day; reads are unmetered. All three endpoints emit signed audit events in the kye.operating_model.* family.
SDK calls
Same surface in TypeScript, Python, and Go.
All three SDKs expose operatingModel.publish(doc), operatingModel.fetch(id), and runtime.authorize(req) — identical names, identical semantics.
TypeScript
import { KYE™ } from "@kye/sdk";
const kye = new KYE™({ baseUrl: "https://gateway.kyeprotocol.com", keyRef: "kye:kid:acme:2026Q2" });
const om = await kye.operatingModel.publish(myDoc);
const verdict = await the runtime authorize endpoint({ actor, action, scope });
Conformance fixtures
Run the 17 Operating Model fixtures locally.
The conformance pack ships 17 deterministic fixtures covering: publish-and-fetch round-trip, signature verification, scope-grammar edge cases, side-effect classification, obligation enforcement, policy-bundle binding, and replay-proof of the resulting authorize verdict. Run them with npx @kye/conformance-pack-verifier --filter operating_model.
A green conformance run is the canonical L2 self-attestation evidence; an audit-firm-witnessed run produces L3 / L4.
Canonical KYE™ surfaces referenced on this page: KYE™ Conformance Pack™ · KYE Protocol™.