Adom Bridge
Public Made by Adomby adom
Adom Bridge unleashes your AI onto your full PC: full power, full safety. The AI breaks out of the container it runs in and onto your real machine, managing and running your entire laptop as you: launch apps, move files, drive any window, control KiCad, Fusion 360 or your real signed-in browser. Works with any AI, cloud or local (Claude Desktop, Claude Code, Codex), no Hydrogen required. Bridge and its bridges are an operating system for AI, with managed Node and Python runtimes, and a human-onl
server_add: documented upsert does NOT replace authToken on an existing entry (silent auth-fail loop)
Version: relay + desktops on AD 1.9.213, container CLI 1.9.213. Impact: high for anyone rotating relay tokens — the failure is silent and looks like an unstable relay.
What happened
Rotating the relay auth token off the well-known default (per issue #33) across 4 relays and 2 desktops.
server_add's own help says it "Upserts by name: if a server with the same name exists…", and documents authToken as "Empty string means 'keep existing token if this is an update; otherwise use default'" — which strongly implies a non-empty value does update it.
It does not. Calling server_add with the same name/url and a new non-empty authToken returns ok:true, but the stored entry keeps the old token.
Symptom (why this is nasty)
The desktop then flaps against a relay that has already rotated:
[…] WS connected: 1cf9aefd… from 127.0.0.1:54964
[…] ← 1cf9aefd… type=auth id=5005a756…
[…] Auth FAILED: 1cf9aefd…
[…] WS disconnected: 1cf9aefd…
server_list cycles reconnecting → connected → disconnected. Because server_add reported success, every diagnostic points at the relay or the network. We burned most of a rotation window on this before testing the assumption.
server_list also does not return authToken (correct, it is a secret), so there is no way to observe that the stored token is stale — the bug is unobservable through the API.
Repro
server_list→ note an entryX, connected.- Rotate relay
X's token: restart withADOM_AUTH_TOKEN=<new>. server_add {name:"X", url:"<same>", authToken:"<new>", autoConnect:true}→ok:true.- Observe
Auth FAILEDon the relay and flapping inserver_list. - Now
server_remove {name:"X"}then the identicalserver_add→ connects and stays.
Workaround
server_remove + server_add. See also the companion issue about that being unsafe for the entry carrying your own command.
Asks
- Make a non-empty
authTokenactually update an existing entry, or - if upsert is intentionally add-only for secrets, say so in the verb help and return something other than a bare
ok:true(e.g.updated:false, tokenChanged:false) so a caller can tell. - Ideally add a dedicated
server_set_token {name, authToken}that is atomic and does not require deleting the entry.