ADR-001: Pinch Protocol verification (AL-001)
- Status: Accepted. Pinch is verified to exist but is not adopted as the MVP transport.
- Date: 2026-10-30
- Backlog: AL-001, AL-007
Context
Section titled “Context”Spec §1 names Pinch as the initial candidate transport “subject to source, license, SDK, and relay verification”. Spec §7 and §17 forbid inventing SDK methods and ask for verified findings to be recorded here before any adapter is written.
How this was verified
Section titled “How this was verified”The load-bearing claims were checked directly (2026-10-30):
npm view @pinch-protocol/skillreturned version0.2.1, last modified2026-02-28T16:58:00Z.gh api repos/pinch-protocol/pinchreturned licenseApache-2.0, 0 stars, not archived, last push2026-03-01T21:04:43Z.skill/src/index.tsonmainwas read, and its export list matches the API below.
Findings
Section titled “Findings”| Item | Finding | Verified by |
|---|---|---|
| Source | https://github.com/pinch-protocol/pinch (org pinch-protocol), site https://pinchprotocol.com |
GitHub API |
| License | Apache-2.0. Proprietary use is permitted. NOTICE and license text must be preserved if distributed. | GitHub API |
| TypeScript SDK | @pinch-protocol/skill 0.2.1 (2026-02-28) and @pinch-protocol/proto 0.1.1 (protobuf envelopes) |
npm registry |
| SDK API | generateKeypair, loadKeypair, saveKeypair, generateAddress, validateAddress, RelayClient, ConnectionManager, ConnectionStore, MessageManager, MessageStore, InboundRouter, signDeliveryConfirmation, verifyDeliveryConfirmation, plus an autonomy module (PermissionsEnforcer, CircuitBreaker, ActivityFeed) |
skill/src/index.ts |
| Relay | Go daemon relay/cmd/pinchd. WebSocket at /ws, default port 8080. Ed25519 challenge-response auth. bbolt storage. 7-day queue TTL. No published container image. |
Project documentation (relay source not re-read) |
| Encryption | E2EE inside the SDK: NaCl crypto_box (X25519 + XSalsa20-Poly1305) via libsodium, with Ed25519 identity keys converted to X25519. No forward secrecy (planned for v2). No published security audit. |
Project documentation, consistent with the ed25519PubToX25519 export |
| Maturity | Pre-1.0, no tagged releases, 0 stars, no commits since 2026-03-01 | GitHub API |
Decision
Section titled “Decision”- Do not adopt Pinch as the MVP transport. It is pre-1.0, unaudited, has no forward secrecy, has had no activity for eight months, and its relay must be built from Go source. Its SDK is a full client stack with its own stores, connection manager and policy layer, so it overlaps with responsibilities Stelloz keeps under owner control (consent, policy, audit).
- Ship a native Stelloz relay behind the same
AgentTransportinterface. The design follows the same shape that Pinch validated: Ed25519 identities, X25519 key agreement, AEAD sealing, a ciphertext-only relay, signed relay authentication, and a 7-day queue TTL. See ADR-003 for the envelope format. - Keep
packages/transport-pinchas a stub that documents the verified API mapping and throwsTransportErrorwith codeunavailable. It contains no guessed method calls.
If Pinch is adopted later
Section titled “If Pinch is adopted later”- Pinch encrypts internally. Per spec §7, the adapter must not double-encrypt blindly. Either hand Pinch the logical envelope and rely on its sealing (losing Stelloz’s header binding unless Pinch adds it), or treat Pinch purely as a byte transport for Stelloz-sealed envelopes and accept the redundant inner layer.
- Map
ConnectionManager.sendRequest/approveRequest/rejectRequest/revokeConnectiononto Stelloz’s consent flow only after reading their source. Stelloz’s endpoint-side consent check must stay authoritative. - Re-evaluate when any of these happens: a 1.0 release, a published audit, forward secrecy, or renewed maintenance.
Related projects noted during research
Section titled “Related projects noted during research”- A4A (https://github.com/a4a-network/a4a): open relay network for personal agents, secp256k1/Schnorr identities, scoped delegation, E2EE.
- ACE (https://aceprotocol.org): Agent Commerce Engine, post-quantum identities (ML-DSA-65) and hybrid encryption (X-Wing / ML-KEM-768).
- Unrelated projects that share the name “pinch”:
TheCraigHewitt/pinch(x402 wallet CLI),abhinav/pinch(Haskell Thrift),peterhellberg/pinch(Ruby remote ZIP).
Stelloz's source code is not public yet. An open source GitHub link may come later.