Don't trust “done.” Verify it.
VeriDone is a local-first acceptance desk for AI-assisted software work. It turns agent claims, the exact Git worktree, operator-approved checks, and human decisions into a reproducible acceptance record.
Explore the synthetic public demo — no account, backend, repository access, or command execution.
Most agent tools help start or observe work. VeriDone starts where they stop: deciding whether the result deserves to be accepted.
An agent saying “tests pass” is a claim. VeriDone binds that claim to the current commit and a content fingerprint of the tracked and untracked files (files matched by .gitignore are outside it), runs only checks you explicitly approve, each in its own checkout of the bound commit with a tool pinned by SHA-256, and locks acceptance when evidence is missing, failed, stale, mutated, or outside declared scope.
The product keeps three ideas separate:
- Claim — untrusted context from Codex, Claude Code, CI, a harness, or portable JSON.
- Evidence — independently captured output tied to the exact repository and policy state.
- Verdict — an append-only human acceptance, rejection, or request for changes.
- Zero-account, loopback-only local workspace backed by SQLite; the API answers only requests addressed to its loopback names.
- Approved-root repository discovery with traversal and symlink-escape defenses.
- Commit, branch, index, untracked-file content, submodule, diff-stat, and worktree hashing.
- Harness receipts plus a documented portable receipt for Codex, Claude Code, CI, and generic tools.
- Explicit multi-repository claim binding with commit, path, dirty-state, and fingerprint confirmation.
- Explainable review inbox with search, filters, sort, deep-link state, risk paths, and scope drift.
- Approved checks run in a fresh checkout of the bound commit that VeriDone creates itself, never in the agent's work tree, with literal arguments, no shell, minimal environment, redaction, timeout, cancellation, output cap, concurrency limit, mutation detection, tool version, and exit code. A check can prepare its checkout first with the same pinned tool, for example with a frozen dependency install.
- Check tools pinned at approval by path and SHA-256, verified before every run, and recorded with each result; Git started by absolute path with a fixed configuration.
- Checks that can be replaced or retired with a recorded reason, so a mistaken or outgrown check never holds the gate for good; packets show every retirement.
- Roots, repositories, and work items that can be removed with a recorded reason and put back, so a folder that went away or an item added by mistake never stays on the desk for good; verdicts and evidence stay as they are, removal opens no gate, and packets state the removal of their work item and its repository.
- Explicit normal and override verdict paths with persistent reasons. A verdict is recorded only if the repository, claim, and latest verdict still match what the reviewer saw, and the database keeps verdicts and evidence append-only.
- Deterministic JSON, Markdown, and standalone HTML acceptance packets rendered from one view, naming each check's command and test counts, and signed with an Ed25519 key the workspace creates.
- Transactional workspace backup with a SHA-256 integrity checksum, and a restore that lists what it would add before it runs, adds only missing records, leaves recorded verdicts and evidence as they are, and holds restored roots until the operator approves them.
- Responsive 360 px–desktop UX, light/dark/system themes, reduced motion, keyboard focus management, and automated WCAG 2.2 AA scans.
- A clearly labeled, filesystem-free synthetic public demo.
Prerequisites: Git 2.32+, Node.js 22+, and pnpm 11.9.0.
git clone https://github.com/fushanbobfan/veridone.git
cd veridone
pnpm install --frozen-lockfile
pnpm devOpen http://127.0.0.1:4173. The API remains bound to 127.0.0.1:4317 by default.
For a built local run:
pnpm build
pnpm start- Approve a local root.
- Connect a Git repository and an agent receipt.
- Link the claim to the current repository fingerprint.
- Approve one or more checks. Imported text is never executable policy.
- Run the checks, inspect risk/scope signals, and record a human verdict.
- Export an HTML packet for review or a signed JSON packet for verification.
Verify a JSON packet without opening the UI:
pnpm verify:packet path/to/veridone-work-item.json --key veridone-signing-key.pemVeriDone signs each packet with an Ed25519 key it creates for the workspace. Download the public key from Backup & restore and publish it where your readers can find it. With --key, verification reports whether that key signed the packet; without it, a sound signature shows only that some key signed it, because anyone who edits a packet can sign it again with a key of their own. Packets from VeriDone 1.1 and earlier carry a checksum only, which detects accidental changes.
- Installation and configuration
- User guide
- Portable receipt and export formats
- Architecture
- Security model
- Executable acceptance criteria
- Release evidence
- Maintainer dogfooding evidence
- External tester guide
- Contributing
- Security reporting
pnpm quality # format, lint, types, tests, build, audit, licenses, secrets
pnpm test:e2e # Chromium local flow plus Chromium/Firefox/WebKit demo flows, built page, and public demo buildCI repeats the core suite on Windows, macOS, and Linux. CodeQL, dependency updates, license policy, and browser artifacts are configured under .github/.
VeriDone has no telemetry and does not upload repositories. Workspace backups intentionally contain approved local paths and check definitions; the UI says so before export. Acceptance packets use strict privacy mode: raw process output, detected credentials, the local paths the workspace knows, and other common absolute local paths are excluded or redacted, and identifiers computed from local data appear as pseudonyms keyed to the workspace, apart from the commit and the pinned tool's SHA-256.
VeriDone is not a sandbox for hostile executables. A check is a command the local operator explicitly authorizes, and it runs code from the commit under review with the operator's permissions. The clean checkout keeps uncommitted and ignored files out of the result. Run untrusted build tools in an OS/container sandbox appropriate to the repository.
MIT. See LICENSE.
