Declaration Studio
Rules in seven blocks, versioned. Every proof record names the declaration and version it was checked against.
For platform and integration teams
No product builds its own gates, approval store, proof or meter.
To give an AI agent write access safely, route every write through one path that the agent cannot bypass. With elan1, agents send a write intent through KernelPort, MCP or HTTP; the kernel checks it, holds it for approval where rules ask, commits it with a short-lived single-use credential and records it. Refusals come back typed.
01One control plane
Where does the allow live, and what do I build against?
In elan1 Govern, behind KernelPort v1: define · assert · seal · verify · scope · refuse. Call it in-process through the SDK (Mode A, enforced) or through the MCP server and HTTP API (Mode B, attested advisory). Rungs 3 to 8 cannot reach a model client.
In-process through the SDK. elan1 holds the write credential: no write reaches the system of record without a gate decision and a proof record.
Through the MCP server and the HTTP API, for the agents you already run. Every write intent is evaluated against your rules and recorded; it is not blocked.
02KernelPort v1
Work and Decide reach Govern through KernelPort. Third-party agents connect over MCP or HTTP. Summaries below; the reference is in Docs.
defineRegister a declaration: a process's rules in seven blocks, versioned.assertSubmit a typed write intent to climb the Right Path.sealWrite the proof record for the outcome: Seal v6, sixteen fields.verifyRecompute a record, or a stretch of the chain, against its digests.scopeAsk what an actor may do: the write types and autonomy ceiling in force.refuseReturn a typed refusal code from the frozen register, with its record.03What you see
Rules in seven blocks, versioned. Every proof record names the declaration and version it was checked against.
Codes from a frozen register; each still writes a record. Your agent gets a reason it can act on, not an exception.
kernelport/v1, elan1.proof.seal.v6, action-receipt/1. Build once; the shapes do not drift under you.
Ten fusion.*/v1 contracts in elan1 Run, two licence-clean implementations each. Swap a component without rebuilding.
04One write, three views
Choose a tab to switch views. On a keyboard, the arrow keys move between tabs.
An accounts-payable agent at Kolam Components* proposes posting purchase invoice pinv_specimen_0418 for ₹4,82,000. It sends a typed write intent through KernelPort’s assert call. elan1 Govern runs the Right Path. At rung 3 the GST gate (G4) finds that the invoice charges 12% where the rate table says 18%, so the write is refused with a typed code.
No model took part in the check. The proof record is still written, and the meter shows 0.4 of a governed action: ₹0.64 at L1, beyond the allowance.
// KernelPort v1 · assert · illustrative
{
"kernelport": "v1",
"call": "assert",
"write_intent": {
"write_id": "wr_specimen_7c3",
"tenant_id": "tnt_specimen_01",
"write_type": "purchase_invoice.post",
"declaration": { "id": "decl_gst_purchase", "version": 4 },
"actor": { "id": "agt_specimen_ap01", "kind": "agent" },
"autonomy_level": "A1",
"target": { "record_id": "pinv_specimen_0418", "expected_version": 0 },
"payload": {
"vendor": "vnd_specimen_0091",
"amount_inr": 482000,
"hsn": "8483",
"gst_rate_pct": 12
}
}
}
// response
{
"outcome": "refused",
"code": "G4_GST_RATE_MISMATCH",
"rung": "3 PRE-GATES",
"seal": "elan1.proof.seal.v6",
"seq": 1043,
"metered_inr": 0.64 // 0.4 of a governed action, at L1 beyond the allowance
}Payload fields are examples, not the published schema. Frozen identifiers: kernelport/v1, elan1.proof.seal.v6, action-receipt/1.
G4_GST_RATE_MISMATCH (illustrative) · proof record written · metered: 0.4 governed actionIllustrative specimen. Not customer data. *Kolam Components is a fictional company; all data is illustrative.
05The rules
One kernel.
Gates, approvals, proof and the meter live in elan1 Govern. No product builds its own.
A model never produces an allow.
A model may produce a write intent. Rungs 3 to 8 cannot reach a model client; evaluate() applies versioned rules.
No claim before conformance.
A third-party agent may not claim to run on elan1 Govern until conformance tests C1–C14 pass.
06Platforms and limits
One write path, four layers
Work and Decide propose. Govern and Run assure. Only Govern allows.
Read next
Reference architecturePlanes P0–P8 and the Right Path, rung by rung.Integrationsfusion.*/v1 contracts, MCP and HTTP, and modes.elan1 Run SubstitutionSwap a component without rebuilding.elan1 Run ContractsTen fusion.*/v1 contracts, two implementations each.elan1 Run ConformanceSuite K1–K7, runs offline.What elan1 Run costsPer node and per GPU per year, exclusive of GST.NIST AI RMFMapped to the four functions, with gaps.What we don’t do for you
07FAQ
Not standing write access. An agent should propose a write intent, and one component that the agent cannot bypass should check it, hold it for approval where your rules ask, and commit it. In elan1 that component is the kernel, which writes with a 10-minute, single-use credential and records every outcome.
Keep the write credential away from the agent. In Mode A, elan1 holds the credential, so no write reaches your system of record without a gate decision and a proof record. Over MCP or HTTP without the credential (Mode B), every write intent is evaluated and recorded, but elan1 cannot stop a write made around it.
Three ways in: KernelPort in-process, the elan1 MCP server and the HTTP API, so any agent framework that can call MCP or HTTP works. That is Mode B: every write intent is evaluated against your rules and recorded. To have writes enforced, call KernelPort in-process through the SDK with elan1 holding the write credential (Mode A).
A typed refusal envelope, not an error. Your agent gets a code from a frozen register and the rung where the write stopped, so your code can handle it. A proof record is still written, and the meter shows 0.4 of a governed action.
No. Rungs 3 to 8 cannot reach a model client. evaluate() applies versioned rules; the guardrail measures blast radius; above the autonomy ceiling a named person decides.
kernelport/v1, elan1.proof.seal.v6 and action-receipt/1 are frozen identifiers. A change ships under a new identifier, never by editing the old one.
Read the architecture, then the KernelPort reference in Docs. For a technical session, use the contact page and choose the technical topic.
// FOR BUILDERS
One write intent, every rung, and the record it leaves. You advance it.