Back to Directory/Security & Auth

AIFeed

Verify signed AIFeed permissions, fetch token-budgeted markdown, and verify assets for AI agents.

Security & AuthJavaScriptv1.0.0-draft.2

1-Minute Quickstart

Publisher side — sign what agents may do with your content:

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:

npm install @aifeed/verify
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? · agent quickstart · publisher AI guide · Studio publisher app · npm: aifeed CLI · @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.
  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, with a runnable example at examples/agent/compliant-agent.js.

Verify from other stacks

Independent Python package (standard library only):

pip install aifeed
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):

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

ProfileMedia typeExtensionNotes
AIFeed Markdown (native)text/aifeed+markdown.aifeed.mdIn-band signed policy block, token budget, translation alternates, triage metadata
MAKO (compatibility)text/mako+markdown.mako.mdExternal 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.

WhatResultLabel
Conversion to markdown profiles vs HTML−68.83 % transferred bytesmeasured
Delta consumption (10 % pages changed)−95.73 % vs HTML crawlmeasured
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 skipped14 of 18measured (simulation)
Signature verification cost0.70 ms / pagemeasured

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

PathContents
lib/ + bin/Zero-dependency reference implementation and CLI
packages/ + clients/python/Published packages: CLI (aifeed), SDK (@aifeed/verify), MCP server, build plugins (@aifeed/frameworks), PyPI aifeed verifier
conformance/Conformance vectors: 34 manifest · 39 MAKO · 11 AIFeed Markdown
wp-plugin/WordPress plugin: signed manifest, AIFeed Markdown + MAKO dual-stack, /llms.txt
spec/Specifications EN/ID: manifest v0.1/v0.2, AIFeed Markdown v1.0
schema/JSON Schemas for manifests, signatures, AIFeed Markdown, MAKO
paper/Preprint: LaTeX source, PDF, claim ledger, arXiv bundle
docs/Agent quickstart, deploy and namespace guides, Indonesian project notes
studio/Zero-dependency local publisher app: crawl, declare, build, verify, export, and rotate
docs/REFERENCE.mdReference implementation details, what gets verified, CLI quickstart

Documentation

Status

  • Release 1.0.0-draft — the specifications are not frozen yet. Wire versions: manifest 0.1/0.2, AIFeed Markdown 1.0, MAKO 0.2.
  • Conformance: 34 manifest + 39 MAKO + 11 AIFeed Markdown vectors, executed by independent JavaScript and Python verifiers, plus PHP differential fixtures, 90,000+ fuzz executions, and a WordPress end-to-end test.
  • Not claimed: external cryptographic review and a live pilot (both pending); origin+DNS compromise is undetectable on first contact.

License and contact

Specifications CC BY 4.0 · reference code and plugin MIT · vectors CC0. Contact: contact@aifeed.md — security reports per SECURITY.md.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y aifeed-mcp-server

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-denyn1-aifeed-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "aifeed-mcp-server"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

aifeed-mcp-servernpm

Compatible MCP Clients

AIFeed works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More