{"id":51940325,"url":"https://github.com/comet-ml/cost-intelligence-proxy","last_synced_at":"2026-07-28T18:01:56.111Z","repository":{"id":365714088,"uuid":"1271316921","full_name":"comet-ml/cost-intelligence-proxy","owner":"comet-ml","description":"cipx — cost intelligence proxy for Claude Code. Downloads binaries here; source at comet-ml/cost-intelligence-proxy-internal.","archived":false,"fork":false,"pushed_at":"2026-07-10T20:28:19.000Z","size":222979,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-10T22:12:57.476Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/comet-ml.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-16T14:43:05.000Z","updated_at":"2026-07-10T20:28:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/comet-ml/cost-intelligence-proxy","commit_stats":null,"previous_names":["comet-ml/cost-intelligence-proxy"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/comet-ml/cost-intelligence-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fcost-intelligence-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fcost-intelligence-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fcost-intelligence-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fcost-intelligence-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/comet-ml","download_url":"https://codeload.github.com/comet-ml/cost-intelligence-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fcost-intelligence-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36002533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-28T02:00:06.341Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-28T18:01:55.043Z","updated_at":"2026-07-28T18:01:56.101Z","avatar_url":"https://github.com/comet-ml.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cost Intelligence Proxy for Claude Code (opik-cipx)\n\n`opik-cipx` is a local reverse HTTP proxy that sits between Claude Code and\nthe Anthropic API. Claude Code routes through it via `ANTHROPIC_BASE_URL`;\nopik-cipx owns the TLS leg to `api.anthropic.com`. It captures every call on\nthe wire, categorizes input/output bytes into cost buckets — system prompt,\ntools, memory, agents, skills, MCP, user input, tool I/O — and ships\nper-call spans to [Opik](https://github.com/comet-ml/opik) so you can answer\n\"where did my tokens go and how much did they cost?\"\n\n[Opik](https://github.com/comet-ml/opik) is the open-source LLM observability and evaluation platform, built by [Comet](https://www.comet.com). opik-cipx is its cost lens for Claude Code.\n\n\u003e **Status:** actively developed, versioned `v0.0.x`. This repo is the public\n\u003e distribution point: it ships the prebuilt binaries (see\n\u003e [Releases](https://github.com/comet-ml/cost-intelligence-proxy/releases)) and\n\u003e the Claude Code plugin. The source lives in the private\n\u003e [comet-ml/cost-intelligence-proxy-internal](https://github.com/comet-ml/cost-intelligence-proxy-internal)\n\u003e repo; each release is built from there.\n\n## Features\n\n- **Wire capture** — totals come straight from Anthropic's `response.usage`,\n  so token counts and costs are exact, not estimated.\n- **Per-category attribution** — request + response bytes are bucketed (system\n  prompt, builtin tools, MCP tools, skills, memory, custom agents, prior\n  assistant turns, tool I/O, user prompts, …) using chars-proportional math\n  over the actual wire bytes. No tokenizer dependency.\n- **Subagent aware** — subagent calls are captured and peer under the same\n  session.\n- **MCP attribution** — MCP tool definitions and results are bucketed\n  separately so you can see what your MCP servers cost.\n- **Survives Opik outages** — a local WAL spools spans; the shipper drains when\n  Opik comes back.\n- **Single binary** — `opik-cipx` is the long-lived gateway *and* the\n  short-lived process Claude Code's `SessionStart` hook invokes (subcommand\n  `opik-cipx sync`).\n\n## How it works\n\n```\n   ┌──────────────────────┐         ┌─────────────────────────────┐\n   │  Claude Code         │  HTTP   │  opik-cipx (127.0.0.1:9909) │   TLS\n   │  ANTHROPIC_BASE_URL ─┼────────►│  reverse proxy ─────────────┼──► Anthropic API\n   │  http://127.0.0.1:99 │         │  capture req + resp         │\n   └──────────────────────┘         │  categorize + build span    │\n                                    │  WAL spool → Opik shipper   │\n                                    └────────────────┬────────────┘\n                                                     │\n                                                     ▼\n                                                   Opik\n```\n\nThe plugin's `SessionStart` hook execs `opik-cipx sync` on every Claude Code\nlaunch. `sync` is idempotent: it installs the OS supervisor (launchd /\nsystemd) so the daemon auto-restarts on crash, brings the daemon up if it\nisn't already running, and upserts `ANTHROPIC_BASE_URL` into\n`~/.claude/settings.json` so Claude Code routes through\n`http://127.0.0.1:9909`. No filesystem-level CA installs, no per-host MITM\ncert dance — Claude Code talks plain HTTP to the loopback listener and\nopik-cipx is the only thing holding a TLS session to Anthropic.\n\n## Install\n\n### Claude Code plugin (recommended)\n\nFrom within Claude Code:\n\n```\n/plugin marketplace add comet-ml/cost-intelligence-proxy\n/plugin install opik-cipx@opik-enterprise\n```\n\nThe plugin installs the `SessionStart` hook that keeps the opik-cipx gateway\nalive between Claude Code sessions, plus the `/opik-cipx:opik-cipx` skill\n(how it works + diagnostics). The hook tolerates a missing binary — it just\nprints a hint to install opik-cipx and lets the session continue.\n\nThe plugin ships the binary in its own tree, so a clean plugin install needs\nnothing more. For a non-plugin setup, drop the binary with `install.sh` (see\nbelow), then restart Claude Code — the `SessionStart` hook runs `opik-cipx\nsync`, which wires everything up.\n\n### Local plugin install (contributors)\n\nIf you've cloned this repo locally and want to install your working copy\ninstead of the published version:\n\n```\n/plugin marketplace add /path/to/cost-intelligence-proxy\n/plugin install opik-cipx@opik-enterprise\n```\n\n### macOS / Linux (curl, no plugin)\n\nIf you'd rather skip the plugin and just run `opik-cipx` from your shell:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/comet-ml/cost-intelligence-proxy/main/install.sh | bash\n```\n\nThe installer downloads the latest release for your OS/arch, drops\n`opik-cipx` into `~/.opik-cipx/bin/`, and prints the next step. Add that\npath to your `PATH`, then:\n\n```bash\nopik-cipx sync     # supervise + start the daemon and route Claude Code through it\nopik-cipx status   # confirm it's up\n```\n\nTo pin a specific version:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/comet-ml/cost-intelligence-proxy/main/install.sh | bash -s -- v0.0.35\n```\n\n### Manual download\n\nGrab the right archive from the\n[Releases page](https://github.com/comet-ml/cost-intelligence-proxy/releases):\n\n| Filename | Platform |\n|---|---|\n| `opik-cipx-darwin-arm64.tar.gz` | Apple Silicon macOS |\n| `opik-cipx-darwin-amd64.tar.gz` | Intel macOS |\n| `opik-cipx-linux-amd64.tar.gz`  | x86_64 Linux |\n| `opik-cipx-linux-arm64.tar.gz`  | arm64 Linux |\n\nEach archive contains the `opik-cipx` binary. Verify against `SHA256SUMS`\nfrom the same release before extracting:\n\n```bash\nshasum -a 256 -c \u003c(grep darwin-arm64 SHA256SUMS)\nmkdir -p ~/.opik-cipx/bin\ntar -xzf opik-cipx-darwin-arm64.tar.gz -C ~/.opik-cipx/bin/\n```\n\n### Enterprise install (managed settings)\n\nFor org-wide deployment, push configuration through Claude Code's\n[server-managed settings](https://code.claude.com/docs/en/server-managed-settings) —\nAnthropic's admin console delivers JSON to every authenticated user, no MDM\nrequired. (Requires Claude for Teams or Enterprise.)\n\n**Where to set it up:** in [Claude.ai](https://claude.ai), go to\n**Admin Settings → Claude Code → Managed settings** and paste the JSON below.\nClients pick it up at next startup or within the hourly poll.\n\n```json\n{\n  \"extraKnownMarketplaces\": {\n    \"opik-enterprise\": {\n      \"source\": {\"source\": \"github\", \"repo\": \"comet-ml/cost-intelligence-proxy\"},\n      \"autoUpdate\": true\n    }\n  },\n  \"enabledPlugins\": {\n    \"opik-cipx@opik-enterprise\": true\n  },\n  \"env\": {\n    \"OPIK_CIPX_BASE_URL\": \"https://www.comet.com/opik/api\",\n    \"OPIK_CIPX_WORKSPACE\": \"your-org-cc-workspace\",\n    \"OPIK_CIPX_API_KEY\": \"\u003cworkspace-scoped API key\u003e\",\n    \"OPIK_CIPX_PROJECT\": \"cc-{user}\",\n    \"ENABLE_TOOL_SEARCH\": \"auto\"\n  },\n  \"forceRemoteSettingsRefresh\": true\n}\n```\n\nWhat each piece does:\n\n- `extraKnownMarketplaces` + `enabledPlugins` — registers this repo as a\n  marketplace and force-enables the plugin for every user. Users see it as\n  **managed** and can't disable it.\n- `OPIK_CIPX_BASE_URL` — Opik installation URL the gateway ships traces to.\n- `OPIK_CIPX_WORKSPACE` — sends Claude Code traces to a dedicated workspace,\n  isolated from any user's personal Opik work.\n- `OPIK_CIPX_API_KEY` — the workspace-scoped key the gateway uses to write\n  traces. Treat as sensitive; the key is shared with every machine it's\n  deployed to. Provision with the minimum write scope on the CC workspace.\n- `OPIK_CIPX_PROJECT` — supports `{field}` tokens (see below), so one config\n  string routes every user to their own project.\n- `ENABLE_TOOL_SEARCH` — routing Claude Code through opik-cipx sets a\n  non-Anthropic `ANTHROPIC_BASE_URL`, which makes CC (≥ 2.1.70) disable MCP\n  tool search by default. opik-cipx forwards requests unmodified, so it's safe\n  to keep on — `auto` restores it. (See the MDM section below for the details.)\n- `forceRemoteSettingsRefresh: true` — fail-closed startup: blocks the CLI at\n  launch until fresh managed settings are fetched, so the brief unenforced\n  window on first launch can't leak unmonitored sessions.\n\nThe binary itself still needs to land on each machine separately —\nenabling the plugin via managed settings gives every user the hook wiring\nand the `/opik-cipx:opik-cipx` skill, but the actual `opik-cipx`\nbinary is dropped by `install.sh` in your provisioning script — see the\n[Provisioning](#provisioning) section.\n\n**Available `{field}` tokens** for `OPIK_CIPX_PROJECT`:\n\n| Token | Resolves to |\n|---|---|\n| `{user}` | local-part of the user's email (before `@`) — e.g. `collinc` |\n| `{email}` | full email — e.g. `collinc@comet.com` |\n| `{hostname}` | machine hostname |\n\nThe gateway also resolves the signed-in user's identity (email, username,\norganization) and attaches it to every trace, so admins can filter by user\neven inside a shared project.\n\n### Deploy via MDM (managed settings file)\n\nThe [Enterprise install](#enterprise-install-managed-settings) above delivers\nconfig through Anthropic's admin console (server-managed settings). If you'd\nrather push it with your own MDM — Jamf, Intune, Workspace ONE, Ansible, a\nprovisioning script — Claude Code also reads an **enterprise managed settings\nfile** from a fixed system path. Land the same JSON there and every user on\nthe machine picks it up at next launch; no per-user step.\n\n**Where the file goes** (Claude Code reads it automatically — no env var, no\nflag points at it):\n\n| Platform | Path |\n|---|---|\n| macOS | `/Library/Application Support/ClaudeCode/managed-settings.json` |\n| Linux / WSL | `/etc/claude-code/managed-settings.json` |\n| Windows | `C:\\Program Files\\ClaudeCode\\managed-settings.json` |\n\n(The legacy Windows path `C:\\ProgramData\\ClaudeCode\\managed-settings.json` was\ndropped in Claude Code v2.1.75.) To split config across files, drop `*.json`\ninto a `managed-settings.d/` directory beside the file — they merge\nalphabetically on top of the base, systemd-style.\n\nManaged settings sit at the **top** of Claude Code's precedence chain —\nmanaged → command-line args → local project (`.claude/settings.local.json`) →\nproject (`.claude/settings.json`) → user (`~/.claude/settings.json`) — so users\ncan't override or disable what you set here. The file uses the same schema as\n`settings.json`.\n\n**What to put in it** — register the marketplace, force-enable the plugin, and\nset the Opik destination:\n\n```json\n{\n  \"$schema\": \"https://json.schemastore.org/claude-code-settings.json\",\n  \"extraKnownMarketplaces\": {\n    \"opik-enterprise\": {\n      \"source\": {\"source\": \"github\", \"repo\": \"comet-ml/cost-intelligence-proxy\"}\n    }\n  },\n  \"enabledPlugins\": {\n    \"opik-cipx@opik-enterprise\": true\n  },\n  \"env\": {\n    \"OPIK_CIPX_BASE_URL\": \"https://www.comet.com/opik/api\",\n    \"OPIK_CIPX_WORKSPACE\": \"your-org-cc-workspace\",\n    \"OPIK_CIPX_API_KEY\": \"\u003cworkspace-scoped API key\u003e\",\n    \"OPIK_CIPX_PROJECT\": \"cc-{user}\",\n    \"ENABLE_TOOL_SEARCH\": \"auto\"\n  }\n}\n```\n\nNotes:\n\n- **Don't set `ANTHROPIC_BASE_URL` here.** `opik-cipx sync` writes it into the\n  user's `~/.claude/settings.json` pointing at the loopback listener\n  (`http://127.0.0.1:9909`), and clears it again when you flip the\n  `CIPX_DISABLED` kill-switch. Pinning it in managed settings would sit *above*\n  the user scope and defeat that teardown, leaving a disabled proxy in the wire\n  path. Let `sync` own it.\n- **`ENABLE_TOOL_SEARCH`** — because CC now talks to a non-Anthropic\n  `ANTHROPIC_BASE_URL`, it turns MCP tool search off by default (v2.1.70+).\n  opik-cipx is a transparent tee that forwards requests unmodified, so it's\n  safe to turn back on: `ENABLE_TOOL_SEARCH=auto` (or, equivalently,\n  `_CLAUDE_CODE_ASSUME_FIRST_PARTY_BASE_URL=1`) restores it.\n- **The binary still ships separately.** Managed settings only carries the\n  plugin wiring and env — deploy the `opik-cipx` binary in the same MDM payload\n  with `install.sh` (see [Provisioning](#provisioning)).\n- To lock down which marketplaces users may add at all, pair\n  `extraKnownMarketplaces` with\n  [`strictKnownMarketplaces`](https://code.claude.com/docs/en/settings#strictknownmarketplaces)\n  in the same file.\n\n#### Step-by-step: rolling it out with any MDM\n\nAny MDM that can run a script as root — or simply place a file — can deploy this:\nJamf, Kandji, Intune, Workspace ONE, JumpCloud, Ansible, or a plain provisioning\nscript. The mechanics are the same everywhere:\n\n1. **Prepare the JSON.** Start from the managed-settings JSON above and fill in\n   your `OPIK_CIPX_WORKSPACE` and a workspace-scoped `OPIK_CIPX_API_KEY`. Keep\n   this file out of version control — it carries a credential.\n\n2. **Deliver it to each device**, either way:\n\n   - **File payload** — have the MDM place the JSON at the managed path for the\n     OS (paths table above), owned by `root`, mode `0644`. It must be\n     world-readable: Claude Code reads it as the *logged-in user*, not as root.\n\n   - **Script payload** — run a small root script that writes and validates the\n     file. This is the most portable option, and writing into a\n     `managed-settings.d/` drop-in means you won't clobber any other managed\n     policy already on the machine. macOS example:\n\n     ```bash\n     #!/bin/bash\n     set -euo pipefail\n     DIR=\"/Library/Application Support/ClaudeCode/managed-settings.d\"\n     /bin/mkdir -p \"$DIR\"\n     TMP=\"$(/usr/bin/mktemp)\"\n     /bin/cat \u003e \"$TMP\" \u003c\u003c'JSON'\n     { ...your filled managed-settings JSON... }\n     JSON\n     /usr/bin/plutil -convert json -o /dev/null \"$TMP\"   # validate; abort if invalid\n     /bin/mv \"$TMP\" \"$DIR/50-opik-cipx.json\"\n     /usr/sbin/chown root:wheel \"$DIR/50-opik-cipx.json\"\n     /bin/chmod 644 \"$DIR/50-opik-cipx.json\"\n     ```\n\n     On Linux use `/etc/claude-code/managed-settings.d/` and validate with\n     `python3 -m json.tool` instead of `plutil`. Use absolute tool paths — MDM\n     script runners often execute with a minimal `PATH`.\n\n3. **Ship the binary in the same payload** — managed settings only carries the\n   plugin wiring and env; the `opik-cipx` binary lands via `install.sh`\n   (see [Provisioning](#provisioning)).\n\n4. **Verify** on a device, as the logged-in user, in a *fresh* Claude Code\n   session (managed settings load at startup):\n\n   ```sh\n   claude plugin list    # opik-cipx@opik-enterprise shows as enabled / managed\n   ```\n\n**Targeting and offline devices.** Scope the deployment to machines your current\nusers actually own so decommissioned devices are excluded. MDMs that queue\nactions for offline devices (JumpCloud Commands, for example) apply the settings\nwhen each machine next checks in — leave the deployment in place rather than\nremoving it, or offline machines never receive it. For MDMs that only act on\nonline devices, re-run the deployment periodically to pick up machines as they\ncome online and as new hires are onboarded.\n\n## Configuration\n\nPoint the gateway at your Opik installation with the `OPIK_CIPX_*` environment\nvariables (below) or a `~/.opik-cipx/config.toml` file. Resolution precedence\nis **env var → `~/.opik-cipx/config.toml` → built-in default**, and changes\ntake effect on the next daemon (re)start — there is no mid-session hot-reload.\n\n### Environment variables\n\nopik-cipx env vars use the `OPIK_CIPX_` prefix (Opik destination credentials)\nor `CIPX_` (proxy behavior) so they don't collide with the standard Opik SDK\nvariables (`OPIK_API_KEY`, `OPIK_WORKSPACE`, etc.) — users running both\nopik-cipx and a regular Opik client can configure them independently.\n\n| Variable | Purpose |\n|---|---|\n| `OPIK_CIPX_BASE_URL` | Opik installation URL (e.g. `https://www.comet.com/opik/api`). |\n| `OPIK_CIPX_API_KEY` | API key the gateway uses to write traces. |\n| `OPIK_CIPX_WORKSPACE` | Opik workspace traces land in. |\n| `OPIK_CIPX_PROJECT` | Project name. Supports `{user}`, `{email}`, `{hostname}` templating — see Enterprise install above. |\n| `OPIK_CIPX_DEBUG` | `true`/`on` → verbose logging to `~/.opik-cipx/logs/cipx.log`. |\n\n#### opik-cipx-specific\n\n| Variable | Purpose |\n|---|---|\n| `CIPX_DISABLED` | Master kill-switch. Truthy (`1`/`true`/`yes`/`on`) tears the install down on the next `opik-cipx sync` so Claude Code routes directly to Anthropic. |\n| `CIPX_CAPTURE_CONTENT` | `false` ships counts and costs only, never prompt or completion bytes. |\n| `CIPX_HOME` | Override the state root (default `~/.opik-cipx`). |\n| `CIPX_CONFIG` | Path to the opik-cipx config file (default `~/.opik-cipx/config.toml`). |\n| `CIPX_UPSTREAM_PROXY` | Forward outbound traffic through this proxy. |\n| `CIPX_SENTRY` | `off` disables anonymous error reporting. |\n| `CIPX_SENTRY_DSN` | Sentry DSN for anonymous panic/error reports. Telemetry stays off unless this is set. |\n\n### Config file (`~/.opik-cipx/config.toml`)\n\nAnything you can set with an `OPIK_CIPX_*` / `CIPX_*` env var can also live in\n`~/.opik-cipx/config.toml` (env vars win when both are set):\n\n```toml\n[opik]\nbase_url  = \"https://www.comet.com/opik/api\"\napi_key   = \"your-api-key\"\nworkspace = \"comet-all\"\nproject   = \"cc-{user}\"\n\n[capture]\ncapture_content = true\n```\n\nOverride the file's location with `$CIPX_CONFIG`, or the whole state root with\n`$CIPX_HOME`.\n\n### Turning capture on and off\n\nThere's no per-project marker file and no per-repo toggle — **installing the\nplugin is the opt-in.** Once it's installed, every Claude Code session runs\n`opik-cipx sync` at SessionStart, which keeps the proxy supervised and points\nClaude Code's `ANTHROPIC_BASE_URL` at it. From then on every call is captured\nautomatically; there is nothing to switch on per repo.\n\nTo turn capture **off**, set the `CIPX_DISABLED` kill-switch (any of `1`,\n`true`, `yes`, `on`):\n\n```bash\nexport CIPX_DISABLED=1\n```\n\nIt's an environment variable, not a file, so it applies wherever it's set — a\nsingle shell or your whole login environment. The next `opik-cipx sync` (i.e.\nthe next SessionStart) reads it and **tears the install down**: it removes the\nlaunchd / systemd supervisor unit and clears the managed `ANTHROPIC_BASE_URL`,\nso Claude Code routes straight to Anthropic with no proxy in the path. As a\nbackstop, `opik-cipx proxy` also exits 0 immediately when launched while\ndisabled, so a stray supervisor can't resurrect it. Either way your Claude\nCode session stays healthy — disabling never breaks the wire.\n\nTo turn capture back **on**:\n\n```bash\nunset CIPX_DISABLED\nopik-cipx sync          # or just restart Claude Code — SessionStart runs sync\n```\n\nSettings take effect only on (re)start — there is no mid-session hot-reload.\nToggling `CIPX_DISABLED` means restarting Claude Code, or re-running\n`opik-cipx sync`, before the change is picked up.\n\n## Privacy: redacted-mode\n\nFor environments where prompt and completion bytes can't leave the machine,\nset:\n\n```bash\nexport CIPX_CAPTURE_CONTENT=false\n```\n\nopik-cipx then ships counts, costs, structure, and identity — but never the\nraw prompt or completion bytes. Request/response bodies and tool\narguments/results are dropped, while every `cc.categories` number, the\n`cc.usage` totals, and all category/skill/memory/agent metadata (paths,\ncounts, lengths) are kept. Capturing content is the default.\n\n## Skills (plugin)\n\nAfter `/plugin install opik-cipx@opik-enterprise`:\n\n| Skill | Purpose |\n|---|---|\n| `/opik-cipx:opik-cipx` | How opik-cipx works — architecture, the CLI, state layout, enable/disable, privacy/telemetry, and how to read `opik-cipx status`. Claude pulls it in on its own when you ask about opik-cipx or when spans stop reaching Opik; you can also call it directly. |\n\n## Debugging\n\n```bash\nopik-cipx status   # pid, ports, queue depth, counters, telemetry on/off\nopik-cipx logs     # tail ~/.opik-cipx/logs/cipx.log\nopik-cipx viewer   # print the local debug-UI URL (add --open to launch it)\n```\n\nThe viewer renders the raw request body with every region colored by the\ncategory it landed in — unattributed bytes stand out, indicating a\ncategorizer gap or a new CC wire-format variant.\n\n## MCP server setup\n\nThe [Opik MCP server](https://github.com/comet-ml/opik-mcp) gives Claude\ntools to query your Opik data — traces, experiments, evaluation results —\ndirectly in conversation. It's independent of opik-cipx (opik-cipx ingests\ntraces; the MCP server queries them).\n\nFor Opik Cloud, add to `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"opik\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"opik-mcp\", \"--apiKey\", \"YOUR_OPIK_API_KEY\"]\n    }\n  }\n}\n```\n\nFor self-hosted Opik, replace with `--apiBaseUrl http://localhost:5173/api`\n(or your URL).\n\n## Uninstall\n\n```bash\nopik-cipx purge       # stops the gateway, wipes the WAL spool (drops unshipped spans)\nopik-cipx uninstall   # stops the daemon, removes the supervisor unit, deletes ~/.opik-cipx\n```\n\n`opik-cipx uninstall` clears the managed `ANTHROPIC_BASE_URL` and removes\n`~/.opik-cipx`, but the Claude Code plugin owns the `SessionStart` hook wiring\n— to remove that too, uninstall the plugin from Claude Code\n(`/plugin uninstall opik-cipx@opik-enterprise`).\n\n## Provisioning\n\nFor deploying opik-cipx across a team:\n\n- **Homebrew tap** (planned) — `brew install comet-ml/tap/opik-cipx`.\n- **Provisioning script** — drop `install.sh` into Ansible / Chef / Salt /\n  whatever you already use.\n- **Container images** — none yet; the binary is statically linked so\n  copying it in works.\n\nIf you're at an org with a managed-settings rollout, pair the install with\nthe JSON in [Enterprise install](#enterprise-install-managed-settings) above.\n\n## Reporting issues\n\nFile issues on the\n[issue tracker](https://github.com/comet-ml/cost-intelligence-proxy/issues)\nfor this repo.\n\n## Opik for Claude Code\n\nThis repo is part of a set of tools for observing Claude Code and other coding agents with [Opik](https://github.com/comet-ml/opik):\n\n- [opik-claude-code-plugin](https://github.com/comet-ml/opik-claude-code-plugin): log Claude Code sessions as Opik traces, with skills and agents included\n- [ccsync](https://github.com/comet-ml/ccsync): export Claude Code conversation history to Opik\n- [cost-intelligence-proxy](https://github.com/comet-ml/cost-intelligence-proxy): meter Claude Code token spend and cost per call **(this repo)**\n- [opik-skills](https://github.com/comet-ml/opik-skills): agent skills for instrumenting your code with Opik\n\n## License\n\n© 2026 Comet ML, Inc. All rights reserved. This software is proprietary and\nconfidential.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomet-ml%2Fcost-intelligence-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcomet-ml%2Fcost-intelligence-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomet-ml%2Fcost-intelligence-proxy/lists"}