02 / Document and spec verification
Prove every promise your docs make.
Point Attest at a README, a quickstart, an AI assistant’s how-to answer or a product spec. It runs every step against the real app, in a real browser, and hands the document back with each step marked proven, stale, broken, unverifiable or skipped, with evidence behind every mark.
Attest is the first station of the SyberLabs factory. Steps that fail go to an agent, SyberWork decides what that agent may change, and the browser check runs again. A case closes only when the fix is proven, and every case leaves a receipt.
Why
Why prove a document?
Docs, quickstarts and specs make promises: run this command, click this button, see this label. Products change underneath them, and the first person to notice is usually a frustrated customer.
Attest treats each step as a claim to be checked against the running product. A claim is proven only when a command passed or a browser saw the promised label, never because a model said so.
Use
Four ways to use it
Python 3.11 or newer. Browser steps use Kane CLI, TestMu’s browser agent.
- 01 / Prove
Prove a doc
Run attest prove on a Markdown document. Shell steps run in a scratch directory, browser steps run in Chrome, and the result is one page with a badge on every claim.
- 02 / Repair
Fix drift in the doc
When a descriptive claim has gone stale, an agent writes a doc-only patch in a throwaway checkout and the browser proves it again before anything is applied.
- 03 / Protect
Refuse to weaken a promise
A policy file marks promises the product must keep. Attest will not edit those to make a check pass; it issues an implementation handoff instead.
- 04 / Spec
Build to a spec
In spec mode a failing claim becomes a ticket. A worker implements it in a candidate copy of the app, never the original, and the browser checks the copy. Applying it needs a person’s approval.
Design
How it is built
Claims pinned to lines
One structured-output call turns the document into typed claims tied to exact line spans. Fenced command blocks become shell claims verbatim.
Verdicts by rule, not by model
Shell claims are judged on exit codes and promised output. Browser claims compare the expected label with the observed one, with guards for negation and changed numbers.
An authority gate
Each stale or broken claim is checked against the policy before an agent touches it. Descriptive text may be repaired; protected promises may not.
Receipts for every case
Each loop case writes an attest.receipt/v0 file: document hashes before and after, the claim, the authority decision, the patch hash and the evidence. SyberWork reads them as observations.
Bring your own agent
OpenAI is the default worker. Any command that reads a brief and prints a diff can take its place, so a team can plug in the agent it already uses.
Evidence
- Measured
At Kane CLI Hack Day in San Francisco on 24 October 2026, Attest proved 9 documents across 23 turns, with 31 browser claims proven by Kane, each with a screenshot.
- Measured
Real drift it caught that day: Vite’s starter page now reads “Get started”, not “Vite + React”, and GitHub’s “Security & analysis” is now “Advanced Security”.
- Tested
Unit tests and red-team cases cover forged approvals, attempts to weaken a protected promise and path-escape attacks on the apply step.
- Not yet
There is no hosted service; Attest runs locally as a command-line tool. Shell steps run on the host, not in a sandbox. No outside team runs it in production yet.
Reflects SyberLabs/attest@274b8e7 · verified 2026-11-05. Each state is earned by code, a named test, a measurement under stated conditions, or a deployment.
Facts
- Status
- Open source · early
- Stage
- Open-source command-line tool, version 0.1.0
- Technology
- Python 3.11+, OpenAI structured outputs, Kane CLI and Chrome
- Works with
- SyberWork, the factory floor
- License
- MIT