patcharc 0.2.0 · macOS, Linux, Windows
The verified story behind every change.
PatchArc records how a change happened: commits, test runs, decisions, risks. It seals that record into a signed .parc capsule you can verify offline, and turns it into a review link when you choose to share.
$ brew install patcharc$ patcharc initinitialized .patcharc/ signing key created$ patcharc start "Rework session storage"observer recording arc_8f2c1d main@a1b2c3d# commits, test runs, notes, decisions$ patcharc stopredaction: 2 rules fired, 0 secrets sealedsealed .patcharc/capsules/arc_8f2c1d.parc$ patcharc verifyok signature valid 12 files hashes match$ patcharc share --visibility teamhttps://patcharc.dev/a/X9kQ2mN4vR7s
- signature on every capsule
- Ed25519
- signature on every capsule
- built-in secret detectors
- 13
- built-in secret detectors
- workspace detectors for monorepos
- 12
- workspace detectors for monorepos
- review sections, computed deterministically
- 6
- review sections, computed deterministically
- verification steps before a link goes live
- 15
- verification steps before a link goes live
- accounts needed for the local loop
- 0
- accounts needed for the local loop
Four commands between you and a review that checks out.
The loop runs on your machine. The cloud only enters when you decide to share.
1.0init
Initialize the repository
patcharc init creates .patcharc/ in your repo: a local SQLite session store, a config file, and an Ed25519 signing key that never leaves the directory. No account, no network.
patcharc initstage 1.0init $ patcharc initcreated .patcharc/config.yamlcreated .patcharc/sessions.dbcreated .patcharc/keys/ed25519 (0600)ok repository initialized2.0record
Record the Arc while you work
patcharc start forks a detached observer that watches Git plumbing, file changes, and test runs across branches and worktrees. Notes, decisions, risks, and checkpoints are one command each, so the reasoning is captured while it is fresh.
patcharc start "what you are building"stage 2.0record $ patcharc start "Rework session storage"arc_8f2c1d observer pid 41822 main@a1b2c3d$ patcharc note 'WAL mode avoids the lock storm'$ patcharc decision 'keep SQLite, no Postgres yet'$ patcharc risk 'migration on existing dbs'$ patcharc checkpointcheckpoint 3 +418 -122 7 files tests: 41 pass3.0seal
Stop, redact, seal, verify
patcharc stop builds the six-section review from the recorded evidence, runs 13 secret detectors plus entropy scanning, and seals everything into a signed .parc capsule. patcharc verify checks the signature and every per-file hash offline.
patcharc stop && patcharc verifystage 3.0seal $ patcharc stopreview: goal, 3 phases, 2 scopes, verification, 1 decision, 1 riskredaction: aws-access-key in .env.example (withheld)sealed .patcharc/capsules/arc_8f2c1d.parc (Ed25519)$ patcharc verifyok signature valid manifest consistent 12/12 hashes match4.0share
Share a link anyone can check
patcharc share uploads the sealed capsule. The cloud re-verifies the signature and hashes server-side, runs a 15-step pipeline, and returns a short ArcLink with public, private, team, or capability visibility. Revoke or rotate it any time.
patcharc share --visibility teamstage 4.0share $ patcharc loginopen https://patcharc.dev/device code KQ7P-MX2Aok signed in with GitHub$ patcharc share --visibility teamupload 214 KB server verify ok pipeline 15/15https://patcharc.dev/a/X9kQ2mN4vR7s
What a capsule holds
A .parc is a ZIP. Open it with any tool, verify it with patcharc verify, render it with patcharc serve. Nothing inside depends on us.
| Part | Contents | Note |
|---|---|---|
| manifest.json | Canonical JSON, format v0.2, per-file SHA-256 | Ed25519-signed at seal time |
| git/ | Commits, rewrites, branches, worktree hops | Read from Git plumbing, not the final diff |
| tests/ | JUnit, go test, and SARIF results | Parsed by the local engine |
| review.json | Goal, phases, scopes, verification, decisions, risks | Deterministic; AI is optional on top |
| redaction.json | Which rule fired on which path | Reviewers see what was withheld, not what it was |
| scopes.json | Workspace packages the change touched | 12 detectors: pnpm, npm, yarn, turbo, nx, and more |
Built like a tool, not a platform you rent
- Verifiable offline
- A capsule is a ZIP with a signed manifest. Anyone holding the file can run patcharc verify with no account and no network. The cloud runs the same check before it publishes anything.
- Review without AI
- The six-section review is computed from recorded evidence. AI summaries layer on top when you ask for them; they are never the fallback the review depends on.
- Redaction before seal
- Thirteen detectors, env-file rules, and high-entropy scanning run before anything is written. Your own regex rules go in .patcharc/config.yaml.
- Monorepo-native
- Twelve workspace detectors map changes to packages and services, so a review reads as scopes rather than a flat diff.
- Links with real access control
- Public, private, team, or capability visibility. Revoke or rotate the slug; expired and revoked links stop resolving.
- Your keys stay yours
- BYOK provider keys are envelope-encrypted with a per-connection DEK wrapped by a KEK and decrypted only inside the key-broker worker. Managed AI goes through the AI Gateway with content logging off.
- Device-flow sign-in
- patcharc login opens the browser, you approve with GitHub or Google, and the CLI polls for its token. Refresh tokens are hashed at rest and rotated on use.
- Cloudflare-native cloud
- Workers, D1, R2, KV, Queues, and a per-capsule Durable Object pipeline. Per-tenant isolation is enforced on every query.
Two planes, one contract
A local engine you can audit, and a cloud that has to prove a capsule before it publishes it. The format is open today; the hosted service is not.
Local · Apache-2.0
- .parc format specification
- JSON Schemas (claim, manifest)
- Local engine: capture, seal, verify, inspect, serve
- Deterministic six-section review
Cloud · proprietary
- 15-step verification pipeline
- ArcLinks with access control
- Managed AI and the BYOK key broker
- Team collaboration surface
- Local Arc Engine (Apache-2.0)
- The CLI, the .parc format, and the JSON Schemas are Apache-2.0. The format spec is public, so your review artifacts are never locked into us.
- PatchArc Cloud (proprietary)
- The hosted pipeline, sharing, and AI orchestration run on Cloudflare Workers. Upload is optional; the cloud re-verifies every capsule before it publishes anything.
- Fifteen-step pipeline
- Validation, signature and hash verification, policy enforcement, evidence extraction, review synthesis, and publishing run as tracked steps inside a per-capsule Durable Object.
- Keys never leave the broker
- Provider keys are encrypted with a per-connection DEK, wrapped by a KEK, and decrypted only inside the key-broker worker. Never logged, never returned, never sent to the AI Gateway.
Questions people ask before installing
- Do I need an account?
- No. init, start, note, decision, risk, checkpoint, stop, verify, inspect, and serve all run with no account and no network. You sign in only when you run patcharc share.
- When does my code leave my machine?
- Only when you run patcharc share. What uploads is the sealed capsule, after redaction. The cloud re-verifies the signature and every file hash before it publishes a link; a capsule that fails verification is marked failed and nothing is published.
- Does the review need AI?
- No. The six sections (goal, phases, scopes, verification, decisions, risks) are computed from the recorded evidence. AI summaries are optional, either through your own provider key or managed models.
- Is the format open?
- Yes. The .parc specification, its JSON Schemas, and the local engine are Apache-2.0. A capsule is a ZIP you can open, verify, and render without us. The hosted cloud is proprietary.
- What about monorepos?
- Twelve workspace detectors (pnpm, npm, yarn, turbo, nx, and more) map a change to the packages it touched, so the review is organised by scope rather than by file path.
- How are provider keys stored?
- Envelope-encrypted. Each connection gets its own data-encryption key, wrapped by a key-encryption key that only the key-broker worker holds. Plaintext exists in memory for one resolution call and is never logged or returned.
Seal your next change.
Install the CLI, record an Arc in any Git repository, verify it offline. Share it when you are ready.
Install the CLI