Runtime bridge provisioning (supervisor + tenant persistence) #45
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Roadmap: Stage 2 of the path to hosted, configure-without-install bridging (see #43).
Today the bridge spawns all of its bridges once at startup from the TOML config (the
for (idx, bridge)loop incrates/bridge/src/main.rs),SharedPool::register_channelis only ever called at startup, the config is read-onlyserdewith no write-back, and the only runtime lifecycle is SIGINT/SIGTERM shutdown. So provisioning a new tenant currently means editing TOML and restarting.Hosting needs to add and remove a bridge while running:
spawn_bridge(cfg)/stop_bridge(id), reusing each bridge's existing per-bridgeCancellationTokentree for clean teardown.unregister_channelcounterpart toregister_channel(the pool already hands back a lifetime-freeArc<ChannelView>, so the seam is half there).Config::validateinvariants (uniquestore_path, unique device tuple) when adding a tenant.Precondition for the management bot (#4) and the public instance (#43). Background analysis in
docs/nether-voicebridge-public-instance-feasibility.md.Shipped in v0.3.0-alpha.7 (master
e7a0275) and deployed to prod 2026-07-05. Staging acceptance had passed all six criteria with Purple Voice as a live tenant; post-deploy verification on prod: all 4 static bridges up with reused crypto device ids, keys re-delivered <3s into a live call,--check-tenantspre-flight working against the prod data dir (no tenants file yet — static-only until runtime tenants are added). Closing.