Skip to content

Latest commit

 

History

History
109 lines (81 loc) · 11.7 KB

File metadata and controls

109 lines (81 loc) · 11.7 KB

BACKLOG — deferred from v0.1

Everything we explicitly chose NOT to ship in v0.1. Captured here so the choice is reviewable, not lost.

When something here gets activated for a release, move it out of this file and into a roadmap entry.


v0.2 candidates (gated on real demand)

  • Federated AgentCard registry (Phase 4-A from upstream R&D). Reactivate if 5+ third-party operators ask for cross-mailbox discovery.
  • File-share above 64KB (Phase 2 from upstream R&D). Reactivate if users hit body-size limits.
  • A2A /.well-known/agent-card.json shim (~80 LOC). Reactivate if we want interop with the 150+ Google A2A backers.
  • AGNTCY OASF /.well-known/oasf-record.json bridge (~250-400 LOC). Reactivate if AGNTCY-aware tooling matters.
  • DIDComm v2 cherry-picksthid/pthid threading, did:wire method spec doc, application/wire-event+json media type. Spec exists in upstream R&D INTEROP_SPEC.md.
  • Forgejo / GitLab git-host adapters for operators who want git-as-mailbox-substrate. v0.1 uses HTTP relay only.
  • Nostr extension — wire-as-NIPs (HIGH-VALUE). Publish wire's pairing + agent-card as new NIPs to nostr-protocol/nips. Same Ed25519 keypair format means a did:wire:<handle> and a did:key:<npub> are interchangeable. Reuses existing ~10k Nostr relay infra (Damus, primal, nos.lol) so v0.2 users can pair without self-hosting any relay. NIP-W1 = SAS pairing (kind 21001 SPAKE2 messages + 21002 sealed bootstrap). NIP-W2 = signed agent-card with capability advertisement (kind 10001 replaceable). NIP-W3 = tier-trust client convention. Bilateral DMs reuse NIP-44 directly. Cost: ~250 LOC swap of relay HTTP ↔ Nostr WebSocket transport; protocol semantics unchanged. Win: instant million-user TAM, network effect with social layer, agents can address humans on Nostr and vice versa. Caveat: public Nostr relays often spam-filter bots; self-hosted relay still recommended for high-volume agent traffic.

v0.3+ candidates

  • Native group rooms with member-set consensus, cross-member read-receipts, group revocation. R3-F flagged as highest anti-pattern risk. Don't build until ≥1 paid pilot demands AND mesh-of-bilateral demonstrably insufficient.
  • Per-kind encryption policy (NIP-44 v2 preferred over DIDComm authcrypt). v0.1 is plaintext-signed-by-default.
  • SCITT COSE_Sign1 envelope wrapping for SCITT-aware audit infrastructure.
  • SPIFFE-SVID dual-emit for enterprise-Vault integration.
  • macOS launchd plist for wire daemonize (Linux systemd in v0.1).
  • mcp wrapper so claude-agent-sdk can read/write the wire as a tool.

Distribution + tooling

  • PyPI package publish post-v0.1 launch (operator-gated). [Note: project is now Rust; PyPI play retired in favor of crates.io + Homebrew + cargo install.]
  • crates.io publish of the wire crate.
  • Homebrew tap (atuin pattern). brew install wire as primary macOS path.
  • GitHub Actions CI matrix publishing pre-built binaries: linux-x86_64, linux-arm64, linux-musl-x86_64, linux-musl-arm64, darwin-x86_64, darwin-arm64, windows-x86_64.exe.
  • AUR package for Arch.
  • Nix package + flake.
  • Scoop / winget manifest for Windows native install.
  • Windows ACL helper to match set_file_mode_0600 on #[cfg(windows)] for private.key + relay.json.
  • install.ps1 mirror of install.sh for PowerShell users.

