Attest — Proof layer for AI agents

Decide → Gate → Verify → Attest.
When an AI agent takes an action in the real world, Attest decides whether it may, gates it behind a human when it matters, verifies from the system of record that it actually happened, and records tamper-evident evidence.
Attest is not an agent framework, not a connector platform, not a guardrail filter. It is the layer that lets a team say, with proof: "this agent did exactly this, as this person, and it worked."
Read in this order
| 01 — Vision | What Attest is, what it is not, the thesis |
| 02 — Product | The four steps, surfaces, what a customer experiences |
| 03 — Universal adapter | All apps, all actions: descriptor, entry points, verification ladder, auth, confirm, policy |
| 04 — Architecture | SDK + Cloud, stack, data model, ledger |
| 05 — Market & positioning | Why now, competitors, first vertical, go-to-market |
| 06 — Build plan | Phases, weekly plan, what we reuse, what we do not build |
| 07 — Decisions | Locked decisions and open questions |
| 08 — Phase plan | Detailed phase-wise split: task IDs, deliverables, exit criteria, milestones, founder checklist |
Quickstart
Brand Attest · PyPI attestlayer · npm attestlayer · deploy runbook in DEPLOY.md.
TypeScript — on npm today:
npm install attestlayer
import { Attest } from "attestlayer";
const at = new Attest({ agent: "followup-agent@v3", readers: { gmail: process.env.GMAIL_TOKEN! } });
const sendEmail = at.wrap({ system: "gmail", verb: "send", target: "to" },
async ({ to, subject, body }) => gmail.send({ to, subject, body }));
await sendEmail({ to: "arun@newco.com", subject: "Proposal", body: "…" });
Python — same contract, same ledger format:
pip install attestlayer
import attest
@attest.action(system="gmail", verb="send", target="to")
def send_email(to, subject, body): ...
The first external send pauses for a human; the ledger row says acknowledged, or verified once Attest can
read back with the agent's own credentials (Attest(readers={"gmail": service})). attest ledger · attest verify.
Full docs: mkdocs serve → docs/site.
Repository
| attest/ | Python SDK — descriptor, registry, policy, hash-chained ledger, verification ladder + recipes, gates (console / Slack / webhook / inbox / LangGraph interrupt / pending + resume), adapters (LangGraph, OpenAI Agents), MCP proxy, CLI, cloud client. attest/README.md |
| cloud/ | Attest Cloud v0 — FastAPI + Postgres: orgs, keys, agents, versioned policy, per-org hash-chained ledger, confirm inbox with Slack / webhook, exports |
| dashboard/ | Next.js dashboard — ledger drill-down, confirm inbox, policy / keys / settings |
| examples/ | unknown app (L1 → L3), LangGraph agent (two verified rows), OpenAI Agents, MCP config, API-only, cloud |
| docs/site/ | documentation site (mkdocs) · docs/ — product docs 01–08 · docs/notes — DO / DeerFlow extraction |
| deploy/ | Dockerfiles + compose (Postgres, API :8400, dashboard :3400) |
| launch/ | Show HN, blog drafts, LangChain integration PR draft |
| DEPLOY.md · CHANGELOG.md | release (git tag vX.Y.Z → PyPI, npm, GHCR, Pages) and hosting runbook |
pytest -q && (cd cloud && pytest -q)
ATTEST_AUTO_APPROVE=1 python examples/langgraph_agent.py
cd deploy && cp .env.example .env && docker compose up
One-line rules
- We never execute the customer's action. Their tool executes; we observe, decide, gate, verify, record.
- Coverage is universal (any app, any action, any framework, any language). Verification depth is layered and honest.
- Open-source SDK (MIT). Paid cloud (ledger, confirm inbox, policies, exports).
- Developer-led, self-serve, USD. No enterprise sales motion in year one.
Install from registries
| PyPI (publishing pending) | pip install attestlayer → attest, attest-mcp, attest-mcp-server, attest-gateway, attestlayer |
| MCP Registry | io.github.dev-prathap/attest (verify server) · io.github.dev-prathap/attest-proxy (zero-code proxy) — uvx attestlayer |
| Claude Desktop / Smithery | MCPB bundle from mcp/mcpb (mcpb pack mcp/mcpb) |
| npm | npm install attestlayer — live |
| Docker | ghcr.io/dev-prathap/attest-api, ghcr.io/dev-prathap/attest-dashboard |
Lineage
Attest is extracted from two working codebases: DO (policy engine, read-back verification pairs, evidence ledger, Nango auth) and DeerFlow (tool receipts, verification patterns, MCP/IM channel adapters). Nothing here is theoretical — every core mechanism already runs against real Gmail, Slack, HubSpot, Notion, Linear and Google Workspace.