Verify your installation
Use this guide to confirm a workstation is set up and actually reporting. The built-in diagnostics answer the question faster and more reliably than checking files by hand, so start there.
- Deployment: SaaS, On-premises
1. Run the diagnostics
Run aitrax setup check first. It is read-only and takes under a second.
$ aitrax setup check
{
"system": {
"configured": true,
"missing": [],
"loginCleanup": {
"state": "clean"
}
}
}
The output reports a system scope. If it shows as configured, setup is complete and you
can proceed to step 2. If it shows as not configured, see
Setup reports not configured.
Next, run aitrax health. It reads only the local tracker lifecycle log and never
contacts the server, so it is safe to run on a locked-down or air-gapped machine.
$ aitrax health
VERDICT: healthy
13 events across 1 file(s), 4 source(s); no problems.
RECENT ACTIVITY (last 7d | last 24h):
ACTIVITY SOURCE 7D 24H
Managed tracker lifecycle / probe setup-check 8 8
Managed tracker lifecycle / probe post-tracker 2 2
Telemetry upload OK aitrax-full 1 1
Telemetry upload OK otlp 1 1
Tracker process launch post-tracker 1 1
TOTAL 13 13
A healthy verdict means the tracker lifecycle is operating correctly on this workstation.
Reading the missing list
aitrax setup check includes a missing list. Entries in it follow a consistent naming
convention:
- No suffix (
claude-code-telemetry,copilot-cli-otel-env, and so on): the surface is expected but not configured. Either the tool is not installed, oraitrax setup systemhas not run since it was — install the tool if needed, then runaitrax setup system. -stalesuffix (claude-code-telemetry-stale): the configuration exists but points at a different server address than the one recorded in~/.codetogether/tracker/aitrax.json. Runaitrax setup systemagain to realign it.-foreignsuffix (claude-code-telemetry-foreign): a configuration you own is in place and AITrax respects it rather than overwriting it. This is informational, not an error.
Not every entry appears on every machine. AITrax configures only the AI tools that are actually installed, so an absent entry for a tool you do not use is correct, not a failure.
2. Check the integration files
After setup runs, these files should be present for each AI tool you use.
- macOS and Linux
- Windows
The following table lists the files aitrax setup system writes on macOS and Linux for
each supported tool:
| Tool | Path |
|---|---|
| Binary (core) | ~/.codetogether/tracker/aitrax |
| Binary (full build) | ~/.codetogether/tracker/aitrax-full |
| User config | ~/.codetogether/tracker/aitrax.json |
| Audit log | ~/.codetogether/aitrax.jsonl |
| Claude Code hooks and OTEL env | ~/.claude/settings.json |
| Claude Code CLI user MCP | ~/.claude.json |
| Cursor global MCP | ~/.cursor/mcp.json |
| VS Code Copilot user MCP | ~/Library/Application Support/Code/User/mcp.json (macOS) |
| VS Code Copilot user MCP | ~/.config/Code/User/mcp.json (Linux) |
| VS Code Copilot OTEL settings | ~/Library/Application Support/Code/User/settings.json (macOS) |
| VS Code Copilot OTEL settings | ~/.config/Code/User/settings.json (Linux) |
| JetBrains Copilot user MCP | ~/.config/github-copilot/intellij/mcp.json |
| Copilot CLI user MCP | ~/.copilot/mcp-config.json |
| Copilot CLI user hooks | ~/.copilot/hooks/aitrax.json |
| Copilot CLI OTEL env | .bashrc, .zshrc, .profile |
| Codex user config | ~/.codex/config.toml |
| Kiro user MCP | ~/.kiro/settings/mcp.json |
| OpenCode user config | ~/.config/opencode/opencode.json |
The following table lists the files aitrax setup system writes on Windows for each
supported tool:
| Tool | Path |
|---|---|
| Binary (core) | %USERPROFILE%\.codetogether\tracker\aitrax.exe |
| Binary (full build) | %USERPROFILE%\.codetogether\tracker\aitrax-full.exe |
| User config | %USERPROFILE%\.codetogether\tracker\aitrax.json |
| Audit log | %USERPROFILE%\.codetogether\aitrax.jsonl |
| Claude Code hooks and OTEL env | %USERPROFILE%\.claude\settings.json |
| Claude Code CLI user MCP | %USERPROFILE%\.claude.json |
| Cursor global MCP | %USERPROFILE%\.cursor\mcp.json |
| VS Code Copilot user MCP | %APPDATA%\Code\User\mcp.json |
| VS Code Copilot OTEL settings | %APPDATA%\Code\User\settings.json |
| JetBrains Copilot user MCP | %LOCALAPPDATA%\github-copilot\intellij\mcp.json |
| Visual Studio global MCP | %USERPROFILE%\.mcp.json |
| Copilot CLI user MCP | %USERPROFILE%\.copilot\mcp-config.json |
| Copilot CLI user hooks | %USERPROFILE%\.copilot\hooks\aitrax.json |
| Copilot CLI OTEL env | PowerShell 5.1 and 7+ user profiles |
| Codex user config | %USERPROFILE%\.codex\config.toml |
| Kiro user MCP | %USERPROFILE%\.kiro\settings\mcp.json |
| OpenCode user config | %USERPROFILE%\.config\opencode\opencode.json |
A missing file for a tool you do not use is expected. aitrax setup system writes only
the entries for tools it detects as installed.
The full path inventory, including which setup scope owns each file, is in Files and locations.
3. Confirm environment settings
This is the step most often missed when someone configures a tool by hand instead of
running setup. For the standalone Copilot CLI, aitrax setup system writes an OTEL
export block to your shell profile (.bashrc, .zshrc, or .profile on macOS and
Linux; PowerShell profiles on Windows) — but a shell profile alone only takes effect for
a process launched from a terminal that reads it, so setup also configures the same
environment where a shell profile cannot reach:
- macOS: a launch agent applies the environment at login, so a Copilot CLI session started outside a profile-reading terminal — from an IDE's integrated terminal, for example — still reports.
- Windows: setup also sets persistent user environment variables, for the same reason.
Other tools receive their environment through their own config files rather than the shell, so this step matters for the Copilot CLI specifically.
To verify that environment configuration is in place, run:
aitrax setup check
copilot-cli-otel-env in the missing list means the Copilot CLI environment block is
absent. copilot-cli-otel-env-stale means it points at a different server. Either
resolves by running aitrax setup system again, then opening a new terminal so the
profile is re-read.
Developers do not set these environment variables by hand. If a check reports something missing, re-running setup is the correct fix.
4. Confirm collection
Configuration and data collection are two separate claims. A workstation can be fully configured while uploads are blocked, so confirm that data is actually arriving.
- Do a short piece of real work in a Git repository — edit a file, write a few lines.
- Make a commit.
- Check the local audit log for recent activity:
- macOS and Linux
- Windows
tail -20 ~/.codetogether/aitrax.jsonl
Get-Content "$env:USERPROFILE\.codetogether\aitrax.jsonl" -Tail 20
Recent entries confirm the tracker observed the commit.
Sign in to the portal and open the Activity tab from the Home page. The Activity tab appears once you have tracked sessions; until then the page shows an empty state. Allow a few minutes for processing, then refresh to see commits and AI sessions.
If activity does not appear after other developers' activity from the same period has appeared, see No activity appears for a developer.
What a developer sees on this tab once their work has been tracked, in place of the empty state.
Known failure modes
Blocked uploads look like a healthy install
If network access to the server is restricted, aitrax setup check and aitrax health
still report as healthy, because both commands read only local state. The tracker stores
data locally and retries uploads, so a blocked workstation looks identical to a
fully-reporting one until you check the portal.
If the local setup looks correct but you never appear in the portal, the upload path is the first thing to investigate. See No activity appears for a developer.
Invalid ~/.claude/settings.json skips the Claude Code hook step
aitrax setup system merges managed hook entries into ~/.claude/settings.json. If that
file is not valid JSON when setup runs, the step is skipped rather than overwriting
a file that may contain credentials or other user content.
aitrax setup check reports claude-code-telemetry in the missing list when neither a
managed nor a user-owned Claude telemetry block is present. If this appears after setup
ran, inspect the file for a JSON syntax error, correct it, and run aitrax setup system
again.
Related
- Files and locations — the full path inventory for every file setup writes.
- AITrax CLI reference — the commands used here.
- Setup reports not configured — when a scope fails.
- No activity appears for a developer — when data does not arrive.
- Confirm data is being collected — the administrator-side check.