Monitor coding agents
VibeMon shows the state of your coding sessions and the context and plan usage of each account. It supports Claude Code, Codex, Kiro, OpenClaw, and OpenCode.
Before you start
- A VibeMon account. See Get started.
- Python 3 on the computer where you use the tools. On Windows, install it from python.org.
Use the same operating-system user that runs the coding tool. The installer configures tools that are already installed; it does not install Claude Code, Codex, or the other tools for you. Check Python with python3 --version on macOS/Linux or py -3 --version in PowerShell.
For a setup with buttons, use Install from the Desktop App. The terminal steps below also work without the Desktop App.
1. Install the monitoring script
On the computer where you use the tools, run the command for your system.
macOS or Linux:
curl -fsSL https://vibemon.io/install/install.py | python3 - --all
Windows PowerShell:
& ([scriptblock]::Create((irm https://vibemon.io/install/install.ps1))) --all
--all installs the script for every tool on the computer. To install it for one tool, use one of these options instead of --all. Without an option, the installer shows a menu.
| Option | Tool |
|---|---|
--claude |
Claude Code |
--codex |
Codex |
--kiro |
Kiro |
--openclaw |
OpenClaw (macOS and Linux) |
--opencode |
OpenCode |
The installer keeps your other settings. It makes a .bak copy of each settings file that it changes.
If Claude Code already has its own status line, the installer keeps it, and VibeMon cannot show the Claude Code context and model. To replace it with the VibeMon status line, add --yes to the command.
2. Sign in
If the installer says Token unchanged, it has kept an existing connection and will not show a new code. To change the VibeMon account or repair a deleted token, run the same command with --login. If it says Activity stays local, Web delivery is not connected; use --login to complete this step.
- The installer shows a code, such as
BCDF-GHJK. On a computer with a browser, it also opens vibemon.io/device. - If the page did not open, for example on a server, open vibemon.io/device on any device and enter the code.
- Sign in and select Continue. Make sure that the code and the computer name are correct, then select Allow.
- Go back to the terminal. The installer finishes in a few seconds.
3. Start a session
Restart the coding tool.
- Codex: open
/hooksand trust the VibeMon hooks. - OpenClaw: run
openclaw gateway restart.
- Codex: open
Start a coding session.
Open Coding agents with the same VibeMon sign-in. Allow up to the next 30-second refresh, then open the account card and confirm the project name and report time.
The card uses the detected account label, a profile label, or your explicit name. Send another task to the coding tool and check that the state or report time changes. A Desktop character moving locally does not confirm Web delivery. If the card is missing, see Nothing appears.
Available values depend on the tool. Claude Code and Codex can report plan usage; other integrations may only report activity or context. — means the value is unavailable, not that usage is zero. Waiting or inactive sessions do not keep reporting as if they were working.
Install from the Desktop App
If you use the Desktop App, you can install the script without a terminal:
- Open Settings → Integrations.
- Select Install integration for each tool, then restart the tool.
- To also see the activity on the web and on iPhone, select Sign in to send activity in Send activity to Web.
After installation, follow Start a session to verify the first Web report. Settings → Connections lets the App read the workspace; Send activity to Web lets this computer send to it. Connect both when you want both behaviors.
Keep several accounts apart
A profile is a tool's settings and login directory. To run work and personal accounts at the same time, give each login a separate profile. VibeMon detects supported logins when a new session starts. You do not need to invent an account ID for Codex or Claude subscription logins.
| Tool | What VibeMon can identify |
|---|---|
| Codex | ChatGPT user plus workspace, using the CLI's active login, including keyring storage. |
| Claude Code | Claude account plus organization, after matching claude auth status --json to local account metadata. |
| Kiro CLI | Login email plus authentication authority. An email change can create a new identity. |
| Kiro IDE | A separate local profile. It does not borrow Kiro CLI's login. |
| OpenCode 2.x | The selected saved connection for the model provider. A connection identifies a credential, not necessarily a person. |
| OpenClaw | Each local agent separately. Its channel accountId is a messaging account, not the model-provider login. |
API keys, external authentication, older CLIs, and unavailable identity data can produce a credential or profile group instead of a verified account. Such groups stay separate by machine and profile. They are not silently merged into default. Codex authentication held only in another app's memory cannot be read by an independent CLI probe; use a manual ID for that environment.
Set up Codex profiles
The following macOS/Linux example creates a work profile. Run codex login and complete the tool's own login, then install VibeMon in that same environment:
export CODEX_HOME="$HOME/.codex-work"
mkdir -p "$CODEX_HOME"
codex login
curl -fsSL https://vibemon.io/install/install.py | python3 - --codex
codex
Open /hooks in Codex and trust the installed hooks. In a second terminal, repeat with .codex-personal and the other account. Keep the matching CODEX_HOME set every time you start that profile.
Set up Claude profiles
export CLAUDE_CONFIG_DIR="$HOME/.claude-work"
mkdir -p "$CLAUDE_CONFIG_DIR"
claude auth login
curl -fsSL https://vibemon.io/install/install.py | python3 - --claude
claude
In a second terminal, repeat with .claude-personal. For your existing default Claude login, leave CLAUDE_CONFIG_DIR unset: explicitly setting it to ~/.claude can select different account metadata. To verify a profile, run claude auth status --json in that same terminal; do not paste its account details into public logs.
In PowerShell, use $env:CODEX_HOME = "$HOME/.codex-work" or $env:CLAUDE_CONFIG_DIR = "$HOME/.claude-work", then New-Item -ItemType Directory -Force with that path. Run the matching login command and use the PowerShell installer with --codex or --claude.
Verify the separation
- Restart each tool after installation, then start a new session in each profile.
- Open Coding agents and check that the accounts and their projects are separate. The same verified user and workspace can group across machines.
- In Desktop, open Settings → Integrations → Accounts on this machine. A Detected account is a verified local login. Saved credential and Unidentified profile describe weaker identification; Manual label means you chose the ID.
Desktop refreshes the registered Claude and Codex profiles separately; it does not need to inherit each terminal's profile variables. A refresh cannot log in for you. If usage is unavailable, open that profile and verify its login. Activity can still be monitored.
A session keeps its account while other profiles run or log in. After changing an account in an existing profile, restart the tool and start a new session. Already running processes can retain their original login. OpenCode connection changes apply at the next prompt; existing tool work keeps its prior connection. Old default history remains unchanged because its original account cannot be recovered reliably.
Choose an ID manually
Use Connect coding account → Advanced: choose a monitoring ID when automatic identification is unavailable or you want to group sources deliberately. Set the generated variables in the environment that launches the matching signed-in tool:
export VIBEMON_CODEX_ACCOUNT_ID='work'
export VIBEMON_CODEX_ACCOUNT_NAME='Codex work'
PowerShell uses $env:VIBEMON_CODEX_ACCOUNT_ID = 'work' and $env:VIBEMON_CODEX_ACCOUNT_NAME = 'Codex work'. Provider-specific variables override VIBEMON_ACCOUNT_ID / VIBEMON_ACCOUNT_NAME. An explicit ID overrides detection. Different logins with the same provider and ID are combined. Remove both common and provider-specific ID variables to restore automatic detection; a name alone can customize the detected label.
These values name monitoring groups; they do not switch provider logins. The first report creates the card. For OpenClaw, the plugin also accepts per-agent mappings: plugins.entries["vibemon-bridge"].config.accounts can contain {"work":{"id":"work","displayName":"Work agent"}}, where work is the OpenClaw agent ID. Restart the gateway after changing the mapping.
Provider credentials stay on the source machine. VibeMon stores a derived account ID, display name, and local profile metadata; it sends the ID and display name with monitoring summaries. Set a name-only override if you do not want the provider's account label displayed.
Official tool references: Codex authentication, Claude multiple accounts, OpenCode providers.
Update or remove
- While the Desktop App runs, it checks the script when it starts and every 30 minutes. It updates the script when a new version is published. Without the App, run the install command again.
- To remove the script, run the install command with
--uninstall. Your other settings stay.
curl -fsSL https://vibemon.io/install/install.py | python3 - --uninstall --all
& ([scriptblock]::Create((irm https://vibemon.io/install/install.ps1))) --uninstall --all
Restart the tool after an update or removal. Uninstalling the integration stops its reports; it does not delete the stored workspace or cancel the coding-tool account. To revoke that computer's Web access, delete its sending token in Account & tokens. If another computer uses the same token, it also loses access.