The problem
Rust, the survival game, resets its servers on a schedule. The map wipes, sometimes the blueprints too, and the best moment to join is the first hour after a wipe when everyone starts with a rock. There are more than 9,000 servers online at any time, each on its own schedule, and the existing trackers were either slow to update, cluttered with paid placement, or limited to one region.
We wanted a board that answered one question honestly: which servers wipe today, and can I trust the time?
What we built
The board. One page listing every server that just wiped, wipes next or is overdue, worldwide, in the visitor's local time, filtered by team size (solo, duo, trio, quad), vanilla or modded, gather rate, wipe cycle, region and country. Favourites with countdowns, a "where to play tonight" picker, and a week view.
Trust labels on every time. BattleMetrics exposes two kinds of schedule: ones the server owner declared and ones inferred from past wipes. Most trackers blur them. Wipe Board labels every time as owner-declared or detected, and marks a wipe that was due but has not been seen. A history database records what actually happened, so each server page shows whether its owner's schedule is kept.
Pages for everything. A server-rendered page for each of the 9,000+ servers with its schedule in plain English, next wipes, population history and map. Pages for every filter combination, country and region, for every server network (Rustafied, Warbandits, Rusty Moose and 70 more), "best servers in" rankings, a force wipe countdown, and dated statistics on how Rust servers wipe. The force wipe page and country pages exist in German, French, Russian and Brazilian Portuguese with proper hreflang.
Alerts without accounts. A Discord webhook, browser push or a calendar feed, configured in the favourites panel. No sign-up, no bot to invite.
An API, an OpenAPI spec and an MCP server. The same data is available as plain JSON, as an OpenAPI document any agent can import, and as a remote Model Context Protocol server at wipeboard.net/mcp. Add that URL to Claude, ChatGPT or Cursor and you can ask "which solo vanilla servers wipe tonight in Europe?" and get an answer from live data, with a link to each server.
Why these choices
Python standard library, one process, one box. The whole service is a single Python process with no framework, serving HTML, JSON and the MCP endpoint, on a small Hetzner server behind Caddy and Cloudflare. Full refresh every 10 minutes; servers about to wipe re-checked every minute. It costs a few euros a month and has no moving parts to wake anyone up at night.
Server rendering, not a JavaScript app. Search engines and AI crawlers do not run JavaScript reliably. Every page, including the board itself, ships its content in the HTML. When we measured the homepage without JavaScript it had 3 rows and 350 words; now it has 50 rows and 1,300, which is what GPTBot and ClaudeBot actually read.
Built for answer engines from day one. Structured data on every page (Dataset, Event, FAQ, ItemList, Breadcrumb), an llms.txt describing the site to language models, citable statistics under a CC BY licence, and the MCP server. We treat being the source that an assistant quotes as a distribution channel, not a novelty.
No paid placement. Rankings are by who is playing right now, with a small bonus for queues and a penalty for stale maps. Nobody can buy a position, and we say so on every list.
What happened
The first version was live within a day. Google fetched roughly 20,000 server-page requests within hours of the sitemap being submitted. Over the following days the site grew the history database, alerts, embeds, localisation, the network and ranking pages, and the API and MCP server. It is the product we point to when a client asks what "built to be found" means in practice.
What we would do differently
We shipped the board as a JavaScript app first and server-rendered it later. Next time the crawler view comes first. We also under-estimated how many servers publish no schedule at all (about half), which is why the detected-versus-declared labelling became the core of the product rather than a detail.
Frequently asked questions
Where does the data come from?
BattleMetrics server data: live player counts, map start times and each server's declared wipe schedule. Wipe Board refreshes the full list every 10 minutes and servers about to wipe every minute.
How can an AI assistant use it?
Add https://wipeboard.net/mcp as a connector in Claude, ChatGPT or Cursor. The server exposes tools to find a server, list upcoming wipes with filters, list fresh wipes, get the next force wipe and get statistics. There is also an OpenAPI spec for custom GPT Actions and plain JSON endpoints.
Why Python with no framework?
For a read-heavy site with one writer, a framework adds dependencies without adding capability. The standard library HTTP server, SQLite and a few hundred lines of rendering code are easier to keep running for years than a stack that needs upgrading every quarter.
Could you build a similar data product for us?
Yes. A public data source, a clean model on top of it, pages for every entity and an API that assistants can call is a pattern we can apply to most industries. Book a free consult and we will look at your data together.