English · Bahasa Indonesia · 中文
Signed content permissions for the AI web.
Declare, sign, and revoke what AI agents may do with your content — and let agents prove it.
▶ Watch: How AIFeed stops web scraping waste
Website · Protocol flow · Benchmark · Complete guide · Paper (PDF)
--- ## 1-Minute Quickstart **Publisher side — sign what agents may do with your content:** ```bash npx aifeed keygen --out .aifeed # Ed25519 key pair npx aifeed site build ./public --domain example.com \ --key .aifeed/aifeed-private.pem --llms --inject # manifest + page markdown + index npx aifeed validate ./public --domain example.com # verify locally ``` Prefer zero config? `npx aifeed init --domain example.com --dir ./site` creates the keys, a signed manifest, and the DNS/host setup guide in one step. **Agent side — verify any domain in 3 lines:** ```bash npm install @aifeed/verify ``` ```js const { verifyRemote } = require('@aifeed/verify'); const out = await verifyRemote('example.com'); // discovery → signature → DNS anchor console.log(out.result, out.anchor.status); // VERIFIED anchored ``` TypeScript: `import { verifyRemote } from '@aifeed/verify';` Where to go next: [Why AIFeed?](#why-aifeed) · [agent quickstart](docs/agent-quickstart.md) · [publisher AI guide](docs/publisher-ai-guide.md) · [Studio publisher app](studio/README.md) · npm: [`aifeed` CLI](https://www.npmjs.com/package/aifeed) · [`@aifeed/verify`](https://www.npmjs.com/package/@aifeed/verify) ## Why AIFeed? AI agents now drive a large and growing share of web traffic, but the signals that say what they may do are **unsigned text files**. Anyone can edit them, nothing binds them to a domain, and there is no way to revoke them. The asymmetry is measurable: - **1.9 billion** crawls ignored `robots.txt` rules in a single half-year (one vendor). - A **70,900 : 1** crawl-to-referral ratio was measured for a major AI provider. - AI bots averaged **4.2 %** of HTML requests in 2025, peaking at 6.4 %. AIFeed replaces "please respect this file" with a cryptographically verifiable declaration, plus lean agent-ready content that cuts cost on **both** sides. ## How it works 1. **Generate an Ed25519 key pair** — the private key never leaves the origin. 2. **Publish a signed manifest** at `/.well-known/ai.json`: per-use permissions (training, retrieval, quote, …), crawl limits, license, revision. 3. **Anchor the key in DNS** (`_aifeed` TXT) so a manifest cannot be spoofed by another domain. 4. **Agents verify the chain** — TLS → domain → signature (JCS + Ed25519) → DNS anchor — and re-check a **multi-signature revocation registry** on every use. 5. **Rotate keys safely** — announce the successor with an old-key-signed directive (plus an advisory DNS `pk2` cross-check), keep a bounded overlap, cut over, then revoke the old key permanently. Runbook: [`docs/rotation.md`](docs/rotation.md). 6. **Serve lean content** under one of two profiles (below), with a signed **delta index** so unchanged pages cost 0 bytes. **For AI agents:** the check-first guide (discovery → verification → permission decisions → delta → failure handling) is in [`docs/agent-quickstart.md`](docs/agent-quickstart.md), with a runnable example at [`examples/agent/compliant-agent.js`](examples/agent/compliant-agent.js). ## Verify from other stacks Independent Python package (standard library only): ```bash pip install aifeed ``` ```python from aifeed import verify report = verify.verify_directory('./my-site', domain='example.com') print(report['result'], report['errors']) ``` Prefer the repository? The same CLI is here (zero dependencies, Node ≥ 20): ```bash cd aifeed-protocol node bin/cli.js keygen --out keys/ node bin/cli.js validate https://example.com node bin/cli.js site build ./public --domain example.com --key keys/aifeed-private.pem ``` ## Two content profiles | Profile | Media type | Extension | Notes | |---|---|---|---| | **AIFeed Markdown** (native) | `text/aifeed+markdown` | `.aifeed.md` | In-band signed policy block, token budget, translation `alternates`, triage metadata | | **MAKO** (compatibility) | `text/mako+markdown` | `.mako.md` | External MAKO trust profile, served from the same signed bytes with its own signature context | Dual-stack origins serve both; cross-format replay is rejected by design. ## Measured results All numbers are reproducible from committed artifacts (`npm run bench:mako`, `npm run bench:enforcement`); the test environment is a single machine on loopback networking with a synthetic 60-page corpus. Honest baseline included. | What | Result | Label | |---|---|---| | Conversion to markdown profiles vs HTML | **−68.83 %** transferred bytes | measured | | Delta consumption (10 % pages changed) | **−95.73 %** vs HTML crawl | measured | | Publisher egress bytes / CPU / peak connections | **−55.19 % / −56.23 % / −88.24 %** | measured (simulation) | | AI-side received bytes (all profiles / compliant client) | **−54.84 % / −72.93 %** | measured (simulation) | | Unchanged pages skipped | 14 of 18 | measured (simulation) | | Signature verification cost | **0.70 ms / page** | measured | The 30-day live pilot has **not** run yet; projections per 1,000 tenants are labeled as model extrapolations, and vendor claims of up to 94 % token reduction require semantic summarization this project does not perform automatically. ## What's in this repository | Path | Contents | |---|---| | [`lib/`](lib/) + [`bin/`](bin/) | Zero-dependency reference implementation and CLI | | [`packages/`](packages/) + [`clients/python/`](clients/python/) | Published packages: CLI (`aifeed`), SDK (`@aifeed/verify`), MCP server, build plugins (`@aifeed/frameworks`), PyPI `aifeed` verifier | | [`conformance/`](conformance/) | Conformance vectors: 34 manifest · 39 MAKO · 11 AIFeed Markdown | | [`wp-plugin/`](wp-plugin/) | WordPress plugin: signed manifest, AIFeed Markdown + MAKO dual-stack, `/llms.txt` | | [`spec/`](spec/) | Specifications EN/ID: manifest v0.1/v0.2, AIFeed Markdown v1.0 | | [`schema/`](schema/) | JSON Schemas for manifests, signatures, AIFeed Markdown, MAKO | | [`paper/`](paper/) | Preprint: LaTeX source, PDF, claim ledger, arXiv bundle | | [`docs/`](docs/) | Agent quickstart, deploy and namespace guides, Indonesian project notes | | [`studio/`](studio/) | Zero-dependency local publisher app: crawl, declare, build, verify, export, and rotate | | [`docs/REFERENCE.md`](docs/REFERENCE.md) | Reference implementation details, what gets verified, CLI quickstart | ## Documentation - Specifications: [`spec/en`](spec/en) · [`spec/id`](spec/id) · [schemas](schema) - Reference implementation: [`docs/REFERENCE.md`](docs/REFERENCE.md) - Maintenance contract (AI agents & devs): [`AGENTS.md`](AGENTS.md) - Architecture: [`docs/architecture.md`](docs/architecture.md) · Release guide: [`docs/release.md`](docs/release.md) - Agent quickstart (client side): [`docs/agent-quickstart.md`](docs/agent-quickstart.md) - Publisher AI guide (owner side): [`docs/publisher-ai-guide.md`](docs/publisher-ai-guide.md) - Publisher Studio (local app): [`studio/README.md`](studio/README.md) - Agent skill: [`skills/aifeed/SKILL.md`](skills/aifeed/SKILL.md) (installable via ClawHub: `npx clawhub install aifeed`) - Complete guide: [`docs/penjelasan-aifeed.html`](docs/penjelasan-aifeed.html) (source of