Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<!-- Primary Meta Tags -->
<title>NineVigil — Infrastructure for production AI agents</title>
<meta name="title" content="NineVigil — Infrastructure for production AI agents" />
<meta name="description" content="NineVigil builds open-source infrastructure for AI agents in regulated environments. Two products: Agentic Operator (run agents on Kubernetes, zero-egress) and ACL (feed agents 90% fewer tokens). Both Apache 2.0." />
<meta name="description" content="NineVigil builds open-source infrastructure for AI agents in regulated environments. Two products: Agentic Operator (run agents on Kubernetes, zero-egress, Apache 2.0) and ACP (governed execution contracts + ANF data compression, open specs, source-available core)." />

<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
Expand Down
11 changes: 5 additions & 6 deletions src/components/AclHero.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ 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/ninevigil-acp';
const ACL_SPEC = 'https://github.com/Clawdlinux/ninevigil-acp/blob/main/docs/acl-spec.md';
const ACL_QUICKSTART = 'https://github.com/Clawdlinux/ninevigil-acp/blob/main/docs/quickstart.md';
const ACL_GITHUB = 'https://github.com/Clawdlinux/agent-contract-protocol';
const ACL_SPEC = 'https://github.com/Clawdlinux/agent-contract-protocol/blob/main/FORMAT.md';

/* ── The raw → ACL compression demo ── */
const RAW_JSON = `{
Expand All @@ -26,7 +25,7 @@ const RAW_JSON = `{
}`;

const ACL_OUTPUT = `@ns payments
@source aclk8s/v0.1
@source ninevigil/k8s-translator:0.1.0

pods 5
api-7f4b8c-x7w9 ready=1/1 node=node-2
Expand All @@ -40,7 +39,7 @@ actions

const STATS = [
{ label: 'Raw tokens', value: '19,043', sub: 'kubectl JSON' },
{ label: 'ACL tokens', value: '145', sub: 'same namespace' },
{ label: 'ANF tokens', value: '145', sub: 'same namespace' },
{ label: 'Reduction', value: '132×', sub: 'smaller' },
];

Expand Down Expand Up @@ -162,7 +161,7 @@ export default function AclHero() {
}}
>
<span className="w-1.5 h-1.5 rounded-full animate-pulse" style={{ background: t.accent.teal }} />
Agent Context Language · v0.1
Agent Native Format · v0.1
</motion.div>
Comment on lines 162 to 165

{/* Animated heading */}
Expand Down
4 changes: 2 additions & 2 deletions src/components/Footer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ export default function Footer() {
className="text-xs"
style={{ color: currentTheme.text.muted, fontFamily: "'DM Sans', sans-serif" }}
>
NineVigil · Apache 2.0 · Clawdlinux
NineVigil · Open Source · Clawdlinux
</p>

{/* GitHub only */}
Expand Down Expand Up @@ -391,7 +391,7 @@ export default function Footer() {
className="text-xs text-center sm:text-left"
style={{ color: currentTheme.text.muted, fontFamily: "'DM Sans', sans-serif" }}
>
&copy; {new Date().getFullYear()} NineVigil · Clawdlinux · Apache 2.0
&copy; {new Date().getFullYear()} NineVigil · Clawdlinux
</p>
<div className="flex items-center gap-5">
{[
Expand Down
18 changes: 9 additions & 9 deletions src/components/ProductsAcl.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
} from 'lucide-react';
import { useTheme } from '../hooks/useTheme';

const ACL_GITHUB = 'https://github.com/Clawdlinux/ninevigil-acp';
const ACL_GITHUB = 'https://github.com/Clawdlinux/agent-contract-protocol';
const OPERATOR_GITHUB = 'https://github.com/Clawdlinux/agentic-operator-core';

const PRODUCTS = [
Expand All @@ -21,7 +21,7 @@ const PRODUCTS = [
summary:
'Regulated control layer for agent workloads. gVisor injection, Cilium policy, OPA guardrails, audit trails, and per-tenant budgets.',
highlights: [
{ icon: CheckCircle2, text: 'AgentWorkload path plus kagent pod compatibility' },
{ icon: CheckCircle2, text: 'AgentWorkload path plus external pod compatibility' },
{ icon: CheckCircle2, text: 'Cilium FQDN egress + OPA admission' },
{ icon: CheckCircle2, text: 'Tamper-evident audit chain' },
{ icon: CheckCircle2, text: 'Per-workload OpenMeter cost attribution' },
Expand All @@ -32,17 +32,17 @@ const PRODUCTS = [
{
badge: 'PRODUCT 02 · NEW',
icon: Code2,
name: 'ACL — Agent Context Language',
name: 'ANF — Agent Native Format',
tag: 'Feed agents 90% fewer tokens',
summary:
'A compact, machine-native representation of structured data, designed for LLM agents instead of humans. Three translators ship today (Kubernetes, OpenAPI, Postgres). Same fact-extraction accuracy at one-tenth the prompt tokens, validated on a 1,620-trial Anthropic benchmark.',
'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.',
highlights: [
{ icon: TrendingDown, text: '132× on live K8s namespace' },
{ icon: TrendingDown, text: '68× on the GitHub OpenAPI spec' },
{ icon: TrendingDown, text: '3.5× on realistic pg_dump output' },
{ icon: CheckCircle2, text: 'Spec CC BY 4.0 · SDKs Apache 2.0 · CLI + Python decoder' },
{ 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' },
],
cta: { label: 'ACL on GitHub', href: ACL_GITHUB },
cta: { label: 'ANF on GitHub', href: ACL_GITHUB },
Comment on lines +41 to +45
accentKey: 'teal',
},
];
Expand Down
53 changes: 24 additions & 29 deletions src/pages/AclPage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,10 @@ import {
import { useTheme } from '../hooks/useTheme';
import AclHero from '../components/AclHero';

const ACL_GITHUB = 'https://github.com/Clawdlinux/ninevigil-acp';
const ACL_SPEC = 'https://github.com/Clawdlinux/ninevigil-acp/blob/main/docs/acl-spec.md';
const ACL_QUICKSTART = 'https://github.com/Clawdlinux/ninevigil-acp/blob/main/docs/quickstart.md';
const ACL_BENCH = 'https://github.com/Clawdlinux/ninevigil-acp/blob/main/benchmark/agent_accuracy/results/2026-05-09-094833/summary.md';
const ACP_FRONTIER_BENCH = 'https://github.com/Clawdlinux/ninevigil-acp/tree/main/benchmark/frontier';
const ACL_GITHUB = 'https://github.com/Clawdlinux/agent-contract-protocol';
const ACL_SPEC = 'https://github.com/Clawdlinux/agent-contract-protocol/blob/main/FORMAT.md';
const ACL_BENCH = 'https://github.com/Clawdlinux/agent-contract-protocol/blob/main/benchmark/agent_accuracy/results/2026-05-09-094833/summary.md';
const ACP_FRONTIER_BENCH = 'https://github.com/Clawdlinux/agent-contract-protocol/tree/main/benchmark/frontier';
const BFCL_URL = 'https://gorilla.cs.berkeley.edu/leaderboard.html';
Comment on lines +15 to 19

const COMPRESSION_ROWS = [
Expand All @@ -35,11 +34,9 @@ const ACCURACY_ROWS = [
];

const SHIPPED = [
'ACL v0.1 wire-format spec (CC BY 4.0)',
'Go reference encoder/decoder, round-trip stable + fuzzed',
'Three translators: Kubernetes, OpenAPI, Postgres',
'acl CLI — encode / decode / tokens / version (15MB distroless)',
'Pure-Python acp-acl decoder, optional tiktoken extra',
'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',
];

Expand All @@ -51,7 +48,7 @@ const FRONTIER_ROWS = [
];

const ACL_DOC_EXAMPLE = `@ns payments
@source aclk8s/v0.1
@source ninevigil/k8s-translator:0.1.0

pods 5
api-7f4b8c-x7w9 ready=1/1 node=node-2
Expand Down Expand Up @@ -93,7 +90,7 @@ export default function AclPage() {
onMouseLeave={(e) => (e.currentTarget.style.color = t.text.secondary)}
>
<ArrowLeft size={14} />
Products / ACL — Agent Context Language
Products / ANF — Agent Native Format
</Link>
</div>

Expand All @@ -112,7 +109,7 @@ export default function AclPage() {
<th style={th(t)}>Source</th>
<th style={th(t)}>Fixture</th>
<th style={{ ...th(t), textAlign: 'right' }}>Raw</th>
<th style={{ ...th(t), textAlign: 'right' }}>ACL</th>
<th style={{ ...th(t), textAlign: 'right' }}>ANF</th>
<th style={{ ...th(t), textAlign: 'right' }}>Reduction</th>
</tr>
</thead>
Expand All @@ -131,8 +128,8 @@ export default function AclPage() {
</div>
<p style={{ fontSize: 12, color: t.text.secondary, margin: '12px 0 0' }}>
Token counts via tiktoken/cl100k_base. Live K8s number from{' '}
<code style={{ color: t.text.primary }}>scripts/test-aclk8s-kind.sh</code>; OpenAPI fixtures and{' '}
<code style={{ color: t.text.primary }}>acl</code> CLI in the repo.
<code style={{ color: t.text.primary }}>translators/kubernetes</code>; OpenAPI and Postgres fixtures in{' '}
<code style={{ color: t.text.primary }}>benchmark/agent_accuracy</code>.
</p>
</motion.div>
</section>
Expand All @@ -152,7 +149,7 @@ export default function AclPage() {
<tr style={{ background: t.bg.card }}>
<th style={th(t)}>Metric</th>
<th style={th(t)}>Raw kubectl JSON</th>
<th style={th(t)}>ACL</th>
<th style={th(t)}>ANF</th>
<th style={{ ...th(t), textAlign: 'right' }}>Δ</th>
</tr>
</thead>
Expand All @@ -172,7 +169,7 @@ export default function AclPage() {
</div>
<p style={{ fontSize: 13, color: t.text.secondary, margin: '14px 0 0', lineHeight: 1.6 }}>
Same fact-extraction accuracy at one-tenth the prompt tokens.
Decision accuracy is 8.3pp lower at n=360 each — attributable to ACL
Decision accuracy is 8.3pp lower at n=360 each — attributable to ANF
surfacing different signals more prominently, a design tradeoff
documented in the{' '}
<a href={ACL_BENCH} target="_blank" rel="noreferrer" style={{ color: t.accent.teal }}>
Expand All @@ -182,14 +179,14 @@ export default function AclPage() {
</motion.div>
</section>

{/* What an ACL document looks like */}
{/* What an ANF document looks like */}
<section style={{ padding: '20px 24px 80px', maxWidth: 1100, margin: '0 auto' }}>
<motion.div initial={{ opacity: 0, y: 16 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} transition={{ duration: 0.5 }}>
<h2 style={{ fontFamily: 'Space Grotesk, sans-serif', fontSize: 28, fontWeight: 700, color: t.text.primary, margin: '0 0 8px' }}>
What the agent actually sees
</h2>
<p style={{ fontSize: 14, color: t.text.secondary, margin: '0 0 20px' }}>
A real ACL document for a 5-pod K8s namespace — 145 tokens, 132× smaller than the kubectl JSON equivalent.
A real ANF document for a 5-pod K8s namespace — 145 tokens, 132× smaller than the kubectl JSON equivalent.
</p>
<pre
style={{
Expand All @@ -215,7 +212,7 @@ export default function AclPage() {
<motion.div initial={{ opacity: 0, y: 16 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} transition={{ duration: 0.5 }}>
<h2 style={{ fontFamily: 'Space Grotesk, sans-serif', fontSize: 28, fontWeight: 700, color: t.text.primary, margin: '0 0 8px' }}>
<Terminal size={24} style={{ display: 'inline', verticalAlign: '-3px', marginRight: 8, color: t.accent.teal }} />
Try it in 30 seconds
How it's used today
</h2>
<pre
style={{
Expand All @@ -231,16 +228,14 @@ export default function AclPage() {
margin: 0,
}}
>
<code>{`git clone https://github.com/Clawdlinux/ninevigil-acp
cd ninevigil-acp
make build-acl
<code>{`import (
"github.com/Clawdlinux/agent-contract-protocol/pkg/anf"
k8stranslator "github.com/Clawdlinux/agent-contract-protocol/translators/kubernetes"
)

# Compress a real OpenAPI spec
bin/acl tokens pkg/aclhttp/testdata/petstore.json
# tokens: 1492 (cl100k_base)

bin/acl encode openapi pkg/aclhttp/testdata/petstore.json | bin/acl tokens -
# tokens: 201 (cl100k_base)`}</code>
doc := k8stranslator.Translate(namespaceView, time.Now())
anf.Encode(os.Stdout, doc)
// -> ANF document, ~145 tokens for a 5-pod namespace`}</code>
</pre>
</motion.div>
</section>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/AuditPage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,7 @@ open http://localhost:3000`}</pre>
</p>
</div>
<a
href="mailto:hello@clawdlinux.org?subject=Audit%20pilot"
href="mailto:team@clawdlinux.org?subject=Audit%20pilot"
style={{
display: 'inline-flex',
alignItems: 'center',
Expand Down
10 changes: 5 additions & 5 deletions src/pages/HomePage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ const GITHUB_ORG = 'https://github.com/Clawdlinux';

const VALUE_PROPS = [
{ icon: Shield, title: 'Regulated controls', text: 'gVisor isolation, audit trails, and policy gates for agents that touch private data.' },
{ icon: Lock, title: 'Open source first', text: 'Apache 2.0 cores. CC BY 4.0 specs. Self-host, fork, audit. No surprise vendor lock-in.' },
{ icon: Boxes, title: 'Runtime compatible', text: 'Use the built-in AgentWorkload path or add controls around kagent-managed pods.' },
{ icon: Lock, title: 'Open source first', text: 'Apache 2.0 operator core. Open specs (CC BY 4.0) and SDKs. Self-host, fork, audit. No surprise vendor lock-in.' },
{ icon: Boxes, title: 'Runtime compatible', text: 'Use the built-in AgentWorkload path or add controls around any labeled agent pods.' },
];

const PRODUCT_PREVIEWS = [
{ to: '/products/operator', icon: Boxes, tag: 'Operator', 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: 'ACL', title: 'Feed agents 90% fewer tokens', text: 'Compact agent-native representation format. Three translators ship today: Kubernetes (132\u00d7), OpenAPI (68\u00d7), Postgres (3.5\u00d7).' },
];

const SIGNALS = ['Apache 2.0', 'gVisor', 'kagent-compatible', 'Agent-native data'];
const SIGNALS = ['Self-hostable', 'gVisor', 'Runtime-neutral', 'Agent-native data'];

const containerVariants = { hidden: {}, visible: { transition: { staggerChildren: 0.12 } } };
const itemVariants = {
Expand Down Expand Up @@ -98,7 +98,7 @@ export default function HomePage() {
</motion.h1>

<motion.p variants={itemVariants} className="text-lg sm:text-xl max-w-2xl mx-auto mb-10" style={{ color: t.text.secondary, lineHeight: 1.65, fontFamily: "'DM Sans', sans-serif" }}>
Add isolation, audit, and cost controls to agents in your cluster. Works with NineVigil AgentWorkload or kagent pods.
Add isolation, audit, and cost controls to agents in your cluster. Works with any Kubernetes-native agent runtime.
</motion.p>

<motion.div variants={itemVariants} className="flex gap-3 justify-center flex-wrap mb-10">
Expand Down Expand Up @@ -242,7 +242,7 @@ export default function HomePage() {
Put regulated controls around your agents.
</motion.h2>
<motion.p variants={itemVariants} className="text-base sm:text-lg mb-8" style={{ fontFamily: "'DM Sans', sans-serif", color: t.text.tertiary, lineHeight: 1.65, maxWidth: 760 }}>
Evaluate NineVigil controls, ACL, or both against a real regulated workload. Start with the smallest useful pilot.
Evaluate NineVigil controls, ANF, or both against a real regulated workload. Start with the smallest useful pilot.
</motion.p>
<motion.div variants={itemVariants} className="flex gap-3 flex-wrap">
<motion.div whileHover={{ y: -2, scale: 1.02 }} whileTap={{ scale: 0.98 }}>
Expand Down