Surfaces & providers
The tools we read vs. the model-makers we attribute usage to.
Centrail separates two things people often conflate: the tool you type into, and the company whose model answered.
Surfaces (the tools we read)
A surface is a coding agent whose local logs the CLI reads. Today:
| Surface | Logs |
|---|---|
| Claude Code | ~/.claude/projects (also ~/.config/claude/projects, or wherever CLAUDE_CONFIG_DIR points) |
| GitHub Copilot CLI | ~/.copilot/session-state |
Paths resolve from your home directory, so the CLI works the same on macOS,
Linux, and Windows. For Claude Code it honors the CLAUDE_CONFIG_DIR
environment variable (comma-separated for multi-account setups), matching how
Claude Code itself locates its config.
Codex and a standalone Gemini CLI are planned — each is one new reader.
Providers (who made the model)
Every usage event is attributed to the model's maker, derived from the model name:
| Model name starts with | Provider |
|---|---|
claude | Anthropic |
gpt, o1, o3, o4 | OpenAI |
gemini | |
| anything else | Unknown (still counted) |
This is why one connector can feed several providers: Copilot routes to OpenAI, Anthropic, and Google models, and each lands under its real maker — not under "Copilot".
Adding a model
A new model lights up automatically: we capture its tokens the moment your agent logs them. Correct maker labelling is a one-line rule, and cost appears once the open-source litellm price list covers it. The environmental footprint is token-based, so it works even before pricing does.