Skip to content

0.5.208: the client stays on :8080 after the run-without-AI hand-off and never moves to the node on :4243 #43

Description

@emooreatx

0.5.208: after the run-without-AI hand-off the client moves its local node URL to :8080 and polls the dead port forever

First, the good news, because it is most of the story: 0.5.208 fixed the YOU step and the whole no-AI wizard now runs. On Windows, you_step, join_federation, setup_complete, claim_settled and without_ai_recorded all pass — 6/7 — and the agent confirms CIRIS_RUN_WITHOUT_AI=true reached its .env. bb76e51 did exactly what you said it would.

What is left is one client-side bug at the hand-off, and the desktop log names it in a single line.

The smoking gun

ciris_desktop_setup.log, line 7:

[INFO][CIRISApiClient] [setLocalNodeUrl] local node is http://127.0.0.1:8080 (was http://127.0.0.1:4243)

The client started with the node at :4243 and then overwrote it with :8080 — the wrong direction for a run-without-AI session. Everything after that follows from it:

[INFO][StartupViewModel] [STARTUP][STATUS] Restarting your node...
[INFO][CIRISApiClient] [init] CIRISApiClient initialized with baseUrl=http://127.0.0.1:8080
[PythonRuntime.desktop] Health check attempt 102: null
[ERROR][ServerConnectionVM] [checkConnectionStatus] Health check failed: Connection refused

109 CIRISApiClient inits in that log. Every single one at :8080. Not one at :4243.

The node was up the entire time

The node's own output is teed into the same file, so both halves are visible side by side:

[CIRIS] 2026-09-07T17:30:05.294081Z INFO ciris_server::compose: read API up — GET /lens/api/v1/* + GET /v1/identity read_api=0.0.0.0:4243
[CIRIS] 2026-09-07T17:30:05.295577Z INFO ciris_lens_core::role::node: lens read API listening listen_addr=0.0.0.0:4243

And our side did what it promised, 0.12s after the exec:

[RUN-WITHOUT-AI] setup complete; replacing this process (pid=8820) with the ciris-server node.
                 :8080 goes away and the client moves to :4243
[RUN-WITHOUT-AI] replacing this process (pid=8820) with the node in place:
                 [python.exe, -m, ciris_server, --headless, --home, …, --key-id, …]

So: agent gone by design, node listening on :4243, client polling :8080. The user sees "Restarting your node…" indefinitely.

Not a crash

Worth stating because our own harness got this wrong first and I have fixed it on our side: the app did not die. No exception, no System.exit, the log simply runs on to health-check attempt 102 and past the node's 17:30:05 lines. Our diagnostic concluded "the app PROCESS IS GONE" because both :9091 and :8080 were unreachable — an inference that is valid normally (two listeners, one process) and invalid here, since :8080 is supposed to be gone. That is CIRISAgent@782963524; the verdict now probes the node before declaring anything dead, and our announce check now authenticates against the node on a no-AI leg rather than against a port that cannot exist.

What we think the fix is, without prescribing it

setLocalNodeUrl appears to be applying a default, or a persisted pre-setup value, over the :4243 the run-without-AI branch had already selected — the log line reads as an overwrite, not a choice. The wizard clearly knows the right answer at question time (0.5.203 shipped exactly that), so the loss looks like it happens at the setup→startup transition rather than in the wizard.

The invariant we would test for: once run_without_ai is recorded, no code path may set the local node URL back to the agent port. Right now the last writer wins and it is the wrong one.

Reproduction

CIRISAgent five-platform gate, run #34147279506, windows job, live-qa-windows artifact → ciris_desktop_setup.log. Agent side: logs/ciris-windows/ciris_agent_20260907_172932.log, grep RUN-WITHOUT-AI. Node side: logs/ciris-windows/ciris-server.log.2026-09-07.

This is the last thing standing between the no-AI leg and green for us. Everything else in that leg passed.

Activity

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