npm run admin — then reload this page. Pages are read from disk on every request, but the server's routes only change when it restarts.
Overview
Live monitor
A rolling view from the public server. Visitor counts are anonymous aggregates; route pressure covers the last 60 seconds.
Active visitors
Traffic
Active identities in the preceding five minutes, sampled every minute; longer ranges average samples. Anonymous traffic is an estimate, not verified humans. User traffic separates anonymous visitors, direct browser sessions and authenticated MCP accounts; its total counts these access identities, not unique people across channels. Suspected automation includes known probe paths, declared crawlers, command-line clients, health checks and other API integrations; authenticated MCP is shown in user traffic. automation does not mean malicious. An ordinary missing page is not enough to flag a visitor. Requests blocked by Nginx are not included. Earlier history cannot be reclassified. Only aggregate counts are stored.
Online now
Signed-in accounts that used Cartheca in the last 15 minutes, most recent first. Someone who has since signed out everywhere, or been locked, drops off at once. Assistant connections are not counted.
Server pressure
Usage over time
Uses the time range selected above Traffic. Inspect a chart with your pointer or arrow keys to compare every metric at the same time. CPU and memory measure the whole process; the route filter changes request charts. Request and error counts are rolling-minute readings, not totals to add together. Latency charts summarize sampled percentiles and do not recalculate a percentile for the whole time range.
Estimated active-user capacity
Recalibrates from sustained average load over 30 days of aggregate history. Shows a number only once at least 12 five-minute observations span three visitor counts and both CPU and event-loop load track visitor count. Fits fixed workload separately from load per visitor; noisy fits receive extra headroom. Active means a request in the last five minutes. Assumes similar traffic per user and the same server; 100% CPU is one occupied vCPU. This is an estimate, not a tested maximum: memory, database, network and nonlinear latency can limit capacity earlier.
Route pressure
CPU, memory, and event-loop readings are process-wide. Compare them with route traffic here to identify likely causes without pretending overlapping work can be assigned exactly.
Users
Decks
Live streams
A playtest streamed to Streamer View runs through a relay held in the deck-builder process's memory. This portal is a separate process, so it cannot list relays or end one on its own. Hiding a deck stops every stream of it, and locking an account stops all of that person's streams, on their next frame; viewers and the streamer are told why.
Appeals
A reply to a decision this portal made. The original reason is shown beside it as it was written at the time, because lifting a lock clears it from the account. Granting an appeal performs the unlock or unhide as part of the same answer.
Inbox
Bugs, requests and questions sent from the public contact form. A sender who was signed in gets your reply as a notification; a signed-out sender left an address and has to be written to by hand, so what you type is recorded here as the account of what was said.
Blog
Posts are written here and served at /blog. A new post starts unpublished and is not reachable at its address until you publish it; unpublishing takes it back down. Editing a published post changes it live.
Activity report
User-written content created or edited in a period, as a Markdown file to hand to a reviewer.
Private decks have not been published to anyone. Including them means exporting content their owners chose to keep to themselves.
What the report covers
- Public and unlisted decks — name, tags, and the full primer, reproduced exactly as they stand now.
- When each deck’s name, primer or tags changed during the period, and which of them, so an edit made in the period and changed again afterwards is still listed.
- Display names of accounts created in the period.
- Folder renames, but only with private content included — a folder name is visible to nobody but its owner.
- Deck and owner ids, so anything flagged can be found here and acted on.
- Not email addresses. They add nothing to a content review and the file is meant to leave the building.
What it cannot show
- Edits are recorded once per deck per 24 hours, so several edits made the same day appear as one event listing every field they touched between them.
- Earlier versions of the text cannot be shown, here or anywhere: Cartheca records that a primer changed, never what it previously said.
- Decks last edited before the edit log existed have no entries in it, so for those the period still falls back to a single last edited time.
Audit log
Every admin action, newest first. Append-only.
Comments
What readers have said on deck pages. Hiding withholds a comment without destroying it, so the text is still here if the decision is appealed or reversed — the same treatment a hidden deck gets.