From 8e3b6c8fae5075465a5b8e4e1edf92d1c1cac684 Mon Sep 17 00:00:00 2001 From: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> Date: Thu, 16 Jul 2026 14:34:38 +0530 Subject: [PATCH] site: remove ANF as a product/capability ANF is an internal supporting tool, not a marketed product. Remove the ANF capability card, the /products/acl page and route, the ANF hero, the nav entry, the home preview, and the 90%/132x product claims. Replace the home preview and products slot with the existing Audit capability. Drop stray ACP references in the comparison table and audit page. No grounding claims about a novel format remain on the site. Signed-off-by: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> --- src/App.jsx | 2 - src/components/AclHero.jsx | 390 --------------------------------- src/components/Comparison.jsx | 5 - src/components/Navigation.jsx | 1 - src/components/ProductsAcl.jsx | 29 ++- src/pages/AclPage.jsx | 335 ---------------------------- src/pages/AuditPage.jsx | 4 +- src/pages/HomePage.jsx | 4 +- 8 files changed, 17 insertions(+), 753 deletions(-) delete mode 100644 src/components/AclHero.jsx delete mode 100644 src/pages/AclPage.jsx 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 -

-
- - - - - - - - - - - - {COMPRESSION_ROWS.map((r) => ( - - - - - - - - ))} - -
SourceFixtureRawANFReduction
{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 -

-
- - - - - - - - - - - {ACCURACY_ROWS.map((r, i) => ( - - - - - - - ))} - -
MetricRaw kubectl JSONANFΔ
{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. -

-
- - - - - - - - - {FRONTIER_ROWS.map((r) => ( - - - - - ))} - -
TrackWhat it tests
{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 = {