Integration plugins (be the transport everyone else picks; don't fight for terminal share)

Strategic thesis: wire wins by living inside whichever agent runtime wins. Each plugin is a small separate repo, ~150-300 LOC, that shells out to or wraps the wire CLI. Wire core stays unbloated.

  • openclaw-channel-wire — TypeScript plugin for OpenClaw (100k★ self-host personal-agent gateway, 20+ channels). Adds wire as channel #21 — "the channel that doesn't go through Apple/Meta/Telegram." ~200 LOC TS shelling out to wire send / wire tail --json / wire peers --json. Distribution win: instant exposure to OpenClaw user base. Scaffolded at ~/Source/openclaw-channel-wire/ (separate repo, MIT, ready for npm publish when wire goes public).
  • claude-flow-plugin-wire — wire as a transport option in claude-flow (48k★, already independently chose Ed25519 + mTLS — primitive validated). Plugin lets claude-flow agents speak wire to non-claude-flow peers. ~250 LOC.
  • langgraph-tool-wire — wire as a tool node in LangChain LangGraph workflows. Agents call wire_send / wire_tail from within graph state. ~200 LOC Python. Scaffolded at ~/Source/wire-langgraph/ (separate repo, MIT, ready for PyPI publish when wire goes public). Five agent-safe tools, security boundary preserved.
  • crewai-channel-wire — wire as agent-to-agent channel in CrewAI. Same shape as LangGraph adapter. ~200 LOC Python.
  • photon-spectrum-channel-wire — Spectrum is OSS multi-channel TS SDK (April 2026 launch); add wire as channel option. Pre-empts Spectrum building bilateral A2A natively.
  • smol-agents wire transport — Hugging Face's smol-agents framework. ~150 LOC Python plugin.
  • autogen wire transport — Microsoft AutoGen multi-agent. ~150 LOC Python.
  • vscode/zed extension — surfaces wire peers, wire tail, send compose UI in editor sidebar. Same shape as GitLens/GitHub extensions for git.

Pattern for all: separate repo under slancha/ or laulpogan/, MIT-licensed, calls wire CLI subprocess (no FFI complexity), README cross-links to wire main repo, two-way visibility zero coupling. Like Tailscale's docker/k8s integrations or atuin's shell-specific integrations.

Crypto / interop bridges (cross-tribe gateways)

Strategic thesis: bridge to adjacent ecosystems where the userbase already has identity, but DON'T merge into them. Bridges are 100-300 LOC, optional, gated on real cross-tribe demand.

  • did:pkh / did:ethr interop bridge — accept Ethereum wallet sigs as a verify_keys algorithm alongside ed25519. Lets wire pair with XMTP-keyed agents via gateway. ~150 LOC. Re-evaluate after XMTP mainnet (Q3 2026 expected) shows real agent traffic.
  • A2A /.well-known/agent-card.json shim (already in v0.2 list above; re-iterate here as cross-tribe play). Lets the 100+ A2A backers discover wire-based agents without changing their stack.
  • AGNTCY OASF /.well-known/oasf-record.json bridge (also above). Pairs with AGNTCY's directory layer.
  • AMP (Agent Messaging Protocol, agentmessaging/protocol) interop — closest spec-stage neighbor to wire; adapter to receive/send AMP-formatted events transparently. ~200 LOC if the spec stabilizes.
  • SLIM (AGNTCY/Cisco) gateway — bidirectional bridge to SLIM's MLS-based mesh. Heavy (~400 LOC) but unlocks Cisco-ecosystem agents. Track draft-mpsb-agntcy-slim-XX quarterly; if it lands as IETF RFC, build the gateway.
  • Matrix transport adapter — vodozemac (Apache-2.0 Olm) for the messaging cryptography layer; a wire-over-Matrix mode where Matrix is the relay+transport. Heavy refactor; only worth it if Matrix-tribe demand surfaces.
  • DIDComm v2 envelope wrapping — already in v0.2 list above as cherry-pick of thid/pthid threading + application/wire-event+json media type.
  • Nostr extension (NIP-W1/W2/W3) — already documented above; reusing existing 10k+ Nostr relays for transport. Highest-leverage cross-tribe bridge.

Cryptographic stack hardening (if/when threat model evolves)

  • vodozemac swap for symmetric session layer — Apache-2.0 Olm Double Ratchet (Matrix's pure-Rust implementation). Replaces seal_bootstrap/open_bootstrap ChaCha20-Poly1305-with-static-key with forward-secure ratchet. Buys forward secrecy + post-compromise security per message. Swap is local to sas.rs post-pairing channel. ~300 LOC delta. [CORRECTED 2026-06-06 — this framing is wrong: vodozemac does NOT key from the SPAKE2/pairing secret (it runs its own Curve25519 X3DH handshake), so it's not a "seal swap"; real cost ~800–1500 LOC + stateful per-message persistence + a migration, and Double-Ratchet PCS only partially delivers under store-and-forward/passive-replier traffic. DM encryption route resolved to NIP-44 instead — see docs/history/0006-spike-vodozemac-vs-nip44.md. Revisit vodozemac only on a concrete per-message-FS threat model.]
  • MLS (OpenMLS or mls-rs) for v0.3+ group rooms — only when group rooms become real (which we deliberately deferred). Both crates Apache/MIT.
  • Post-quantum hybrid signatures — Ed25519 + ML-DSA-65 dual-sign. Match XMTP's PQ stance. Track NIST FIPS 204 stabilization.
  • OPAQUE / CPace migration if PAKE-in-TLS (draft-bmw-tls-pake13) ships. Could let pairing happen during TLS handshake instead of via separate pair-slot endpoints.

Demo + GTM

  • 60-second screencast video with paul + willard names → render after v0.1 binary works.
  • GIF for README of the demo flow.
  • Comment on anthropics/claude-code issue #28300 with working primitive — only after v0.1 launch + operator approval.
  • lobste.rs Show post — Day 1.
  • Show HN — Day 2.
  • r/selfhosted + r/ClaudeCode + r/LocalLLaMA cross-posts — Day 3.
  • selfh.st newsletter outreach — Day 7.
  • awesome-selfhosted PR — Day 7.

Documentation polish

  • Per-file license headers matching the AGPL/Apache/MIT trio (currently single LICENSE.md explains the split; explicit headers come at v0.1.1).
  • CONTRIBUTING.md + CODE_OF_CONDUCT.md — write before public PR queue opens.
  • CHANGELOG.md — start at v0.1.0 release.

Hardening

v0.1 inherits the cherry-picked code's hardening (S1-S6 + M1-M3 + L5 from upstream PHASE4_HARDENING_RESULTS.md). New v0.1-specific code (cli, sas, relay_client, relay_server) needs its own hardening pass before 1.0.

Iter-tracked TODOs (carried forward from current build)

  • iter 5: SPAKE2 PAKE handshakespake2 crate or RustCrypto's spake2; replaces the placeholder <handle>-<fingerprint> code phrase from wire init. Pairs with wire join real implementation.
  • iter 5: PGP word-list code phrases — replace the deterministic placeholder with two-syllable English words (magic-wormhole pattern) for human-friendly aloud-readout.
  • iter 5: MCP server (wire mcp) — JSON-RPC over stdio. Tools: wire_send, wire_tail, wire_peers, wire_verify, wire_whoami. Deliberately NOT exposed: wire_init, wire_join (security boundary).
  • iter 6: relay-server (wire relay-server) — axum + tokio + sqlite mailbox. AGPL header on this file specifically.
  • iter 6: relay-client + daemon — flushes outbox/<peer>.jsonl to relay, dedupes by event_id, populates inbox/<peer>.jsonl after Ed25519 verify.
  • iter 6: content-addressed dedupe — daemon recognizes that two wire send invocations with identical canonical body produce the same event_id and refuses to double-flush. (Today timestamps make every event unique; once the daemon adds it, the failing-on-purpose test in tests/cli.rs flips from assert_ne!assert_eq!.)
  • iter 7: file-system contract daemon — long-running unit watches outbox/, signs partial events appended by sandboxed agents, flushes to relay, writes verified inbound to inbox/. Per docs/AGENT_INTEGRATION.md Path 3.
  • iter 8: 3-party mesh-of-bilateral demo — bash test scripting paul + willard + carol pairing, sending, tailing.

What does NOT belong in this BACKLOG

Anything from archive/2026-05-10-enterprise-frame/ (regulated-buyer GTM artifacts) — that lives in operator's separate company doc, not this OSS project. R3-E confirmed: tribe smells gematik energy and bails.