Skip to content

cli: server-ready banner prints container-internal http://localhost:<port> URLs, ignoring resolved OS_AUTH_URL / OS_BASE_URL #10646

Description

@os-zhuang

Origin: moved from objectstack-ai/cloud#1507 (EE 4.1.0 published-image acceptance) — the fix lands in packages/cli, so the card lives here (file-at-destination); the source card is closed as moved.

Symptom (measured, EE 4.1.0 compose stack)

The boot banner prints the container-internal address:

 ➜ API: http://localhost:3000/
➜ Console: http://localhost:3000/_console/
➜ MCP: http://localhost:3000/api/v1/mcp
connect an AI client (Claude Code, Cursor, …) · skill: http://localhost:3000/api/v1/mcp/skill

while the published entry point is Caddy on :80 (the deploy README's step 5 is open http://localhost), and OS_AUTH_URL is already resolved to http://localhost by compose. :3000 is an expose-only container port — unreachable from the host (no ports: mapping; even less so under --scale app=N).

Impact: following the banner's Console link fails outright; after moving to a domain (per the README's HTTPS step) the banner still says localhost:3000; the MCP line is the address customers copy into AI clients, and it can never connect.

PM 建议的路线(可选,实测优先)

Resolve the banner's external base through the runtime's existing precedence chain (OS_AUTH_URLOS_BASE_URLhttp://localhost:<port> fallback) — the same chain the compose template documents; when no external base can be determined, prefer printing no absolute URL over a wrong one.

Landing spot: packages/cli/src/utils/format.ts:583 area (server-ready banner assembly) and its call site in serve.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions