Skip to content

Door front migration: antigravity-ls-proxy (18745) callers repoint to the façade #1409

Closed

Description

@dezren39

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

  1. 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.
  2. Any live front caller repoints to the server façade; design-code's chain, if still live, repoints with it.
  3. 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).
  4. If zero live callers, close with the grep evidence — verification-only retirement.

Activity

  1. dezren39 commented on Nov 2, 2026

    @dezren39
    Author

    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:
      • L11: const ANTIGRAVITY_LS_PORT = parseProxyPort('ANTIGRAVITY_LS_PROXY_PORT', 18745);
      • 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.
    • What must change before Door front migration: antigravity-ls-proxy (18745) callers repoint to the façade #1409 can close: design-code's recipes must be repointed off :18745 — primary/fallback targets moved to antigravity-direct (:18751) or to the OpenCode server façade, ANTIGRAVITY_LS_PORT/FLEET_BACKEND_PORTS updated 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.service also confirms the unit itself only Wants=codex-proxy.service — the :18745 chain exists solely in the proxy's own recipe table above.

    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.

  2. dezren39 commented on Nov 2, 2026

    @dezren39
    Author

    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)

    • PR: fix(design-code): repoint :18745 legs to antigravity-direct :18751 (#1413, unblocks opencode#1409) developing-today/code#4626 — state MERGED, mergedAt 2026-11-02T22:32:52Z, mergeCommit 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/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)).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions