+
CommandLayer
+
-
diff --git a/public/sdk-records.html b/public/sdk-records.html
index 432b74e..56f489f 100644
--- a/public/sdk-records.html
+++ b/public/sdk-records.html
@@ -28,10 +28,29 @@
.cta:hover{border-color:rgba(99,91,255,.35);background:#faf9ff}
footer{padding:30px 0 36px;border-top:1px solid var(--border);background:#fff}.footer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.footer-col h4{margin:0 0 10px}.footer-col a{display:block;color:var(--muted);text-decoration:none;margin-bottom:6px}
@media(max-width:960px){.footer-grid{grid-template-columns:1fr}}
-
+.nav-links a:hover,.nav-drop:hover>a,.nav-drop:focus-within>a,.nav-drop>a.active{color:var(--text);background:var(--surface)}.nav-drop{position:relative}.nav-drop>a{display:inline-flex;align-items:center;gap:4px}.nav-drop-menu{position:absolute;top:calc(100% - 1px);left:0;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 34px rgba(15,23,42,.12);padding:8px;display:none;min-width:260px;z-index:200}.nav-drop-menu::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.nav-drop-menu a{display:block;white-space:nowrap}.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{display:grid}@media(max-width:900px){.nav-drop{width:100%}.nav-drop-menu{position:static;display:grid;margin-top:2px;min-width:0;box-shadow:none}}
-
+
+
+
SDK
Add verifiable receipts to agent actions. @commandlayer/agent-sdk wraps agent actions and emits canonical metadata.proof receipts that can be checked by CommandLayer verifiers.
Wrap an agent action, emit a canonical receipt, and verify the proof. Runtime production is live. Runtime signs canonical Trust Verification receipts. MCP E2E against production runtime passes: STEP 1 SIGNED, STEP 2 VERIFIED, STEP 3 TAMPERED INVALID. Runtime signer: signer_id = runtime.commandlayer.eth, kid = vC4WbcNoq2znSCiQ. Canonical proof: metadata.proof.canonicalization = json.sorted_keys.v1, metadata.proof.hash.alg = SHA-256, metadata.proof.signature.alg = Ed25519.
diff --git a/public/stack-proof-demo.html b/public/stack-proof-demo.html
index 3349523..8374b91 100644
--- a/public/stack-proof-demo.html
+++ b/public/stack-proof-demo.html
@@ -33,17 +33,29 @@
.split{display:grid;grid-template-columns:1fr 1fr;gap:14px}
footer{padding:36px 0 44px;color:var(--muted);font-size:14px}
@media(max-width:920px){.nav-links{flex-wrap:wrap;justify-content:flex-end}.grid-3,.split,.flow{grid-template-columns:1fr}.arrow{display:none}}
-
+ .nav-links a:hover,.nav-drop:hover>a,.nav-drop:focus-within>a,.nav-drop>a.active{color:var(--text);background:var(--surface)}.nav-drop{position:relative}.nav-drop>a{display:inline-flex;align-items:center;gap:4px}.nav-drop-menu{position:absolute;top:calc(100% - 1px);left:0;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 34px rgba(15,23,42,.12);padding:8px;display:none;min-width:260px;z-index:200}.nav-drop-menu::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.nav-drop-menu a{display:block;white-space:nowrap}.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{display:grid}@media(max-width:900px){.nav-drop{width:100%}.nav-drop-menu{position:static;display:grid;margin-top:2px;min-width:0;box-shadow:none}}
-
-
-
-
-
+
+
diff --git a/public/trust-verification.html b/public/trust-verification.html
index e90e3b2..47b9d94 100644
--- a/public/trust-verification.html
+++ b/public/trust-verification.html
@@ -34,23 +34,29 @@
.foot-links { display:flex; justify-content:center; gap:28px; font-size:13px; flex-wrap:wrap; }
.foot-links a { color: var(--muted); text-decoration:none; }
.foot-links a:hover { color: var(--text); text-decoration:underline; }
-
+ .nav-links a:hover,.nav-drop:hover>a,.nav-drop:focus-within>a,.nav-drop>a.active{color:var(--text);background:var(--surface)}.nav-drop{position:relative}.nav-drop>a{display:inline-flex;align-items:center;gap:4px}.nav-drop-menu{position:absolute;top:calc(100% - 1px);left:0;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 34px rgba(15,23,42,.12);padding:8px;display:none;min-width:260px;z-index:200}.nav-drop-menu::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.nav-drop-menu a{display:block;white-space:nowrap}.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{display:grid}@media(max-width:900px){.nav-drop{width:100%}.nav-drop-menu{position:static;display:grid;margin-top:2px;min-width:0;box-shadow:none}}
-
-
+
+
diff --git a/public/verify.html b/public/verify.html
index 3bf2350..2555649 100644
--- a/public/verify.html
+++ b/public/verify.html
@@ -30,10 +30,29 @@
.example{margin-top:16px;background:#0f172a;color:#dbeafe;border-radius:14px;padding:14px;overflow:auto;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
footer{padding:30px 0 36px;border-top:1px solid var(--border);background:#fff}.footer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.footer-col h4{margin:0 0 10px}.footer-col a{display:block;color:var(--muted);text-decoration:none;margin-bottom:6px}
@media(max-width:960px){.layout,.cards,.footer-grid{grid-template-columns:1fr}}
-
+.nav-links a:hover,.nav-drop:hover>a,.nav-drop:focus-within>a,.nav-drop>a.active{color:var(--text);background:var(--surface)}.nav-drop{position:relative}.nav-drop>a{display:inline-flex;align-items:center;gap:4px}.nav-drop-menu{position:absolute;top:calc(100% - 1px);left:0;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 34px rgba(15,23,42,.12);padding:8px;display:none;min-width:260px;z-index:200}.nav-drop-menu::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.nav-drop-menu a{display:block;white-space:nowrap}.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{display:grid}@media(max-width:900px){.nav-drop{width:100%}.nav-drop-menu{position:static;display:grid;margin-top:2px;min-width:0;box-shadow:none}}
-
+
+
+
Verifier
Verify agent receipts by proof, not claim. Paste a CommandLayer receipt, inspect its canonical proof, and confirm whether the hash and Ed25519 signature still match.
Receipts are not trusted by claim. They are verified by proof. Runtime production is live. Runtime signs canonical Trust Verification receipts. MCP E2E against production runtime passes: STEP 1 SIGNED, STEP 2 VERIFIED, STEP 3 TAMPERED INVALID. Runtime signer: runtime.commandlayer.eth with kid=vC4WbcNoq2znSCiQ. Canonical proof uses metadata.proof.canonicalization=json.sorted_keys.v1, metadata.proof.hash.alg=SHA-256, and metadata.proof.signature.alg=Ed25519.
What gets checked
Manual verifier checks, not just shape. Receipt structure
Canonical metadata.proof envelope
json.sorted_keys.v1 canonical hash
SHA-256 hash match
Ed25519 signature validity
Signer identity and key id
Supported capability verb
Tamper resistance
A receipt is only verified when hash and signature checks pass. Schema-valid alone is not verified.