Model mix by spend
Spend & tokens over time
Signals · what to fix next
Persistent Claude Code session on the VPS. Browser reconnects attach to the same tmux session.
Persistent Codex CLI session on the VPS. Browser reconnects attach to the same tmux session.
All chats
Conversation
Toolsets enabled for the agent
Installed skills
Your knowledge system
Core Session Skill StaleAuthenticate the agents (one‑time, over SSH)
For security, the dashboard runs Claude Code and
Codex as the non‑root claude-os service
account — never as root. Each CLI must be signed in
as that account once over SSH; the OAuth tokens then persist
and every dashboard terminal session reuses them. A login you did as
root does not carry over.
-
1 · SSH in and become the service account
From your machine, connect to the VPS and open a login shell as
claude-os(this puts~/.local/binon your PATH):ssh root@187.124.114.2 sudo -iu claude-os -
2 · Sign in to Claude Code (OAuth)
Launch Claude; on first run it shows a login prompt. Choose “Log in with your Claude account”, open the URL it prints in your browser, approve, and (if asked) paste the code back.
claudeAlready inside Claude? Run
/loginto re‑authenticate. Uses your Claude subscription/account — this app never stores the token. -
3 · Sign in to Codex (device‑code OAuth)
Use the headless device‑auth flow. It prints a URL and a code — open the URL in your browser, enter the code, and approve with your ChatGPT account.
codex login --device-authIf it says device auth is disabled, enable “Device code authorization” in ChatGPT → Settings → Security, then retry.
-
4 · Verify, then use the dashboard
Confirm both are signed in, then leave the SSH session:
codex login status claude --version exitNow open the Claude Code or Codex page here. The terminal attaches to a persistent
tmuxsession for your project — reconnecting reattaches to the same one.
claude: command not found→ runPATH=$HOME/.local/bin:$PATH claude(or re‑open withsudo -iu claude-os).- “not installed for the service account” on a terminal page → the CLI
isn’t on
claude-os’s PATH; see the install step in the repo README. - Terminals require Microsoft SSO + exactly one allow‑listed email — already configured.