Checking your access…
Staff only
This area is for the Ancient Warden moderation team. If you reached this by mistake, head back home.
Back to homeStaff dashboard
Reports
Sanctions
Ban an IP address
Lookup
Realm moderation
Newly created or renamed realms wait here until a reviewer clears them. Force rename confiscates a name (nobody can re-take it for 30 days).
Name blocklist (admin)
Name holds and exception grants (admin)
A hold with no account uid refuses the name to everybody. A hold WITH an account uid is an exception grant: that one account may take that one name even if it hits the blocklist. Names are matched on their folded form, so spelling variants land on the same hold.
Realm tag vocabulary (admin)
The list owners choose realm tags from. Deactivating a tag stops new selections and hides the directory filter; realms that already carry it keep it until their owner edits.
Every realm moderation action, including ones taken by realm owners and realm moderators, lands here with its reason. Escalation rows are denied attempts by realm-local actors against the owner, staff, or another moderator.
Take a realm action
Nodes and capacity
Capacity is sold from the operator-entered core counts only. A node's own reports are a cross-check display and can never change what placement sells. Enrollment tokens and node keys are shown exactly once.
Node and placement actions (ops tier)
Support tickets
Bug reports
Security
Invalid or unauthorized access attempts, recorded append-only. Bot detection files its findings as system reports in the Reports tab; this feed is the raw evidence trail behind them.
News
New post
Soundtrack lab
Listen to every song in the game exactly as the client plays it, switch between the low (synth) and high (sample pack) instrument banks, reshape a theme while it plays down to each part's level and every drum hit, write a new track from a blank slate, and copy the result as a change set to hand back for implementation. The Guide button in the transport bar explains every control.
Text lab
Read every line a player can read, the way a writer reads it: each storyline quest by quest and stage by stage with the NPC beats that fire there, every town with who stands in it and what they do, every item, place, find, spell and vault. Edit any line in place and copy the result as a change set to hand back for implementation. The Guide button explains the layout.
World lab
The whole map from above: the surface, the cave band and The Fabled Depths, with every road, city street, building, placed object, NPC and monster spawn where the game puts it. Move a building with everything in it, redraw a road, add a lamppost, remove a spawn, then copy the result as a change set to hand back for implementation. The Guide button explains the tools.
Ops
Run a server update or a capacity stress test from here. The ops agent runs the task on the box and streams its log below. Only one task runs at a time.
Client update
Pulls the latest css/, js/, api/, assets/ and root *.html pages from GitHub into the stage folder, then Publish copies stage to the live site (api/config.php is never touched). Pointed at the client-build branch it pulls the bundled, hashed client the build-client workflow makes from every push to main: css/js arrive already minified and only the pages are minified here. Publish keeps the previous deploy’s css/js set for one more round so pages players still have open keep working, and removes anything older. Pointed at a source branch it minifies css/js itself, as before. When ops_dir is configured it also ships the web host ops tools (the top-level ops/*.php scripts) to that folder outside the web root, and writes aw-paths.php there so they can find the live api/. Publishing empties the stage, so re-publishing needs a fresh fetch. Runs in short automatic steps, so shared-hosting and Cloudflare timeouts can’t kill it; if a step is dropped, just click the button again to resume.
Newsletter
Compose
Plain text: blank lines split paragraphs, bare links become clickable. It goes out in the standard Ancient Warden email template with each subscriber's own one-click unsubscribe link. Preview first, test-send to yourself, then send. Only confirmed subscribers are ever mailed.
Send history
Analytics
Which places we advertise Keeper and realms are actually working. Every number here is a count of events, never of people: nothing that could identify a visitor is collected, so there are no unique visitors, no funnels per person and no way to drill into anyone. Visitors who send Do Not Track or Global Privacy Control are not counted at all.
Traffic sources
Add a tag, then put it on the links you place elsewhere. A visit that follows such a link is counted under the tag in the funnel below instead of under direct. The tag rides in the address for the life of that browser tab and is never tied to an account.
Loading…
Site settings
Client IP & proxy forwarding
Loading…
This checks the api/ side (bans, rate limits, IP history). The WebSocket/game server trusts forwarded headers separately, via its own TRUST_PROXY env var (see docs/OPS.md).
Emergency switches. Turning one off blocks that entry point for everyone right away. Player login also revokes existing non-staff sessions; they can’t refresh, so they end within about an hour. Staff can always still sign in and stay signed in.
Login message
Shown to every player in an amber bubble when they enter the world, next to the welcome line. Leave it empty and no bubble shows. Realm owners have their own message of the day; in a realm both show, each in its own colour.
Loading…
Status page notices
Add an issue to a component and the status page shows that colour and your message. The page still runs its own checks; the worse of the two wins. Clear the notice when it is resolved.
Loading…