Free
Try Spineforge on a real project before you commit.
Start freeStartup
For teams shipping AI products with agents that touch real credentials.
Get startedGrowth
For scaling teams with multiple agent workloads and enterprise customers asking security questions.
Get startedEnterprise
Unlimited agents. SLA. Dedicated support. Works with your procurement and security review.
Talk to usOverages (Startup + Growth)
Additional agent / month
$0.50
Additional 1K actions
$0.005
Transparency — 0 to 100
How your bill is calculated.
The same formula your dashboard uses. Cost is computed once — at write time — from the rate card in effect when the action happened. It is stored, not recomputed. This section walks you through the full pipeline.
Action written to DB
When an LLM call or tool invocation completes, Spineforge writes a row to the actions table. At this point — and only at this point — cost is computed.
Rate card lookup
The cost engine looks up rate_cards WHERE provider = 'openai' AND model = 'gpt-4o' AND effective_from <= NOW() ORDER BY effective_from DESC LIMIT 1. The rate card is the one in effect when the action was written.
-- Rate card schema
SELECT cost_per_1k_prompt_tokens,
cost_per_1k_completion_tokens,
rate_card_id
FROM rate_cards
WHERE provider = :provider
AND model = :model
AND effective_from <= NOW()
ORDER BY effective_from DESC
LIMIT 1Cost stored as NUMERIC(14,8)
The computed cost is stored on the action row as a NUMERIC(14,8) column — precise to the sub-cent. The rate_card_id that produced it is stored alongside it. You can always trace any cost figure back to the exact rate that produced it.
-- Action row schema (relevant fields)
{
"action_id": "act_abc123",
"run_id": "run_xyz789",
"cost_usd": 0.00341200, -- NUMERIC(14,8)
"rate_card_id": "rc_gpt4o_2024q4",
"prompt_tokens": 512,
"comp_tokens": 284
}Run total denormalized at run-end
When a run completes, the per-run total is summed from its action rows and upserted onto the runs table. It is not recomputed each time you load the dashboard. What you see is the stored total from the moment the run finished.
P50/P95 latency is live, not stored
Latency percentiles are the one exception. P50 and P95 are computed on-the-fly by Postgres using percentile_cont() over the raw action rows. They reflect the current dataset — not a snapshot. We say this explicitly because it's materially different from how cost works.
-- How P95 latency is computed
SELECT percentile_cont(0.95)
WITHIN GROUP (ORDER BY duration_ms)
FROM actions
WHERE spine_id = :spine_id
AND started_at >= NOW() - INTERVAL '30 days'Pricing FAQ
What counts as an 'action'?
Every LLM call or tool invocation that Spineforge instruments — one span in the OTel pipeline. If your agent makes 3 LLM calls per user query, that's 3 actions.
Is the cost calculation auditable?
Yes. Every action row stores the rate_card_id used to price it. You can always trace a cost figure back to the exact rate card that produced it — from the dashboard or by querying the DB directly.
What happens if Spineforge is unreachable?
Agents keep running. The APISink falls back to the local FileSink and buffers events to disk. Once connectivity is restored, events are flushed. Spineforge is never in your agent's data path.
Can I self-host?
On-prem / VPC deployment is on the enterprise roadmap. It's not available today.
Is the Python SDK open source?
The SDK is not currently open source. The roadmap and pricing transparency are published openly because we believe you should be able to understand exactly what you're running and paying for.