Skip to content

chirp v0.2.0

Choose a tag to compare

@mendsec mendsec released this 08 Oct 21:40
· 105 commits to main since this release
9234881

The product model, over remotekit's rendezvous. There is still no cmd/chirp binary. Chirp is two library packages, session and signalling (README, Status).

Breaking

  • The session direction is inverted (#5). Each running Chirp registers as a peer (POST /api/peers) and gets its own code and share link. Whoever redeems the code (POST /api/redeem, POST /api/links/{token}/sessions) controls that peer, once its owner consents over its own socket.
  • The technician-PIN endpoints are gone: POST /api/sessions and POST /api/sessions/{code}/consent (#13).
  • RegisterPeer takes the origin: RegisterPeer(name, origin) (#38).
  • Go 1.26.6 is the declared minimum (#29). With it, govulncheck reports no vulnerabilities.

New

  • Per-origin limits (maintainer decisions, tunable, 429 when exceeded):
    • 30 open sessions per controller origin (#6);
    • 30 registered peers with a live code (#38).
  • Abandoned peers are released. A peer away from its owner socket for 2 minutes loses its code, link and session (#41).
  • The blind lookup (#45):
    • PUT /api/peers/{peer}/contact records an owner's Nostr key and relays;
    • POST /api/lookup and POST /api/links/{token}/lookup return exactly that contact, metered and single-use, with nothing relayed.
  • Relay presence: chirp.peer_joined and chirp.peer_left.

Fixed

  • WaitForConsent wakes every waiter (#30). It returns ErrSessionExpired or ErrSessionEnded when a session ends undecided, instead of hanging.
  • Lazy expiry sets EndedAt and notifies subscribers, as the reaper does (#34).

Decisions recorded

  • A share link reaches a new Chirp by being pasted (decision 4, #35).
  • A blind public server over Nostr, with 6 + 4 digit codes and a PAKE, comes after the MVP and before any public relay (decision 5, #44).
  • Fyne for the UI (#36).
  • Consent enforcement moves out of remotekit tunnel (#40, barahn/remotekit#83).
  • A bring-your-own STUN/TURN guide: docs/stun-turn.md (#39).

Full notes: #28.