CodexMonitor is a macOS Tauri app for orchestrating multiple Codex agents across local workspaces. It provides a sidebar to manage projects, a home screen for quick actions, and a conversation view backed by the Codex app-server protocol.
- Add and persist workspaces using the system folder picker.
- Spawn one
codex app-serverper workspace and stream events over JSON-RPC. - Restore threads per workspace from the Codex rollout history (
thread/list) and resume on selection. - Start agent threads, send messages, show reasoning/tool call items, and handle approvals.
- Worktree agents per workspace (create/delete git worktrees under
.codex-worktrees). - Git panel with diff stats, file diffs, and commit log; open commits on GitHub when a remote is detected.
- Branch list with checkout and create flows.
- Model picker, reasoning effort selector, access mode (read-only/current/full-access), and context usage ring.
- Skills menu and composer autocomplete for
$skilland@filetokens. - Plan panel for per-turn planning updates and turn interruption controls.
- Review runs against uncommitted changes, base branch, commits, or custom instructions.
- Debug panel for warning/error events and clipboard export.
- Sidebar usage + credits meter for account rate limits.
- Archive threads (removes from UI and calls
thread/archive). - macOS overlay title bar with vibrancy effects.
- Node.js + npm
- Rust toolchain (stable)
- Codex installed on your system and available as
codexinPATH - Git CLI (used for worktree operations)
If the codex binary is not in PATH, update the backend to pass a custom path per workspace.
Install dependencies:
npm installRun in dev mode:
npm run tauri devBuild the production Tauri bundle (app + dmg):
npm run tauri buildThe macOS app bundle will be in src-tauri/target/release/bundle/macos/.
Run the TypeScript checker (no emit):
npm run typecheckNote: npm run build also runs tsc before bundling the frontend.
src/
components/ UI building blocks
hooks/ state + event wiring
services/ Tauri IPC wrapper
styles/ split CSS by area
types.ts shared types
src-tauri/
src/lib.rs Tauri backend + codex app-server client
tauri.conf.json window configuration
- Workspaces persist to
workspaces.jsonunder the app data directory. - On launch and on window focus, the app reconnects and refreshes thread lists for each workspace.
- Threads are restored by filtering
thread/listresults using the workspacecwd. - Selecting a thread always calls
thread/resumeto refresh messages from disk. - CLI sessions appear if their
cwdmatches the workspace path; they are not live-streamed unless resumed. - The app uses
codex app-serverover stdio; seesrc-tauri/src/lib.rs. - Worktree agents live in
.codex-worktrees/and are removed on delete; the root repo gets a.gitignoreentry.
Frontend calls live in src/services/tauri.ts and map to commands in src-tauri/src/lib.rs. Core commands include:
- Workspace lifecycle:
list_workspaces,add_workspace,add_worktree,remove_workspace,remove_worktree,connect_workspace,update_workspace_settings. - Threads:
start_thread,list_threads,resume_thread,archive_thread,send_user_message,turn_interrupt,respond_to_server_request. - Reviews + models:
start_review,model_list,account_rate_limits,skills_list. - Git + files:
get_git_status,get_git_diffs,get_git_log,get_git_remote,list_git_branches,checkout_git_branch,create_git_branch,list_workspace_files.
