Project-Level Configuration
Tracing is always configured per-project. Each project traces to its own Infinium agent:
cd /path/to/project-a
infinium-codex init
# Enter Project A's Agent ID and Secret
cd /path/to/project-b
infinium-codex init
# Enter Project B's Agent ID and Secret
| Location | Contents |
|---|---|
.infinium/config.json in project root | Agent ID, base URL, trace granularity |
.codex/hooks.json in project root | Codex hook registration (per-event entries with "command" pointing at the connector) |
~/.codex/config.toml | codex_hooks feature flag (user-level, set once) |
Add
.infinium/to your.gitignoreto keep credentials out of version control.
Resolution Order
When a hook fires, the connector resolves credentials in this order:
- Project config —
.infinium/config.jsonat or above the working directory (the connector walks the directory tree, likegitfinding.git/) - Environment variables — Override project config (for CI/Docker)
Credential Storage
| Data | Storage | Security |
|---|---|---|
| Agent ID | Config file (JSON) | Non-sensitive identifier |
| Agent Secret | OS keyring | Encrypted by the operating system |
| Base URL | Config file (JSON) | Non-sensitive |
The connector never stores your agent secret in a file. It uses the OS keyring:
- Windows: Windows Credential Manager
- macOS: Keychain
- Linux: Secret Service (GNOME Keyring, KDE Wallet)
Updating Credentials
infinium-codex update-credentials
Or pass flags directly:
infinium-codex update-credentials --agent-id "new-id" --agent-secret "new-secret"
Pause and Resume
Temporarily disable tracing without removing your configuration:
# Pause — hooks stay installed but traces are skipped
infinium-codex pause
# Resume — traces start sending again
infinium-codex resume
Check current state with infinium-codex status.
Trace Granularity
Codex CLI has no SessionEnd event. The connector flushes traces on the Stop event (end of each turn). You can still choose:
- Per-turn (default) — each assistant response produces its own trace
- Per-session summary — a single trace per session, via a stale-session timer
- Both — per-turn traces and a session summary on cleanup
Change this during init or via the env vars below.
Environment Variables
All settings can be overridden with environment variables. This is useful for CI/CD, Docker, or headless environments where the interactive wizard can’t run.
Credentials
| Variable | Description | Default |
|---|---|---|
INFINIUM_AGENT_ID | Agent ID | From config file |
INFINIUM_AGENT_SECRET | Agent secret | From OS keyring |
INFINIUM_BASE_URL | API base URL | https://platform.i42m.ai/api/v1 |
Connector Behavior
| Variable | Description | Default |
|---|---|---|
CONNECTOR_QUIET | Suppress output (true/false) | false |
CONNECTOR_FLUSH_ON_STOP | Send trace after each turn | true |
CONNECTOR_FLUSH_ON_SESSION_END | Send a session summary trace on stale cleanup | true |
CONNECTOR_SESSION_TTL | Stale session cleanup threshold (seconds) | 600 |
CONNECTOR_SESSION_DIR | Override temp directory for session files | System temp |
CONNECTOR_MAX_INPUT_PREVIEW | Max characters of prompt preview | 200 |
CONNECTOR_MAX_OUTPUT_PREVIEW | Max characters of tool-output preview | 300 |
HTTP Client
| Variable | Description | Default |
|---|---|---|
INFINIUM_TIMEOUT | Request timeout in seconds | 30.0 |
INFINIUM_MAX_RETRIES | Max retry attempts | 3 |
INFINIUM_VERIFY_SSL | Verify SSL certificates | true |
CI/Docker Example
export INFINIUM_AGENT_ID="your-agent-id"
export INFINIUM_AGENT_SECRET="your-agent-secret"
# Non-interactive setup
infinium-codex init \
--agent-id "$INFINIUM_AGENT_ID" \
--agent-secret "$INFINIUM_AGENT_SECRET" \
--no-interactive
Uninstall
Completely remove the connector:
infinium-codex uninstall
This removes:
- Infinium hooks from
.codex/hooks.json(other hooks in that file are preserved) - Credentials (config file + keyring secret)
To skip the confirmation prompt:
infinium-codex uninstall -y
You can reinstall at any time with pip install infinium-codex-connector and infinium-codex init.