Skip to Content

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:

FieldSource
costUsdComputed from the model’s input/output token prices
tokensPromptInput tokens consumed by the phase
tokensCompletionOutput tokens generated by the phase
phaseplanning / reviewing / executing / verifying — see Pipeline Overview
projectIdWhich project the thread belongs to
threadIdWhich 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:

  1. Workspace total — sum across all projects (top KPI strip)
  2. By project — table with per-project cost, token split, and run count; click a row to drill down
  3. 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 auto and 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.

  • Overview — realtime KPI strip and iteration analytics
  • Plan Viewer — shows per-phase cost alongside plan and review content
Last updated on