Cost and budget
What Popcorn costs to run every day, what a real run cost, and how the daily budget cap keeps model spend under control.
What does it cost to run Popcorn every day? Popcorn itself is free and open source (MIT): no license fee, no seats, no per-prompt or per-brand pricing. Run it on your own machine and there’s no hosting cost; host it on a Docker host, Kubernetes or an exe.dev VM and you pay your host. On your own machine it can run entirely on the Claude subscription you already have (and ChatGPT’s, optionally), with no API key and no API spend. Through the APIs instead, spend is capped by a daily budget, budget.daily_usd in popcorn.toml, that every API call is checked against before it goes out.
In a real run of 17 prompts and 68 answers, answered on Claude and ChatGPT subscriptions and graded through the API, the model spend was $0.033, all of it grading; graded on the subscription too, it would have been nothing. The same answers at API prices would have added about $3.78. For comparison, Otterly.AI’s entry plan is $29 a month as of October 2026, but it covers assistants Popcorn doesn’t; see Popcorn or Otterly.AI.
Where the money goes
| what | runs on | billed |
|---|---|---|
| Popcorn | your machine or your host | free (MIT); hosting is whatever your host charges |
| answering your prompts | claude-code or codex CLIs, or the anthropic or openai APIs | your existing Claude or ChatGPT subscription, or per token |
| grading every answer | the Anthropic API ([grader]) | per token |
| the fix list, once per run | the Anthropic API ([analyst]) | per token |
Claude is required, through a subscription or an API key; ChatGPT is optional. Grading and the fix list go through the Anthropic API by default, or with provider = "claude-code" through the claude CLI on your subscription, so a laptop can run with no API key at all. Subscriptions work only where the claude and codex CLIs are installed: on your own machine or a VM, not in the Docker image. See Running on your subscriptions.
What a real run cost
Popcorn’s own run of its Choosing an AI visibility tool set on 21 October 2026 (run r-20261021-200546-84c081): 17 prompts, two answerers on subscriptions (Claude Opus through claude-code, gpt-6.1-sol through codex), one search and one recall answer each, so 68 answers.
Grading: $0.033 for the whole run. The grader is claude-haiku-5-5 at $0.10 per million input tokens and $0.50 per million output. The 68 grades cost $0.0326 in all, about $0.0005 each; the most expensive was $0.0009.
Answering: $0 extra, on the subscriptions. Every answer still records the tokens it used, so here is what the same tokens would have cost at the API prices in [pricing] (Opus $4 in / $20 out / $0.20 cache read / $5 cache write per million; gpt-6.1-sol $2 / $10 / $0.10; searches $10 per 1,000):
| answerer and track | answers | at API prices | per answer |
|---|---|---|---|
| Claude Opus, search | 17 | $1.63 | $0.096 |
| Claude Opus, recall | 17 | $0.59 | $0.035 |
gpt-6.1-sol, search | 17 | $1.40 | $0.082 |
gpt-6.1-sol, recall | 17 | $0.16 | $0.009 |
| all | 68 | $3.78 | $0.056 |
One answer worked through, a Claude Opus search answer: 4 input tokens × $4/M + 2,585 output × $20/M + 3,373 cache reads × $0.20/M + 3,479 cache writes × $5/M + 2 searches × $10/1,000 = $0.00002 + $0.0517 + $0.0007 + $0.0174 + $0.02 = $0.090.
These are the CLIs’ own token counts priced at API rates, not an API bill: an anthropic or openai answerer sends a different prompt, so its counts will differ. Read them as the order of magnitude. Search answers cost more than recall: the searches themselves are $10 per 1,000, and the results they bring back are input.
The fix list adds one claude-opus-5-5 call per run ($4 / $20 per million tokens).
So, per run of a 17-prompt set with two answerers, one sample per track:
| answering on | per run, before the fix list | the same set daily for 30 days |
|---|---|---|
| subscriptions | $0.03 | about $1 |
| APIs, at the prices above | about $3.81 | about $114 |
popcorn.zone runs its sets weekly, on subscriptions.
The daily budget
[budget]
daily_usd = 40.0
reservation_usd = 0.60
concurrency = 6
daily_usdis the most Popcorn may spend on API calls in a UTC day, across every run, answer, grade, fix list and search probe.reservation_usdis what each call reserves before it goes out (default $0.60).concurrencyis how many API calls may be in flight at once.
Before every API call, Popcorn reserves reservation_usd in a SQLite ledger, and only if today’s spend plus that reservation stays within daily_usd. When the response comes back it settles the entry to the call’s real cost, from the token counts in the response and the prices in [pricing]. If the cost can’t be read, the reservation stays on the books, so an unknown is never counted as free.
When a reservation would go over the cap, the call isn’t made and the run stops with status budget: “stopped: today’s spend reached the $40 daily budget; retry tomorrow to finish”. What it had finished is kept; retrying it the next day finishes the rest. Today’s spend against the cap is shown on the home page and on each prompt set’s page.
Things to know:
- It’s an admission limit, not a billing cap. A call is admitted on its reservation, and one call can cost more than that, so the day can end slightly over. Set spending limits with your providers too.
- Subscription answers cost $0 in the ledger and don’t count against the budget; only their grading does.
daily_usd = 0, or no[budget]at all, means no cap. Set it.- A model with no price in
[pricing]can’t be called, so nothing goes out unpriced. Check the prices against the providers’ current price lists; the cost figures are only as right as they are.
Keeping the spend down
- Answer on subscriptions where you can. On popcorn.zone, both answerers are subscription CLIs, and grading is the only API spend.
- Run weekly.
[tiers.core] every_daysand[tiers.plg] every_daysset how often the schedule runs each tier. Recall only moves when models change, and search over days to weeks, so daily mostly buys a smoother trend line at seven times the answers. popcorn.zone runs both tiers weekly. - Fewer samples.
samples = { search = 2, recall = 1 }per answerer is three answers per prompt;[tiers.plg] max_samples = 1caps a tier at one. - A cheap grader. The grader reads every answer; the analyst runs once a run. Use a small model for
[grader]. - Leave the schedule off on a dev machine: without
schedule.daily_hour_utc, nothing runs unless you start it.
See Configuration for the rest of popcorn.toml.
Popcorn or Otterly.AI on a startup budget
Otterly.AI’s pricing page, as of October 2026, lists Lite at $29 a month ($25 with its 15% annual discount): 15 search prompts, tracked daily across ChatGPT, Google AI Overviews, Perplexity and Microsoft Copilot. Claude, Gemini and Google AI Mode are add-ons from the Standard plan ($189 a month, 100 prompts).
The same 15 prompts daily in Popcorn, on subscriptions, with two answerers and one sample per track, is 60 answers a day. At the grading cost measured above (about $0.0005 an answer), that’s about $0.03 a day, roughly $1 over 30 days, plus the fix list and your hosting if you host it.
What decides it isn’t the price:
- Which assistants. Popcorn asks Claude and OpenAI models, directly through their APIs or CLIs. It doesn’t cover Google AI Overviews, AI Mode, Gemini, Perplexity or Copilot. If those are where your buyers ask, Popcorn won’t tell you about them.
- What you get back. Popcorn asks each question on two tracks, with and without web search, grades whether each answer recommends you, and keeps every answer, search and citation behind each number. Each run ends in a ranked fix list. See How grading works.
- Who runs it. Otterly.AI is a subscription service you sign up for. Popcorn is software you run, on your machine or your own host, with your prompt sets in a config repo you own.