Costs
The Costs view aggregates LLM spend across every pipeline run in your workspace. It reads from the same thread_costs rows that IssueDetail uses, so the numbers stay consistent.
The component is apps/desktop/src/renderer/components/CostsView.tsx.
What gets tracked
For every pipeline run, ShipCode records:
| Field | Source |
|---|---|
costUsd | Computed from the model’s input/output token prices |
tokensPrompt | Input tokens consumed by the phase |
tokensCompletion | Output tokens generated by the phase |
phase | planning / reviewing / executing / verifying — see Pipeline Overview |
projectId | Which project the thread belongs to |
threadId | Which pipeline run |
Tokens and USD are tracked per phase, not just per thread, so you can see which phase of which run cost what.
Views
The Costs view groups data at three levels:
- Workspace total — sum across all projects (top KPI strip)
- By project — table with per-project cost, token split, and run count; click a row to drill down
- By thread — table with per-thread cost, project name, phase breakdown, and updated-at timestamp; click a row to open the IssueDetail overlay
Why the numbers may differ from your provider invoice
- ShipCode prices tokens using the model catalog baked into the app. Price updates lag provider changes.
- OpenRouter
autoand fallback invocations are priced against the concrete model that actually answered, not the router meta-model. - Failed calls that never returned tokens are not recorded.
- The Claude and Codex CLIs self-report usage; if they misreport, we trust their number.
Treat the Costs view as a directionally accurate estimate, not an invoice.
Drill-through
Click any row → IssueDetail overlay for that thread, which shows the same per-phase cost card inline along with the plan, review, and diff.
Related
- Overview — realtime KPI strip and iteration analytics
- Plan Viewer — shows per-phase cost alongside plan and review content
Last updated on