Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,21 +301,35 @@ dashboard controls flow through the `/dashboard/control` WebSocket. The HTTP sur
kept to dashboard pages/assets, `GET /livez`, and the local account-control API used by
Decodex App.

For dashboard UI development, use the mock operator dashboard server:
For dashboard UI development, use one mock operator dashboard server for both the
browser dashboard and Decodex App preview:

```sh
node dev/operator-dashboard-mock.mjs --listen-address 127.0.0.1:57399
node dev/operator-dashboard-mock.mjs --listen-address 127.0.0.1:57399 --use-codex-auth
```

That single mock listener serves `GET /dashboard`, `GET /api/accounts`, and the
dashboard authority WebSocket at `ws://127.0.0.1:57399/dashboard/control`. When
previewing Decodex App against the mock, point the App at the same base URL with
`DECODEX_APP_SERVER_URL=http://127.0.0.1:57399`; do not start a second mock server for
the App. This environment variable is authoritative: when it is set, Decodex App
connects only to that server and reports an error instead of falling back to the
default `127.0.0.1:8192` runtime.

```sh
DECODEX_APP_SERVER_URL=http://127.0.0.1:57399 open -n target/decodex-app/Decodex.app
```

Use hidden `decodex serve --dev --listen-address <ADDR>` only when
developing local account/app snapshot APIs against real runtime state while explicitly
avoiding scheduler activity. Dev mode deliberately does not register projects, poll
Linear, dispatch work, or accept `--config`. Decodex App's normal
fallback server is ordinary `decodex serve --listen-address 127.0.0.1:8192`; the CLI
owns the default scheduler cadences. App launch connects to an
existing live default listener instead of starting a duplicate server. For
dashboard-only UI work, prefer the mock server above.
existing live default listener instead of starting a duplicate server only when
`DECODEX_APP_SERVER_URL` is unset. For dashboard and App preview UI work, prefer the
single mock server above.

The dashboard semantics and local-vs-external state boundary live in
`docs/reference/operator-control-plane.md`.
Expand Down
Loading