Same Brains · cloud dashboard

Enter your access key to continue. It is stored only in this browser and sent as a header on each request.

Same Brains · cloud dashboard

Private · key-gated · reads are free (no cost impact)
loading…

Plays per day (last 30 days)

Funnel — last 24 hours

Events by window

Event1h24h7d30d

The first tables below count finished matches (plays, last 30 days). The "all visitors" and "conversion" tables further down count everyone who arrived — including ad traffic that never finished a game — so paid/cold traffic stays visible. Geo is the free Cloudflare request geo; no IP stored.

Top countries

Top regions

Top cities

Games played (by mode)

Games played by country (last 30 days)

CountryTop gamesGames

Finished matches grouped by the free Cloudflare request country, with each country's most-played modes. No IP stored; rides the existing beacon.

All visitors by country (any event)

Distinct visitors per country across all events (not just finishers). This is where cold ad traffic shows up — if it's missing here, the beacon truly isn't reaching us; if it's here but absent from the tables above, those people just didn't finish a match.

Conversion funnel by country (last 24h)

CountryCreatedJoinedFinishedFinish rate

create → join → finish per country. A country with lots of Created but almost no Joined means solo visitors with no second player (typical of cold paid traffic to a 2-player game), not a broken game. "Finish rate" is finished ÷ created.

Conversion by ad source (last 24h)

Source (utm / gclid)CreatedJoinedFinishedFinish rate

Captured client-side from utm_* / Google's gclid (shown as google/cpc). Judge paid campaigns on finished games, not clicks. Empty if your ad URLs aren't tagged.

Look up a player

Most active players (30d) — click to inspect

NameCountryRegionCityPlaysLast seen

List comes from Analytics Engine (no D1 scan). Names + "played with" load when you click a row.

Estimated monthly cost (from measured traffic)

Full component model (prices re-verified Jun 2026). Since Jan 7, 2026 Cloudflare bills SQLite-backed Durable Object storage in three parts: rows written ($1/M after 50M free) — every put(), setAlarm() and delete — plus rows read ($0.001/M after 25B free) and stored data ($0.20/GB-mo after 5 GB-mo free). At scale the row writes, not requests, are the dominant line item; reads are effectively free and stored data stays inside the free tier because room DOs are reaped after each match. The model also counts DO requests (WS frames + alarm invocations), DO duration, Worker API requests (beacons / room create / stats), D1 stat upserts, and TURN egress. Analytics Engine is not billed yet (the beacons and every dashboard read are $0 today); the table shows its announced future price for planning, but it adds $0 to the live total — so this dashboard has no cost impact.

Cost breakdown (measured month)

ComponentUnit priceFree / moUsage / moEst. cost

Projection by scale

MAUMatches/moDO requestsDO rows writtenEst. cost/moper 1k MAU

Per-match assumptions (tune in source if architecture changes)

Health checks computed from the data already loaded — viewing them costs nothing. Some infra signals (TURN egress, D1 size, error rate) can't be read here; set up free Cloudflare Notifications for those (see below).

Set up once (free Cloudflare Notifications)

BillingDashboard → Notifications → "Billing usage" / "Bill is ready" → email you.
Worker errorsNotifications → "Workers" CPU/error alerts on the samebrains Worker.
TURN egressWatch Realtime/TURN usage vs the 1,000 GB/mo free tier in the Cloudflare dashboard.
D1Stays flat (bounded rows). No alert needed; check size occasionally.

Players whose first finished match created a D1 row. Rolling windows: last 24h · 7d · 30d.

New users by country

Most recent signups — click to inspect

NameCountryRegionCitySigned up

Names from D1; country/region/city from Analytics Engine (same source as the Players tab).

Danger zone

Clear all stored data

Permanently deletes every bounded D1 row: players (users + names + lifetime stats), pairs (who-played-with / match history), push subscriptions, and account links. This cannot be undone.

Note: the funnel/geography logs live in Cloudflare Analytics Engine, which is append-only and has no delete API — those events expire on their own after the dataset retention window and cannot be wiped from here.

Reads come free from Cloudflare Analytics Engine + bounded D1 point lookups, so refreshing often has no cost impact. "Live" = distinct players active in the last 5 minutes; unique-player counts are approximate at very high volume due to sampling.