2025-11-14 12:39:58 -08:00
|
|
|
# App Server Test Client
|
2026-02-13 09:34:35 -08:00
|
|
|
Quickstart for running and hitting `codex app-server`.
|
|
|
|
|
|
|
|
|
|
## Quickstart
|
|
|
|
|
|
|
|
|
|
Run from `<reporoot>/codex-rs`.
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 1) Build debug codex binary
|
|
|
|
|
cargo build -p codex-cli --bin codex
|
|
|
|
|
|
|
|
|
|
# 2) Start websocket app-server in background
|
|
|
|
|
cargo run -p codex-app-server-test-client -- \
|
|
|
|
|
--codex-bin ./target/debug/codex \
|
|
|
|
|
serve --listen ws://127.0.0.1:4222 --kill
|
|
|
|
|
|
|
|
|
|
# 3) Call app-server (defaults to ws://127.0.0.1:4222)
|
|
|
|
|
cargo run -p codex-app-server-test-client -- model-list
|
|
|
|
|
```
|
2026-02-13 15:09:58 -08:00
|
|
|
|
|
|
|
|
## Testing Thread Rejoin Behavior
|
|
|
|
|
|
|
|
|
|
Build and start an app server using commands above. The app-server log is written to `/tmp/codex-app-server-test-client/app-server.log`
|
|
|
|
|
|
|
|
|
|
### 1) Get a thread id
|
|
|
|
|
|
|
|
|
|
Create at least one thread, then list threads:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cargo run -p codex-app-server-test-client -- send-message-v2 "seed thread for rejoin test"
|
|
|
|
|
cargo run -p codex-app-server-test-client -- thread-list --limit 5
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Copy a thread id from the `thread-list` output.
|
|
|
|
|
|
|
|
|
|
### 2) Rejoin while a turn is in progress (two terminals)
|
|
|
|
|
|
|
|
|
|
Terminal A:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cargo run --bin codex-app-server-test-client -- \
|
|
|
|
|
resume-message-v2 <THREAD_ID> "respond with thorough docs on the rust core"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Terminal B (while Terminal A is still streaming):
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cargo run --bin codex-app-server-test-client -- thread-resume <THREAD_ID>
|
|
|
|
|
```
|