MeridiansMeridians

1. Services & real 2026 costs (mapped to env vars)

Source path: knowledge-base/knowledge/product/economics/unit-economics/03-1-services-real-2026-costs-mapped-to-env-vars.md

# 1. Services & real 2026 costs (mapped to env vars)

Every external dependency, the env var that turns it on, what it's used for, and the sourced 2026 price.

| Service | Env var | Role in the engine | 2026 price (sourced) | Who pays (managed / self-host) |
|---|---|---|---|---|
| **OpenRouter** | `OPENROUTER_API_KEY` | All LLM calls (generation, reasoning, extraction, chat) | DeepSeek v4 Flash **$0.14/$0.28**, Gemini 2.5 Flash **$0.30/$2.50**, Gemini 3.6 Flash **$1.50/$7.50** per 1M in/out (per `MODEL_PRICING`) | we provide / BYO key |
| **OpenAI — embeddings** | `OPENAI_API_KEY` | `text-embedding-3-small`, semantic search | **$0.02/1M** tokens ($0.01 batch) | we provide / BYO key |
| **OpenAI — TTS** | `OPENAI_API_KEY` | `tts-1` audiobook narration | **$15/1M chars** (tts-1) · $30 (tts-1-hd) · ~$0.015/min (gpt-4o-mini-tts) | we provide / BYO key |
| **Replicate** | `REPLICATE_API_TOKEN` | Seedream 4.x images (board art, covers) | **~$0.03/image** (Seedream 4; 4.5 ~$0.035–0.045). *App hardcodes $0.04 in `calculateApiCost`.* | we provide / BYO key |
| **Firecrawl** | `FIRECRAWL_API_KEY` | Source crawl + change-tracking (research loops) | **1 credit/page**; cost/page **$0.0006–0.0032** by plan; Search 2cr/10 results; JSON mode +4cr. $0 self-host (AGPL). | we provide / BYO or OSS |
| **Fly.io** | `FLY_API_TOKEN`, `FLY_ORG`, `FLY_REGION` | Per-tenant VM (managed runtime) | shared-cpu-1x 1024MB **~$5.77/mo** always-on ($2.02 base 256MB + 768MB @ ~$5/GB/mo; per-second, scale-to-zero); volume **$0.15/GB/mo** | we run / n/a (own machine) |
| **ngrok** | `NGROK_AUTH_TOKEN`, `TUNNEL_TARGET_PORT` | Self-host stable tunnel URL | Free (no reserved) · **Personal $8/mo** ($5 annual), +$14/extra reserved domain | n/a (Fly URL) / ~$8/mo |
| **Telegram Bot API** | (gateway) | Delivery — the push channel | **Free** — official Bot API, built for bots: **no per-message fee**, no templates, no 24h window, no number pool | one bot, both runtimes (managed + self-host) |
| **Supabase** | `NEXT_PUBLIC_SUPABASE_URL`, `..._PUBLISHABLE_KEY`, `SUPABASE_SECRET_KEY` | Control plane only — auth, catalog, cron (gateway mode) | **Pro $25/mo** (amortizes to cents/user) | we run / n/a |
| **Vercel** | (deploy) | Control-plane hosting | **~$20/mo** team, amortized | we run / n/a |
| **Stripe** | (gateway) | Billing | **2.9% + $0.30** + **0.7%** Billing | we run / n/a (self-host free) |

> **Gateway-only vars** (`MERIDIANS_GATEWAY`, Supabase, Fly, Stripe) live exclusively on the
> `meridians.global` control plane (Roadmap 2). The per-tenant app and self-host binary never touch them.

### The two fees hiding in the inference line
- **OpenRouter charges no inference markup** — you pay the underlying provider's rate. But it takes a
  **5.5% credit-purchase fee** ($0.80 minimum) on every top-up, plus a **5% BYOK fee** on requests above 1M/mo.
  The model folds the 5.5% into every managed LLM line (we buy OpenRouter credits); small top-ups effectively
  pay more because of the $0.80 floor.
- **Firecrawl is credit-metered, and the per-page rate falls steeply with plan.** This is the input most worth
  picking deliberately:

| Plan | $/mo | Credits | $/page | Search | JSON mode |
|---|--:|--:|--:|---|---|
| Free | $0 | 1,000 | — | 2cr/10 results | +4cr |
| Hobby | $16 | 5,000 | $0.0032 | " | " |
| Standard | $83 | 100,000 | $0.00083 | " | " |
| **Growth** (model default) | $333 | 500,000 | **$0.00066** | " | " |
| Scale | $599 | 1,000,000 | $0.0006 | " | " |
| Self-host (AGPL) | $0 | ∞ | $0 | — | — |

A research tick crawling 30 pages costs **$0.0198 on Growth** but **$0.096 on Hobby** — a 5× difference on the same
work, which is why the plan is a first-class input in the model.

**Firecrawl spend is loop-driven and compounds — it is not a flat "tick".** The real driver is the user's
**portfolio of research loops**, each with its own mode, topics, sites, and cadence (see §3b). Per the engine
(`lib/engine/research`): a **monitor** loop issues one scrape *per site*; a **discover**/**track** loop issues one
search *per topic* (sites only *scope* a track search), and each search result is scraped. So cost scales with
**topics × results × cadence × number of loops** — adding a daily 3-topic discover loop costs ~7× a weekly one.

**Price reconciliation note:** the manifesto cites DeepSeek at $0.09/$0.18 and Replicate at $0.04; the shipped
`MODEL_PRICING` / `calculateApiCost` use **$0.14/$0.28** and **$0.04**. Replicate's *list* price has since
dropped to ~$0.03. This doc uses the code values for COGS math (they are what the meter charges) and flags the
manifesto as slightly stale.

---
Open on GitHub

Raw Markdown source