typeduck-codex-web 0.4.0

A standalone browser interface and Codex runtime
Documentation
# typeduck-codex-web

`typeduck-codex-web` is a standalone Codex runtime with a browser interface. It
includes the app server, so it does not require another `codex` executable.

## Install

```console
cargo install typeduck-codex-web
```

Start the user daemon and open its project dashboard:

```console
typeduck-codex-web
```

The dashboard discovers recent projects and sessions from your Codex history. Use
the directory picker to start work anywhere the daemon account can access, or open
a specific directory directly:

```console
typeduck-codex-web -C /path/to/project
```

On startup the command prints a private bootstrap URL. Opening it establishes an
HTTP-only browser session scoped to an unguessable server path; the persistent
secret remains in `CODEX_HOME`. Use `--reset-token` to revoke existing browser
sessions.

Run `typeduck-codex-web --help` for port, browser, working-directory, and
configuration options.

## Accounts and proxies

Create `$CODEX_HOME/typeduck-codex-web/daemon.toml` to configure accounts in
fallback order. Each account uses its own Codex home, so credentials stay
isolated. At startup the daemon selects the first signed-in account whose
reported rate limit is still available.

```toml
port = 36915
mcp_oauth_callback_url = "http://127.0.0.1:36915/oauth/callback"

[[accounts]]
name = "primary"
label = "Work"
codex_home = "/home/me/.codex-work"
proxy = "http://127.0.0.1:8080"

[[accounts]]
name = "backup"
label = "Personal"
codex_home = "/home/me/.codex-personal"
use_ssh_tunnel = true

[ssh_tunnel]
destination = "me@bastion.example.com"
identity_file = "/home/me/.ssh/id_ed25519"
ssh_port = 22
# local_port = 1080 # omit to choose an available loopback port
```

Proxy URLs may use `http`, `https`, `socks5`, or `socks5h`. The daemon applies
the selected account's proxy to Codex-owned OpenAI HTTP and WebSocket clients.
For `use_ssh_tunnel`, it owns an OpenSSH `ssh -N -D` child process and stops it
with the daemon. The SSH feature therefore requires `ssh` on `PATH`; the Codex
runtime itself remains embedded in the installed binary.

Use `--daemon-config /path/to/daemon.toml` to load another file.
The optional `port` and `mcp_oauth_callback_url` values keep MCP OAuth redirect
URLs stable across daemon restarts. CLI `--port` takes precedence when nonzero.