Report artifacts
/meow report and /meow profiler stop write one JSON document, schema
meowmc.report/v1 — the schema the viewer at meowmc.org is built against.
The document
{
"schema": "meowmc.report/v1",
"server": {
"reportedVersion": "<the server's own version string>",
"configSchemaVersion": 1,
"mcVersion": "26.3",
"createdAt": "<ISO instant>",
"uptimeSeconds": 0
},
"platform": {
"jvm": "…",
"cpuCores": 0,
"maxMemoryBytes": 0,
"directMemoryCapBytes": 0,
"gcCollectors": ["…"],
"flags": ["…"]
},
"health": {
"tps": { "5s": 0.0, "10s": 0.0, "1m": 0.0, "5m": 0.0, "15m": 0.0 },
"mspt": 0.0,
"gcFraction": 0.0,
"loadedChunks": 0,
"entities": 0
},
"worlds": [
{ "name": "…", "loadedChunks": 0, "entities": 0, "players": 0, "mspt": null }
],
"config": {
"exec.mode": "…",
"ioThreads": 0,
"workerThreads": 0,
"nettyThreads": 0,
"visibilityMode": "…"
},
"profiler": null
}
Field by field
| Block | Field | What it is |
| --- | --- | --- |
| server | reportedVersion | What the running server reports as its version. There is no compiled-in 1.0.0. |
| | configSchemaVersion | The MeowMC configuration schema's _version counter. |
| | mcVersion | The Minecraft version the fork builds against (26.3). |
| | createdAt, uptimeSeconds | When the report was written and how long the server had been running. |
| platform | jvm, cpuCores, maxMemoryBytes | The JVM a reader of the report is interpreting the numbers against. |
| | directMemoryCapBytes | The netty direct-memory cap wired at boot from network.max-direct-memory. |
| | gcCollectors, flags | The GC names and runtime flags relevant to reading the GC fraction. |
| health | tps | The five windows, same sources as /meow health. |
| | mspt, gcFraction | Live readings — the server's own average tick time and the GC fraction of wall time. |
| | loadedChunks, entities | Cross-world sums. |
| worlds[] | name, loadedChunks, entities, players | Per-world load, not per-world CPU. |
| | mspt | null. There is no per-level tick-timing source in this build, so the field is present-and-null rather than a zero that would read as a measurement. |
| config | the five keys | The knobs a reader of the report needs to interpret the numbers — what was on when it was taken. Only keys with existing readers, never the whole file. |
| profiler | — | null for a plain /meow report, otherwise the closed session: scope, startedAt/stoppedAt, durationSeconds, samplesTaken, threadCpuSupported, and threads[{name, cpuSeconds, sharePercent}]. |
What is deliberately null
Reading an artifact should never leave you unsure whether a number was measured:
worlds[].msptis null — there is no per-level tick-timing source in this build.- On a cold server,
tps.5s,tps.10s,gcFraction,loadedChunksandentitiesare null until the first sample window has closed.msptand the1m/5m/15mwindows stay: both are the server's own live readings, not values the sampler condensed a second ago.
/meow health renders its nominal reading instead — the
artifact is the more conservative of the two surfaces.
The file
reports/meowmc-report-<yyyyMMdd-HHmmss>.json, relative to the server's
working directory — the same directory policy as the benchmark dump at
dumps/meowmc-benchmark.json. Nothing cleans these files up for you.
Where the artifact can go
- Today: nowhere. The local sink writes the file and answers
uploaded = falsewith the path. No HTTP client exists in the command path. - Tomorrow:
meowmc.org/r/<id>. The receiving API and the viewer are live on the domain; when the client-side key and its sink land, the artifact, the command and the printed string are untouched.
Privacy
The report is an operator's artifact, written by default with no review
step. It therefore contains no player names, no IPs, no coordinates. The only
identifying field is the world name in worlds[].name.