<feed xmlns='http://www.w3.org/2005/Atom'>
<title>axon.git/relay/server.go, branch main</title>
<subtitle>[no description]</subtitle>
<id>https://code.northwest.io/axon.git/atom?h=main</id>
<link rel='self' href='https://code.northwest.io/axon.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.northwest.io/axon.git/'/>
<updated>2026-03-10T00:50:44+00:00</updated>
<entry>
<title>refactor: rename modules to code.northwest.io/axon</title>
<updated>2026-03-10T00:50:44+00:00</updated>
<author>
<name>bndw</name>
<email>ben@bdw.to</email>
</author>
<published>2026-03-10T00:50:44+00:00</published>
<link rel='alternate' type='text/html' href='https://code.northwest.io/axon.git/commit/?id=170bdf9c14899e436e7aae4411bcb5cd166e7217'/>
<id>urn:sha1:170bdf9c14899e436e7aae4411bcb5cd166e7217</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add axon CLI for pub/sub; fix relay hijack context bug</title>
<updated>2026-03-09T19:48:39+00:00</updated>
<author>
<name>bndw</name>
<email>ben@bdw.to</email>
</author>
<published>2026-03-09T19:48:39+00:00</published>
<link rel='alternate' type='text/html' href='https://code.northwest.io/axon.git/commit/?id=0bd392e076e36c80a152abe00cbcd0bc9efedd9c'/>
<id>urn:sha1:0bd392e076e36c80a152abe00cbcd0bc9efedd9c</id>
<content type='text'>
- cmd/axon: new CLI module with keygen, pub, and req subcommands
  - keygen: generate Ed25519 keypair, print hex seed and pubkey
  - pub: sign and publish an event; accepts --kind, --content, --tag
  - req: query/stream events as JSON lines; accepts --kind, --author,
    --tag, --since, --until, --limit, --stream
  - key loaded from --key flag or AXON_KEY env var

- relay/websocket: add Dial() for client-side WebSocket handshake
  (ws:// and wss://, RFC 6455 masking via client:true)

- relay/server: fix broken-pipe on auth by switching hijacked conn
  goroutine from r.Context() to context.Background(); r.Context() is
  cancelled by net/http immediately after Hijack is called
</content>
</entry>
<entry>
<title>feat: phase 2 relay implementation</title>
<updated>2026-03-09T15:01:02+00:00</updated>
<author>
<name>bndw</name>
<email>ben@bdw.to</email>
</author>
<published>2026-03-09T15:01:02+00:00</published>
<link rel='alternate' type='text/html' href='https://code.northwest.io/axon.git/commit/?id=61a85baf87d89fcc09f9469a113a2ddc982b0a24'/>
<id>urn:sha1:61a85baf87d89fcc09f9469a113a2ddc982b0a24</id>
<content type='text'>
Implement the Axon relay as relay/ (module axon/relay). Includes:
- WebSocket framing (RFC 6455, no external deps) in relay/websocket/
- Per-connection auth: challenge/response with ed25519 + allowlist check
- Ingest pipeline: sig verify, dedup, ephemeral fanout, SQLite persistence
- Subscription manager with prefix-matching filter fanout in relay/subscription/
- SQLite storage with WAL/cache config and UNION query builder in relay/storage/
- Graceful shutdown on SIGINT/SIGTERM
- Filter/TagFilter types added to axon core package (required by relay)
</content>
</entry>
</feed>
