Capabilities · v0.1.0-alpha
What the code actually does.
PeerWeave is the fabric: spaces, mesh, graph, agents, receipts. We still lead with signed receipts and merge gates because that is the pain teams feel this year. Pi mesh, edge ingest, and the EVRUS plugin are how the same primitives run on a desk and a couple of Linux boards.
Signed work receipts
ShippingA portable pw.receipt.v1 dossier for one unit of accountable work — Ask answers, agent runs, WeaveFS transactions, PR diffs, or imported MCP sessions.
- Actor, goal, CapToken scopes, policy decisions, tool calls, file effects, claims, and evidence refs
- Ed25519 signature over (type, actor, goal, receipt_hash); SHA-256 tamper detection
- CLI: pw receipt ask | agent | weavefs | pr-change | verify | html | redact | slsa | siem-export
- GitHub Action receipt-check blocks invalid receipts at merge time
- VS Code extension lists, verifies, and opens the HTML verifier from receipts/
HTML verifier & redacted packs
ShippingReviewers and auditors get a self-contained HTML page. Redacted packs strip prompts and answers while keeping the signature.
- pw receipt html — zero-dependency page, no CDN, works offline
- pw receipt redact — standard (keeps signature) or --strict
- Shows hash, signature, supported vs unsupported claims
- Primary buyer-facing artifact for the AI change-governance wedge
Ask + signed answer bundles
PartialAsk your space with VCIL context envelopes. Answers ship as signed trace v2 bundles with per-claim evidence and Invariant I enforcement.
- Local GGUF when configured; echo fallback otherwise
- Remote OpenAI-compatible / LiteLLM backends; requires llm.remote CapToken and explicit config
- OutputClaim → Transformation → DataVersion provenance paths
- Unsupported assertions flagged in UI and blocked on mirror publish
- Desktop Ask is the full query path; CLI has receipt/policy/identity once traces exist
Participants & capabilities
ShippingRegister humans, agents, services, and devices with DIDs and CapToken bindings so a receipt can name who acted and under whose authority.
- Registry at $PW_HOME/participants.json; CLI: pw participant add | list | show | remove
- did:key device signing keys for bundles and receipts
- Encrypted keychain (scrypt + AES-256-GCM) when PW_KEYCHAIN_PASSPHRASE is set; pw identity migrate-keychain for existing installs
- P2P node.key still plaintext; restore-from-backup UI deferred
- Capability revocation is local today; cross-peer replication is open work
MCP & external session capture
PrototypeImport tool sessions from Cursor, Claude, Copilot, or CI into traces and receipts without running agents inside our runtime.
- pw mcp import session.json — file-based import
- pw mcp capture — stdin JSON-RPC stream
- Credential redaction; content stored as sha256 CIDs
- MCP proxy for transparent capture is follow-up work
Spaces, WeaveFS & P2P
PartialLocal-first workspaces with transactional WeaveFS, authenticated membership, and signed cold-join snapshots.
- CRDT-backed file sync; OPS_FETCH anti-entropy; recovered FileId state
- Authenticated Space ops and snapshot serving; delegated membership chains
- Discovery via mDNS, bootstrap, rendezvous, and relay — DHT listing is out of scope for v0.1
- Desktop live gossip and loopback catch-up are automated; two-device LAN/WAN QA is still a P0 gate
- Content encryption beyond transport is deferred
Raspberry Pi / Linux mesh + edge ingest
PartialA three-node fabric: this PC as hub, a Pi 3B on Ethernet, and a Pi 4B on Wi-Fi. Edge agents ingest manticore-net flow metadata into a synced space — not packet payloads.
- libp2p QUIC listen /ip4/0.0.0.0/udp/4001/quic-v1; mDNS on for LAN discovery
- SSH install modeled on manticore-net (explicit host/IP — raspberrypi.local can collide)
- pw daemon start exposes an HTTP gateway at http://127.0.0.1:8788 for the browser client
- pw edge watch --space <path> reads JSONL/SQLite metadata from MANTICORE_HOME / manticore-net-data
- Spaces and agent files sync as soon as a peer connects — no 5s anti-entropy wait on first join
EVRUS plugin (DID, IPFS, swap intents)
PartialProtocol-boundary plugin: OIDC/DID health, IPFS add/cat, and atomic Evrmore swap offer JSON stored in a space. EVRUS Vault remains the signer. PeerWeave never holds a mnemonic.
- DID / OIDC health against the Vault bridge (typically :8790)
- IPFS via IPFS_API_URL (Kubo HTTP API, typically :5001)
- Swap intents are space files the mesh can sync; Vault signs the chain transaction
- Browser and desktop panels read /v1/evrus on the local gateway
- Full Vault rewrite and on-chain anchoring UX are out of scope for this plugin
Docker, Swarm, and Render
PartialContainer images for the CLI daemon and the Next.js website. Swarm stack for any Linux host; Render Blueprint for the public browser client.
- docker/compose.yml — hub daemon, website, optional IPFS sidecar
- docker/swarm.yml — replicas 1, linux/amd64 and linux/arm64 placement notes
- Website service name peerweave-web, Node 20, pnpm install && pnpm build, pnpm start
- Browser client still talks to a local/edge gateway — Render does not run libp2p for you
Semantic graph + provenance
PartialFiles, functions, claims, and transformations form a queryable graph with VCIL provenance and PCG multi-axis retrieval.
- Paginated explorer (~50 nodes/page); WebGL 1–2k @ 60fps is deferred
- PCG five-axis fusion and graph-layer forgetting
- GraphQL HTTP API for Ask and explorer queries
- Click-through from a node into the matching space file
Ports runtime
PartialTurn a folder into a capability-scoped service port on the peer mesh.
- Local runner with PW_PORT_CAPABILITIES allowlist
- CapToken-gated start / stop / invoke
- Remote advertisements with TTL
- Runtime capability enforcement still incomplete vs the PRD
Mirrors & anchors
PartialSelectively publish signed answer bundles and mirror bundles with VCIL validation at publish time.
- Build, redact, publish, and locally anchor
- export_answer_bundle_to_mirror requires a valid Ed25519 signature
- Anchor provider is a local stub; EVRUS chain anchoring stays in the Vault, not this plugin
Policy control plane
Partialpw-policy.toml plus CLI and CI checks. Receipt policy is post-hoc today; WeaveFS commit gating is the next P1.
- pw policy init / check — signature required, max unsupported claims, allowed models, denied tools/paths
- GitHub Action enforces hash, signature, and unsupported-claim counts
- Pre-commit policy evaluation on WeaveFS mutations is tracked as peer-weave-policy
Compared with adjacent tools
GitHub and Cursor already log agent activity. They do not hand you a signed, portable receipt you can fail a merge on — or a CRDT mesh you can run on a Pi.
| Capability | PeerWeave | GitHub | Cursor |
|---|---|---|---|
| Signed, portable AI work receipts | Ships | Session / audit logs | Local traces |
| PR merge gate on receipt validity | Ships | Generic required checks | No |
| Claim-level evidence (VCIL) | Ships | No | No |
| Local-first CRDT spaces + libp2p mesh | Partial | Cloud-hosted | Editor-local |
| Raspberry Pi / Linux edge nodes | Partial | No | No |
| Edge ingest of flow metadata (not payloads) | Partial | No | No |
| EVRUS DID / IPFS / atomic swap plugin | Partial | No | No |
| Docker Swarm + Render browser client | Partial | Hosted Actions | Cloud agents |
| CapToken participant governance | Partial | Org roles | Account / privacy mode |
Try it on the next PR
Export a receipt, attach it, run receipt-check. Invalid signatures or unsupported claims fail the gate. Or stand up the mesh and talk to the gateway from /app.