You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Door front migration: antigravity-ls-proxy (18745) callers repoint to the façade #1409
Part of #1146 (generic OpenAI façades on the server; design: specs/2026-11-01T04-10-00Z_design_openai-facades.md §8/§10 step 3). One issue per door front — this is the antigravity-ls door's turn under Drew's 2026-11-02 order to fold ALL proxy programs into OpenCode.
Door
bin/antigravity-ls-proxy.mjs (developing-today/code), port 18745. Front: /v1/chat/completions, /v1/models. Backend: Antigravity language server (spawned LS process lifecycle). Known quirk history: model tool calls were text-only until ex-#865 added OpenAI tool_calls translation — any surviving caller depending on that translation must get it from the façade's translation layer, tested once (§9).
Current state (verified 2026-11-02)
The Nix unit was RETIRED 2026-10-30 (home/common/default.nix): antigravity-direct (:18751) replaced this door; the antigravity-ls provider sits in disabled_providers. No unit file, no localhost listener on 18745. bin/antigravity-ls-proxy.mjs remains in the repo as history, uninvoked.
The deployed opencode.jsonc still carries the provider block with baseURL :18745 (disabled) and comments recording a 38-model list read from this proxy.
Work
Consumer inventory: grep every reference to :18745 / ANTIGRAVITY_LS_PROXY_PORT / antigravity-ls across developing-today/code, the deployed opencode.jsonc, OpenClaw configs/docs, and design-code-proxy (which historically chained into this door); list each here first.
Any live front caller repoints to the server façade; design-code's chain, if still live, repoints with it.
Live-verify; then confirm the front stays closed and decide the provider block's fate (disabled blocks are the fleet's provider switchboard — removal only if Drew's switchboard rule is satisfied by the façade replacement).
If zero live callers, close with the grep evidence — verification-only retirement.
Verification — BLOCKED, do not close (live re-verified 2026-11-02, laptop amd-6)
Wave C verification for the antigravity-ls door (:18745) under #1146. The door itself is retired, but a still-running service routes through it: design-code-proxy. Per the Wave C rule this is a blocker — this issue stays OPEN.
The blocker (precise)
design-code-proxy.service is loaded, enabled, active (running) since 2026-10-31 09:20 CDT, Restart=always, PID 2136631, listening on 127.0.0.1:18746, serving its 11 virtual models at /v1/models today.
Its live source, ~/git/code/bin/design-code-proxy.mjs (deployed from ~/code, the same tree the unit executes), wires :18745 in as a primary/fallback backend:
MODELS recipes: most of the 11 personas (e.g. claude-haiku-5.5, deepseek-v4.1-flash, glm-5.3-flash, mimo-v2.6-flash/pro, design-code-pro, design-code-flash) use primary: { port: ANTIGRAVITY_LS_PORT, … }, and nearly every other recipe — including the Codex-primary ones — uses it as fallback. Fallback-by-keyword for gpt/codex ids also falls back to :18745.
L93: FLEET_BACKEND_PORTS = new Set([18744, 19744, 18745, 19745]), and refreshBackendCatalogs() actively probes http://127.0.0.1:18745/v1/models (fired from /health and the request path); chat dispatch attempts the :18745 target first / on fallback. Against today's dead port those probes and dispatches fail and are silently absorbed (“keep last-known-good” / fallback), which is why nothing visibly breaks — the dependency is live in code and config, not hypothetical.
Everything else verifies clean (same checks as #1408)
Unit/listener:antigravity-ls-proxy.service → not-found, inactive, dead; not enabled; no unit file; no process; ss shows no 127.0.0.1:18745 listener; curl http://127.0.0.1:18745/v1/models → rc 7 (refused); no journal entries since 2026-10-30. Residual: Tailscale Serve still forwards tailnet :18745 → the dead localhost port (dangling rule, not a caller).
Config grep: runtime overlay ~/.local/state/opencode/opencode-runtime.jsonc — zero hits for 18745 / ANTIGRAVITY_LS_PROXY_PORT / antigravity-ls. Tracked/deployed opencode.jsonc keeps the antigravity-ls provider block (baseURL …:-18745) only as the documented disabled switchboard definition (antigravity-ls in disabled_providers, 2026-10-30 header note; no route leaf names it); route proxy bin/opencode-route-proxy.mjs — zero hits; OpenChamber — no port hits, only dead per-model variant-preference keys in settings.json; Nix home/common/default.nix — retirement comments + manual wrapper bin only; bin/provider-catalog-sync.mjs source-table entry is manual tooling (no unit/timer, inert “not-enumerable” failure). OpenClaw TOOLS.md / gateway prompt still list “antigravity-ls 18745” as stale documentation (live ~/.openclaw/openclaw.json: zero hits).
Traffic (route_attempt ledger, read-only, live DB — 137,647 attempts, latest 2026-11-02 16:25 local):antigravity-ls = 256 attempts all-time, last 2026-10-30 14:24:50; zero attempts since 2026-10-30 15:00, against 106,505 attempts to all providers since 2026-10-31. The design-code providers themselves last appear 2026-10-24 — no recent ledger traffic masks the blocker; it is the running service's configured routing, not observed calls, that blocks closure.
Disposition: OPEN — blocked by design-code-proxy's live :18745 routing; unblocks when #1413 repoints design-code off :18745 and that repoint is live-verified.
Verification — UNBLOCKED and live-verified 2026-11-02 (laptop amd-6, Wave C / #1413)
The blocker recorded in comment 6590071718 — design-code-proxy routing through the retired antigravity-ls door :18745 — is cleared, merged, deployed, and live-verified.
What changed (developing-today/code PR anomalyco#4626, merged, API-verified)
bin/design-code-proxy.mjs: ANTIGRAVITY_LS_PORT / ANTIGRAVITY_LS_PROXY_PORT (default 18745) → ANTIGRAVITY_DIRECT_PORT (default 18751). Every MODELS recipe primary/fallback leg (all 11 personas) and the gpt/codex keyword-fallback leg follow; backend model ids unchanged (gemini-3.8-flash, claude-sonnet-5-5 — both verified present in antigravity-direct's live /v1/models before the change).
FLEET_BACKEND_PORTS: [18744, 19744, 18745, 19745] → [18744, 19744, 18751, 19751] — catalog validation now probes the direct door, not the dead port.
The only remaining 18745 string in the file is the comment recording that the ls door is retired. Tests: node --test bin/design-code-proxy.test.mjs — 16/16 pass on the laptop.
Live verification
Scratch instance of the repointed proxy (pre-merge): design-code-flash (non-stream) and design-code-pro (stream, [DONE]-terminated, usage present) dispatched to 127.0.0.1:18751 (gemini-3.8-flash); gpt-6-luna dispatched to 127.0.0.1:18744 unchanged; unknown model id still 400.
Deployed service: the merged files were checked out into the deployed ~/code tree (the unit executes $HOME/code/bin/design-code-proxy.mjs directly; repo-keeper snapshots that tree) and design-code-proxy.service restarted. Startup log now reads Backends: Antigravity Direct (18751), Codex (18744), AMR Upstream (...). A chat call against the deployed door — POST http://127.0.0.1:18746/v1/chat/completions, model design-code-flash — returned a well-formed completion (DEPLOYED-REPOINT-OK), and the service journal records the dispatch: Trying 'design-code-flash' -> 127.0.0.1:18751 (gemini-3.8-flash). No :18745 dispatch or probe remains in the running service.
Disposition
All other checks from the 6590071718 verification were already clean (no :18745 unit/listener, ledger silent since 2026-10-30, switchboard provider block untouched). With the design-code chain repointed and live-verified, the last live caller is gone — closing #1409 as completed. The design-code door's own migration continues on #1413 (personas → routes; Gate 1 credential story at #1413 (comment)).
Activity
dezren39 commentedon Nov 2, 2026
Verification — BLOCKED, do not close (live re-verified 2026-11-02, laptop amd-6)
Wave C verification for the antigravity-ls door (:18745) under #1146. The door itself is retired, but a still-running service routes through it: design-code-proxy. Per the Wave C rule this is a blocker — this issue stays OPEN.
The blocker (precise)
design-code-proxy.serviceis loaded, enabled, active (running) since 2026-10-31 09:20 CDT,Restart=always, PID 2136631, listening on 127.0.0.1:18746, serving its 11 virtual models at/v1/modelstoday.~/git/code/bin/design-code-proxy.mjs(deployed from~/code, the same tree the unit executes), wires :18745 in as a primary/fallback backend:const ANTIGRAVITY_LS_PORT = parseProxyPort('ANTIGRAVITY_LS_PROXY_PORT', 18745);claude-haiku-5.5,deepseek-v4.1-flash,glm-5.3-flash,mimo-v2.6-flash/pro,design-code-pro,design-code-flash) useprimary: { port: ANTIGRAVITY_LS_PORT, … }, and nearly every other recipe — including the Codex-primary ones — uses it asfallback. Fallback-by-keyword for gpt/codex ids also falls back to :18745.FLEET_BACKEND_PORTS = new Set([18744, 19744, 18745, 19745]), andrefreshBackendCatalogs()actively probeshttp://127.0.0.1:18745/v1/models(fired from/healthand the request path); chat dispatch attempts the :18745 target first / on fallback. Against today's dead port those probes and dispatches fail and are silently absorbed (“keep last-known-good” / fallback), which is why nothing visibly breaks — the dependency is live in code and config, not hypothetical.ANTIGRAVITY_LS_PORT/FLEET_BACKEND_PORTSupdated accordingly, and the repoint live-verified with a design-code chat call. That repoint is the scope of Door front migration: design-code-proxy (18746) callers repoint to the façade — personas become routes first #1413 (design-code-proxy (18746) door migration — “personas become routes first”); Door front migration: antigravity-ls-proxy (18745) callers repoint to the façade #1409 is blocked by Door front migration: design-code-proxy (18746) callers repoint to the façade — personas become routes first #1413 landing that change.systemctl --user cat design-code-proxy.servicealso confirms the unit itself onlyWants=codex-proxy.service— the :18745 chain exists solely in the proxy's own recipe table above.Everything else verifies clean (same checks as #1408)
antigravity-ls-proxy.service→ not-found, inactive, dead; not enabled; no unit file; no process;ssshows no 127.0.0.1:18745 listener;curl http://127.0.0.1:18745/v1/models→ rc 7 (refused); no journal entries since 2026-10-30. Residual: Tailscale Serve still forwards tailnet :18745 → the dead localhost port (dangling rule, not a caller).~/.local/state/opencode/opencode-runtime.jsonc— zero hits for 18745 / ANTIGRAVITY_LS_PROXY_PORT / antigravity-ls. Tracked/deployed opencode.jsonc keeps theantigravity-lsprovider block (baseURL …:-18745) only as the documented disabled switchboard definition (antigravity-lsindisabled_providers, 2026-10-30 header note; no route leaf names it); route proxybin/opencode-route-proxy.mjs— zero hits; OpenChamber — no port hits, only dead per-model variant-preference keys in settings.json; Nixhome/common/default.nix— retirement comments + manual wrapper bin only;bin/provider-catalog-sync.mjssource-table entry is manual tooling (no unit/timer, inert “not-enumerable” failure). OpenClaw TOOLS.md / gateway prompt still list “antigravity-ls 18745” as stale documentation (live~/.openclaw/openclaw.json: zero hits).antigravity-ls= 256 attempts all-time, last 2026-10-30 14:24:50; zero attempts since 2026-10-30 15:00, against 106,505 attempts to all providers since 2026-10-31. The design-code providers themselves last appear 2026-10-24 — no recent ledger traffic masks the blocker; it is the running service's configured routing, not observed calls, that blocks closure.Disposition: OPEN — blocked by design-code-proxy's live :18745 routing; unblocks when #1413 repoints design-code off :18745 and that repoint is live-verified.
dezren39 commentedon Nov 2, 2026
Verification — UNBLOCKED and live-verified 2026-11-02 (laptop amd-6, Wave C / #1413)
The blocker recorded in comment 6590071718 — design-code-proxy routing through the retired antigravity-ls door :18745 — is cleared, merged, deployed, and live-verified.
What changed (developing-today/code PR anomalyco#4626, merged, API-verified)
2f62ce6c900b4572b8a333cee708eacf70e57712.bin/design-code-proxy.mjs:ANTIGRAVITY_LS_PORT/ANTIGRAVITY_LS_PROXY_PORT(default 18745) →ANTIGRAVITY_DIRECT_PORT(default 18751). Every MODELS recipe primary/fallback leg (all 11 personas) and the gpt/codex keyword-fallback leg follow; backend model ids unchanged (gemini-3.8-flash,claude-sonnet-5-5— both verified present in antigravity-direct's live/v1/modelsbefore the change).FLEET_BACKEND_PORTS:[18744, 19744, 18745, 19745]→[18744, 19744, 18751, 19751]— catalog validation now probes the direct door, not the dead port.18745string in the file is the comment recording that the ls door is retired. Tests:node --test bin/design-code-proxy.test.mjs— 16/16 pass on the laptop.Live verification
design-code-flash(non-stream) anddesign-code-pro(stream,[DONE]-terminated, usage present) dispatched to127.0.0.1:18751 (gemini-3.8-flash);gpt-6-lunadispatched to127.0.0.1:18744unchanged; unknown model id still 400.~/codetree (the unit executes$HOME/code/bin/design-code-proxy.mjsdirectly; repo-keeper snapshots that tree) anddesign-code-proxy.servicerestarted. Startup log now readsBackends: Antigravity Direct (18751), Codex (18744), AMR Upstream (...). A chat call against the deployed door —POST http://127.0.0.1:18746/v1/chat/completions, modeldesign-code-flash— returned a well-formed completion (DEPLOYED-REPOINT-OK), and the service journal records the dispatch:Trying 'design-code-flash' -> 127.0.0.1:18751 (gemini-3.8-flash). No :18745 dispatch or probe remains in the running service.Disposition
All other checks from the 6590071718 verification were already clean (no :18745 unit/listener, ledger silent since 2026-10-30, switchboard provider block untouched). With the design-code chain repointed and live-verified, the last live caller is gone — closing #1409 as completed. The design-code door's own migration continues on #1413 (personas → routes; Gate 1 credential story at #1413 (comment)).