diff --git a/src/App.jsx b/src/App.jsx
index 233763b..d824dfc 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -9,7 +9,6 @@ import LegacyHashRedirect from './components/LegacyHashRedirect';
import HomePage from './pages/HomePage';
import ProductsPage from './pages/ProductsPage';
import OperatorPage from './pages/OperatorPage';
-import AclPage from './pages/AclPage';
import AuditPage from './pages/AuditPage';
import BrandStudioPage from './pages/BrandStudioPage';
import NotFoundPage from './pages/NotFoundPage';
@@ -37,7 +36,6 @@ export default function App() {
} />
} />
} />
- } />
} />
{import.meta.env.DEV && } />}
} />
diff --git a/src/components/AclHero.jsx b/src/components/AclHero.jsx
deleted file mode 100644
index 6a0aa90..0000000
--- a/src/components/AclHero.jsx
+++ /dev/null
@@ -1,390 +0,0 @@
-import { useEffect, useState, useRef } from 'react';
-import { motion, AnimatePresence } from 'framer-motion';
-import { Github, ArrowRight, BookOpen, TrendingDown } from 'lucide-react';
-import { useTheme } from '../hooks/useTheme';
-
-const ACL_GITHUB = 'https://github.com/Clawdlinux/agent-native-format';
-const ACL_SPEC = 'https://github.com/Clawdlinux/agent-native-format/blob/main/FORMAT.md';
-
-/* ── The raw → ACL compression demo ── */
-const RAW_JSON = `{
- "kind": "PodList",
- "items": [
- {
- "metadata": { "name": "api-7f4b8c-x7w9" },
- "status": {
- "phase": "Running",
- "containerStatuses": [{
- "ready": true,
- "restartCount": 0
- }]
- },
- "spec": { "nodeName": "node-2" }
- }
- ]
-}`;
-
-const ACL_OUTPUT = `@ns payments
-@source clawdlinux/k8s-translator:0.1.0
-
-pods 5
- api-7f4b8c-x7w9 ready=1/1 node=node-2
- api-7f4b8c-9k2p ready=1/1 node=node-1
- worker-3a2-h5g ready=1/1 node=node-2
- worker-3a2-zq4 ready=0/1 node=node-1
- redis-0 ready=1/1 node=node-3
-
-actions
- scale|rollout|restart|describe|logs`;
-
-const STATS = [
- { label: 'Raw tokens', value: '19,043', sub: 'kubectl JSON' },
- { label: 'ANF tokens', value: '145', sub: 'same namespace' },
- { label: 'Reduction', value: '132×', sub: 'smaller' },
-];
-
-const headingVariants = {
- hidden: { opacity: 0 },
- visible: { opacity: 1, transition: { staggerChildren: 0.09 } },
-};
-
-const wordVariant = {
- hidden: { opacity: 0, y: 28, filter: 'blur(8px)' },
- visible: {
- opacity: 1, y: 0, filter: 'blur(0px)',
- transition: { duration: 0.65, ease: [0.25, 0.46, 0.45, 0.94] },
- },
-};
-
-const containerVariants = { hidden: {}, visible: { transition: { staggerChildren: 0.12 } } };
-const itemVariants = {
- hidden: { opacity: 0, y: 28, filter: 'blur(6px)' },
- visible: { opacity: 1, y: 0, filter: 'blur(0px)', transition: { duration: 0.6, ease: 'easeOut' } },
-};
-
-const withAlpha = (hex, a) => hex + a;
-
-/* Typing effect for the ACL output */
-function TypingText({ text, speed = 25, onDone }) {
- const [displayed, setDisplayed] = useState('');
- useEffect(() => {
- setDisplayed('');
- let i = 0;
- const id = setInterval(() => {
- if (i < text.length) { setDisplayed(text.slice(0, i + 1)); i++; }
- else { clearInterval(id); onDone?.(); }
- }, speed);
- return () => clearInterval(id);
- }, [text, speed, onDone]);
- return <>{displayed}>;
-}
-
-/* Animated token counter */
-function TokenCounter({ from, to, duration = 1500, active }) {
- const [value, setValue] = useState(active ? to : from);
-
- useEffect(() => {
- if (!active) return;
- const start = Date.now();
- const id = setInterval(() => {
- const elapsed = Math.min((Date.now() - start) / duration, 1);
- const eased = 1 - Math.pow(1 - elapsed, 3);
- const next = Math.round(from + (to - from) * eased);
- setValue(next);
- if (elapsed >= 1) clearInterval(id);
- }, 30);
- return () => clearInterval(id);
- }, [from, to, duration, active]);
- return <>{value.toLocaleString()}>;
-}
-
-export default function AclHero() {
- const { currentTheme, theme } = useTheme();
- const t = currentTheme;
- const [phase, setPhase] = useState('raw'); // raw → encoding → acl
- const timerRef = useRef(null);
-
- useEffect(() => {
- const run = () => {
- setPhase('raw');
- timerRef.current = setTimeout(() => setPhase('encoding'), 2200);
- };
- run();
- return () => clearTimeout(timerRef.current);
- }, []);
-
- const handleEncodingDone = () => setPhase('acl');
-
- const darkBg = '#0a0e1a';
- const lightBg = '#f8fafc';
- const termBg = theme === 'dark' ? darkBg : lightBg;
-
- return (
-
- {/* Decorative gradient orbs */}
-
-
-
-
- {/* Badge */}
-
-
- Agent Native Format · v0.1
-
-
- {/* Animated heading */}
-
-
-
- {['Feed', 'agents'].map((w) => (
- {w}
- ))}
-
-
-
-
- 90% fewer
-
-
- tokens.
-
-
-
-
- {/* Rotating stats */}
-
- {STATS.map((s) => (
-
-
- {s.value}
-
-
- {s.label}
-
-
- ))}
-
-
- {/* CTA buttons */}
-
-
-
- Code on GitHub
-
-
-
-
- Read the spec
-
-
-
-
- {/* ── Live encoding terminal ── */}
-
- {/* Title bar */}
-
-
-
-
-
- acl encode kubernetes — live demo
-
- {/* Token badge */}
-
-
-
- tokens
-
-
-
-
- {/* Terminal body */}
-
-
- {phase === 'raw' && (
-
-
- $
- kubectl get pods -n payments -o json | head -20
-
-
- {RAW_JSON}
-
-
- ↑ 19,043 tokens · $0.0037/call
-
-
- )}
-
- {(phase === 'encoding' || phase === 'acl') && (
-
-
- $
- acl encode kubernetes --namespace payments
-
-
- {phase === 'encoding'
- ?
- : ACL_OUTPUT
- }
- {phase === 'encoding' && (
-
- )}
-
- {phase === 'acl' && (
-
- ✓ 145 tokens · $0.00037/call · 132× smaller
-
- )}
-
- )}
-
-
-
-
-
- {/* Scroll indicator */}
-
- scroll to explore
-
-
-
-
-
- );
-}
diff --git a/src/components/Comparison.jsx b/src/components/Comparison.jsx
index 547a111..cdbd7b3 100644
--- a/src/components/Comparison.jsx
+++ b/src/components/Comparison.jsx
@@ -50,11 +50,6 @@ const Comparison = () => {
description: 'SOC 2 and regulator response',
clawdlinux: 'Tamper-evident action ledger',
},
- {
- name: 'Context Compression',
- description: 'Lower prompt cost for tool-heavy installs',
- clawdlinux: 'ACP wrapper for MCP tool discovery',
- },
{
name: 'Deployment Model',
description: 'Air-gapped and offline-first',
diff --git a/src/components/Navigation.jsx b/src/components/Navigation.jsx
index 2263edb..52e0e08 100644
--- a/src/components/Navigation.jsx
+++ b/src/components/Navigation.jsx
@@ -10,7 +10,6 @@ const NAV_LINKS = [
{ label: 'Home', to: '/' },
{ label: 'Capabilities', to: '/products' },
{ label: 'Runtime', to: '/products/operator' },
- { label: 'ANF', to: '/products/acl' },
{ label: 'Audit', to: '/products/audit' },
];
diff --git a/src/components/ProductsAcl.jsx b/src/components/ProductsAcl.jsx
index 1358a81..eedfe9d 100644
--- a/src/components/ProductsAcl.jsx
+++ b/src/components/ProductsAcl.jsx
@@ -1,15 +1,12 @@
import { motion } from 'framer-motion';
import {
Boxes,
- Code2,
+ Shield,
ArrowRight,
CheckCircle2,
- TrendingDown,
Github,
} from 'lucide-react';
import { useTheme } from '../hooks/useTheme';
-
-const ACL_GITHUB = 'https://github.com/Clawdlinux/agent-native-format';
const OPERATOR_GITHUB = 'https://github.com/Clawdlinux/agentic-operator-core';
const CAPABILITIES = [
@@ -30,19 +27,19 @@ const CAPABILITIES = [
accentKey: 'teal',
},
{
- badge: 'CONTEXT CAPABILITY',
- icon: Code2,
- name: 'ANF — Agent Native Format',
- tag: 'Feed agents 90% fewer tokens',
+ badge: 'CORE CAPABILITY',
+ icon: Shield,
+ name: 'Audit and evidence',
+ tag: 'Prove what agents did',
summary:
- 'A compact, machine-native representation of structured data, designed for LLM agents instead of humans. Kubernetes translator ships today; OpenAPI and Postgres compression measured in benchmark, translators in progress. Same fact-extraction accuracy at one-tenth the prompt tokens, validated on a 1,620-trial Anthropic benchmark.',
+ 'Tamper-evident action ledger with an offline verifier, deterministic replay of any agent decision, and OpenTelemetry GenAI traces for cost and failure analysis.',
highlights: [
- { icon: TrendingDown, text: '132× on live K8s namespace (shipped translator)' },
- { icon: TrendingDown, text: '68× on the GitHub OpenAPI spec (benchmarked)' },
- { icon: TrendingDown, text: '3.5× on realistic pg_dump output (benchmarked)' },
- { icon: CheckCircle2, text: 'Spec CC BY 4.0 · Go library Apache 2.0' },
+ { icon: CheckCircle2, text: 'Hash-chained audit log plus audit-verify binary' },
+ { icon: CheckCircle2, text: 'Deterministic replay of historical decisions' },
+ { icon: CheckCircle2, text: 'OpenTelemetry GenAI spans, cost and latency rollups' },
+ { icon: CheckCircle2, text: 'Air-gapped, offline-verifiable evidence' },
],
- cta: { label: 'ANF on GitHub', href: ACL_GITHUB },
+ cta: { label: 'Operator on GitHub', href: OPERATOR_GITHUB },
accentKey: 'teal',
},
];
@@ -61,7 +58,7 @@ const SHARED_THESIS = [
{
title: 'One system',
detail:
- 'ANF compresses tool and system context. Runtime governance enforces controls around agent execution.',
+ 'Runtime governance and a tamper-evident audit ledger enforce controls around agent execution.',
},
];
@@ -132,7 +129,7 @@ export default function ProductsAcl() {
lineHeight: 1.6,
}}
>
- Clawdlinux combines runtime governance and agent-native context for
+ Clawdlinux combines runtime governance and tamper-evident audit for
production AI agents in regulated environments.
diff --git a/src/pages/AclPage.jsx b/src/pages/AclPage.jsx
deleted file mode 100644
index 15e5b0c..0000000
--- a/src/pages/AclPage.jsx
+++ /dev/null
@@ -1,335 +0,0 @@
-import { Link } from 'react-router-dom';
-import { motion } from 'framer-motion';
-import {
- ArrowLeft,
- Github,
- TrendingDown,
- CheckCircle2,
- Code2,
- Terminal,
- Gauge,
-} from 'lucide-react';
-import { useTheme } from '../hooks/useTheme';
-import AclHero from '../components/AclHero';
-
-const ACL_GITHUB = 'https://github.com/Clawdlinux/agent-native-format';
-const ACL_SPEC = 'https://github.com/Clawdlinux/agent-native-format/blob/main/FORMAT.md';
-const ACL_BENCH = 'https://github.com/Clawdlinux/agent-native-format/blob/main/benchmark/agent_accuracy/results/2026-05-09-094833/summary.md';
-const ACP_FRONTIER_BENCH = 'https://github.com/Clawdlinux/agent-native-format/tree/main/benchmark/frontier';
-const BFCL_URL = 'https://gorilla.cs.berkeley.edu/leaderboard.html';
-
-const COMPRESSION_ROWS = [
- { src: 'Kubernetes', fixture: 'live kind cluster (5 pods, 2 deploys, 2 svcs)', raw: '19,043', acl: '145', x: '132×' },
- { src: 'OpenAPI', fixture: 'GitHub v3 spec (1,145 endpoints)', raw: '~3M', acl: '~44K', x: '68×' },
- { src: 'Kubernetes', fixture: 'bundled state.acl fixture', raw: '3,671', acl: '260', x: '14.1×' },
- { src: 'OpenAPI', fixture: 'Swagger Petstore (4 endpoints)', raw: '1,492', acl: '201', x: '7.4×' },
- { src: 'Postgres', fixture: 'realistic 30-table pg_dump -s', raw: '~5,500', acl: '~1,600', x: '3.5×' },
-];
-
-const ACCURACY_ROWS = [
- { metric: 'Fact-extraction accuracy', raw: '93.3% (90.6–95.3)', acl: '93.3% (90.6–95.3)', delta: '+0.0pp' },
- { metric: 'Decision accuracy', raw: '83.3% (79.1–86.8)', acl: '75.0% (70.3–79.2)', delta: '−8.3pp' },
- { metric: 'Mean prompt tokens', raw: '4,553', acl: '446', delta: '−90%' },
- { metric: 'Cost per call', raw: '$0.0037', acl: '$0.00037', delta: '−89%' },
-];
-
-const SHIPPED = [
- 'ANF v0.1 wire-format spec (CC BY 4.0)',
- 'Go ANF encoder library (pkg/anf), consumed by the Kubernetes translator',
- 'Kubernetes translator ships today; OpenAPI and Postgres compression measured in benchmark, translators in progress',
- '1,620-trial agent-accuracy benchmark, fully reproducible',
-];
-
-const FRONTIER_ROWS = [
- { tier: 'Open standard', plan: 'BFCL function-calling tasks mapped into MCP tools/list and ACP manifests' },
- { tier: '1M+ context', plan: 'Long-context model family to test whether bigger windows remove or only hide tool overhead' },
- { tier: 'Medium frontier', plan: 'Sonnet and available GPT-5.x medium-class IDs, pinned per run' },
- { tier: 'Heavy frontier', plan: 'Opus and strongest available GPT-5.x / Gemini-class IDs, pinned per run' },
-];
-
-const ACL_DOC_EXAMPLE = `@ns payments
-@source clawdlinux/k8s-translator:0.1.0
-
-pods 5
- api-7f4b8c-x7w9 ready=1/1 node=node-2
- api-7f4b8c-9k2p ready=1/1 node=node-1
- worker-3a2-h5g ready=1/1 node=node-2
- worker-3a2-zq4 ready=0/1 node=node-1 reason=ImagePullBackOff
- redis-0 ready=1/1 node=node-3 sts=redis
-
-deployments 2
- api replicas=2/2 image=ghcr.io/acme/api:v3.4
- worker replicas=2/2 image=ghcr.io/acme/worker:v1.2
-
-services 2
- api type=ClusterIP port=8080
- redis type=ClusterIP port=6379
-
-actions
- scale|rollout|restart|describe|logs`;
-
-export default function AclPage() {
- const { currentTheme } = useTheme();
- const t = currentTheme;
-
- return (
-
-
-
(e.currentTarget.style.color = t.accent.teal)}
- onMouseLeave={(e) => (e.currentTarget.style.color = t.text.secondary)}
- >
-
- Capabilities / ANF — Agent Native Format
-
-
-
-
-
- {/* Compression table */}
-
-
-
- Compression on real fixtures
-
-
-
-
-
- Source
- Fixture
- Raw
- ANF
- Reduction
-
-
-
- {COMPRESSION_ROWS.map((r) => (
-
- {r.src}
- {r.fixture}
- {r.raw}
- {r.acl}
- {r.x}
-
- ))}
-
-
-
-
- Token counts via tiktoken/cl100k_base. Live K8s number from{' '}
- translators/kubernetes; OpenAPI and Postgres fixtures in{' '}
- benchmark/agent_accuracy.
-
-
-
-
- {/* Accuracy table */}
-
-
-
- Agent accuracy preserved
-
-
- n=1,620 trials on Claude Haiku 4.5, with Wilson 95% confidence intervals
-
-
-
-
-
- Metric
- Raw kubectl JSON
- ANF
- Δ
-
-
-
- {ACCURACY_ROWS.map((r, i) => (
-
- {r.metric}
- {r.raw}
- {r.acl}
- = 2 ? t.accent.teal : t.text.primary, fontWeight: i >= 2 ? 700 : 500 }}>
- {r.delta}
-
-
- ))}
-
-
-
-
- Same fact-extraction accuracy at one-tenth the prompt tokens.
- Decision accuracy is 8.3pp lower at n=360 each — attributable to ANF
- surfacing different signals more prominently, a design tradeoff
- documented in the{' '}
-
- full benchmark summary
- .
-
-
-
-
- {/* What an ANF document looks like */}
-
-
-
- What the agent actually sees
-
-
- A real ANF document for a 5-pod K8s namespace — 145 tokens, 132× smaller than the kubectl JSON equivalent.
-
-
- {ACL_DOC_EXAMPLE}
-
-
-
-
- {/* Try it CLI */}
-
-
-
-
- How it's used today
-
-
- {`import (
- "github.com/Clawdlinux/agent-native-format/pkg/anf"
- k8stranslator "github.com/Clawdlinux/agent-native-format/translators/kubernetes"
-)
-
-doc := k8stranslator.Translate(namespaceView, time.Now())
-anf.Encode(os.Stdout, doc)
-// -> ANF document, ~145 tokens for a 5-pod namespace`}
-
-
-
-
- {/* What ships today */}
-
-
-
-
- What ships today
-
-
- {SHIPPED.map((s) => (
-
-
- {s}
-
- ))}
-
-
-
-
- {/* Frontier benchmark plan */}
-
-
-
-
- Frontier benchmark track
-
-
- The current published numbers are deterministic token-overhead measurements. The next public run uses{' '}
-
- BFCL
- {' '}
- as the open function-calling standard and pins exact frontier model IDs before any model-specific claims are made.
-
-
-
-
-
- Track
- What it tests
-
-
-
- {FRONTIER_ROWS.map((r) => (
-
- {r.tier}
- {r.plan}
-
- ))}
-
-
-
-
- Benchmark plan and result artifact rules live in{' '}
-
- benchmark/frontier
- . Model aliases are not normalized into claims; each run records the exact provider ID used.
-
-
-
-
- );
-}
-
-function th(t) {
- return {
- padding: '12px 14px',
- textAlign: 'left',
- fontWeight: 700,
- color: t.text.primary,
- fontSize: 12,
- letterSpacing: 0.5,
- };
-}
-
-function td(t) {
- return {
- padding: '12px 14px',
- color: t.text.primary,
- };
-}
diff --git a/src/pages/AuditPage.jsx b/src/pages/AuditPage.jsx
index 314f0c3..69cf7c1 100644
--- a/src/pages/AuditPage.jsx
+++ b/src/pages/AuditPage.jsx
@@ -36,7 +36,7 @@ const PILLARS = [
icon: FileLock2,
title: 'Compliance-native traces',
body:
- 'OpenTelemetry GenAI semantic conventions on every span — gen_ai.system, gen_ai.usage.input_tokens, gen_ai.tool.name — plus clawd.* extensions for AgentWorkload, ACP manifest, and LangGraph node attribution.',
+ 'OpenTelemetry GenAI semantic conventions on every span — gen_ai.system, gen_ai.usage.input_tokens, gen_ai.tool.name — plus clawd.* extensions for AgentWorkload and LangGraph node attribution.',
cta: { label: 'Span schema', href: `${REPO_URL}/tree/main/pkg/otel/genai` },
},
{
@@ -52,7 +52,7 @@ const STACK = [
{ name: 'OpenTelemetry Collector', role: 'OTLP receiver, tail sampling, secret redaction' },
{ name: 'Grafana Tempo', role: 'Distributed trace store' },
{ name: 'Prometheus', role: 'Metrics store; cost & latency rollups' },
- { name: 'Grafana', role: 'Curated dashboards: cost, ACP cache, tool failures, LangGraph latency' },
+ { name: 'Grafana', role: 'Curated dashboards: cost, tool cache, tool failures, LangGraph latency' },
{ name: 'ClickHouse', role: 'Analytical trace queries + tamper-evident audit_v1 table' },
{ name: 'Qdrant', role: 'Vector store for clustering and similarity search' },
];
diff --git a/src/pages/HomePage.jsx b/src/pages/HomePage.jsx
index 2ce2590..d6a5235 100644
--- a/src/pages/HomePage.jsx
+++ b/src/pages/HomePage.jsx
@@ -14,10 +14,10 @@ const VALUE_PROPS = [
const CAPABILITY_PREVIEWS = [
{ to: '/products/operator', icon: Boxes, tag: 'Runtime controls', title: 'Control agents in Kubernetes', text: 'gVisor injection, Cilium policy, OPA guardrails, audit trails, and per-workload cost attribution.' },
- { to: '/products/acl', icon: Code2, tag: 'Agent-native context', title: 'Feed agents 90% fewer tokens', text: 'ANF is Clawdlinux\u2019s compact representation for structured data. Kubernetes ships today; OpenAPI and Postgres are benchmarked.' },
+ { to: '/products/audit', icon: Shield, tag: 'Audit', title: 'Prove what agents did', text: 'Tamper-evident action ledger, deterministic replay, and compliance-native traces.' },
];
-const SIGNALS = ['Self-hostable', 'gVisor', 'Runtime-neutral', 'Agent-native data'];
+const SIGNALS = ['Self-hostable', 'gVisor', 'Runtime-neutral', 'Air-gapped'];
const containerVariants = { hidden: {}, visible: { transition: { staggerChildren: 0.12 } } };
const itemVariants = {