Wire pubsub through iroh-gossip
This commit is contained in:
parent
59c463eb40
commit
eec4c92145
8 changed files with 291 additions and 38 deletions
32
README.md
32
README.md
|
|
@ -160,9 +160,9 @@ The bootstrap implementation provides:
|
|||
CLI input and output are JSON views, while the store keeps durable Automerge
|
||||
save bytes. `geth document sync <node-id> <name> [--bearer-secret <secret>]`
|
||||
pulls authorized remote Automerge state.
|
||||
- local daemon-lifetime pubsub snapshots: `geth pubsub pub/sub`; `geth pubsub
|
||||
pub <topic> <message> --node <node-id>` publishes to an authorized peer;
|
||||
`geth pubsub sub <topic> --node <node-id>` reads an authorized peer snapshot
|
||||
- lossy pubsub wakeups: `geth pubsub pub/sub`; local messages are retained in
|
||||
a daemon-lifetime ring buffer, while authorized remote publish/subscribe joins
|
||||
deterministic native `iroh-gossip` topics after geth control authorization
|
||||
- SSH certificate flow metadata:
|
||||
- `geth ssh cert request --public-key <path> --principal <name> [--subject <principal>]`
|
||||
- `geth ssh cert requests [--subject <principal>]`
|
||||
|
|
@ -204,8 +204,9 @@ serving peer as a provider visible with `geth cas providers <hash>`.
|
|||
libraries `iroh-blobs 0.97.0`, `iroh-docs 0.95.0`, and `iroh-gossip 0.95.0`
|
||||
against the same daemon-owned endpoint generation. KV stores are mirrored into
|
||||
native `iroh-docs` namespaces and peers receive read-only document tickets only
|
||||
after geth authorization succeeds. Pubsub still uses its documented bootstrap
|
||||
equivalent until the native gossip migration lands.
|
||||
after geth authorization succeeds. Pubsub joins native `iroh-gossip` topics
|
||||
only after the geth control path has authenticated the peer-card endpoint
|
||||
binding and checked the topic capability.
|
||||
Remote resource commands that accept `--bearer-secret` can also authorize with a
|
||||
resource-scoped bearer proof generated from the private bearer token returned at
|
||||
creation time. The persisted auth log stores a public bearer id and token
|
||||
|
|
@ -245,14 +246,15 @@ manual `geth kv sync <node-id> <name>` and background ticks require `kv.read`
|
|||
on the remote `resource:kv:<name>`. Authorized sync imports from the remote
|
||||
Iroh Documents namespace where available, keeps SQLite as the durable local
|
||||
index, and imports only remote entries that are not older than the local value.
|
||||
Remote pubsub publish uses the protected Iroh control path too. The remote peer
|
||||
requires `pubsub.publish` on `resource:pubsub:<topic>` before recording the
|
||||
message in its local daemon-lifetime ring buffer. Pubsub remains lossy and is
|
||||
not durable storage; facts that must survive restart or reconcile offline
|
||||
belong in CAS, KV, document, or DB resources. Remote pubsub subscribe uses the
|
||||
same protected path and requires `pubsub.subscribe` on
|
||||
`resource:pubsub:<topic>` before returning the peer's current daemon-lifetime
|
||||
snapshot for that topic.
|
||||
Remote pubsub publish uses the protected Iroh control path as an authorization
|
||||
preflight. The remote peer requires `pubsub.publish` on
|
||||
`resource:pubsub:<topic>` before recording the message and broadcasting it on a
|
||||
deterministic native `iroh-gossip` topic. Pubsub remains lossy and is not
|
||||
durable storage; facts that must survive restart or reconcile offline belong in
|
||||
CAS, KV, document, or DB resources. Remote pubsub subscribe uses the same
|
||||
protected path, requires `pubsub.subscribe` on `resource:pubsub:<topic>`, joins
|
||||
the gossip topic, and returns the peer's current daemon-lifetime snapshot for
|
||||
that topic.
|
||||
Remote pipe connect uses the same protected Iroh control path and requires
|
||||
`pipe.connect` on `resource:pipe:<name>`. The current prototype records a remote
|
||||
connection attempt and whether a listener exists. `geth pipe send <name>
|
||||
|
|
@ -313,8 +315,8 @@ Everything meaningful is modeled as a resource. Planned resource kinds are:
|
|||
- `pipe`: dumbpipe-like byte streams over Iroh; the bootstrap has a local
|
||||
daemon registry only
|
||||
- `document`: Automerge documents over Iroh streams
|
||||
- `pubsub`: lossy notifications, not authoritative storage; the bootstrap
|
||||
keeps only an in-memory daemon-lifetime ring buffer
|
||||
- `pubsub`: lossy notifications over native `iroh-gossip` after geth
|
||||
authorization, with only an in-memory daemon-lifetime ring buffer
|
||||
- `cas`: content-addressed blob storage and distribution
|
||||
- `ssh-proxy`: authorized SSH proxy/admin access over Iroh
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue