Site status
What is live on tinycorp.ai, and what the machine itself says about it. Every figure on this page is read when you load it — from the running process, a file’s own timestamp, the gunicorn error log, the dataset manifest, the readers ledger and the route manifest. Nothing here is typed in. A figure that could not be read says not measured rather than a guess.
Read Thursday 15 October 2026, 04:36 UTC · cached for two minutes · the same payload as /api/status.json
What is live
Every row names the file or the process it was read from. Times are UTC — the box’s clock, and the clock every log here is written in.
| What | Reading | Where it comes from |
|---|---|---|
| The service | up · 3 workers · 60s request timeout | the gunicorn master’s own /proc/838408/cmdline, read by the worker serving this page |
| Serving since | Tuesday 13 October 2026, 18:57 UTC | the master process start time in /proc, against the kernel’s boot clock — this is when the service last restarted |
| Last deploy — code | Tuesday 13 October 2026, 18:57 UTC (33 hours ago) | app.py mtime, 211.1 KB. Every push goes through safe_deploy.sh, which refuses the copy unless the candidate still defines every route the running file does. |
| Last deploy — templates | Friday 25 September 2026, 05:54 UTC | the newest mtime under templates/ — templates/base.html |
| Route guard | 66 of 66 present | required_routes.txt (69 lines, blanks and comments included), each name greped for as ^def name( in the running app.py — the same check safe_restart.sh makes before it will restart anything. |
| Worker timeouts, last 7 days | 51 | WORKER TIMEOUT lines in /var/log/tinycorp-signal-error.log (1.4 MB). A request that times out never reaches the access log, so this file is the only record. Series below. |
| Price tape — last export | 2026-09 · 5,599,135 rows | static/datasets/manifest.json — written by the export itself, 2026-10-01T02:05:15+00:00, 133 s, 101.3 MB gzipped |
| Price tape — all months | 45,111,780 rows · 3 months | the same manifest, summed across its month entries. Unit: rows of the tape, not markets and not trades. The tape and its schema → |
| Checksums | 3 of 3 files | one .sha256 beside each archive; the newest was written 2026-10-01T02:05:15Z and starts d57e3fbf6f630bc2… — check it yourself |
| Price database | 23.4 GB + 554.9 MB write-ahead log | /mnt/HC_Volume_106613800/tinycorp/predictive.db, read with stat. This is the live tape the pollers write to; the CSVs above are monthly archives cut from it. |
| Free space | 24.1 GB free · 50.7% used | statvfs on the volume the database sits on (/mnt/HC_Volume_106613800/tinycorp), of 48.9 GB total |
| Who reads this data | 414 verified · 471 claimed | data/readers.json, rebuilt nightly from the nginx access log; last built 2026-10-15T01:44:02+00:00. The full ledger → |
Worker timeouts, day by day
A worker timeout is gunicorn killing a request that ran past its 60-second ceiling — the reader saw an error. In September the cause was found: the backtester ran a COUNT(*) across the whole 23.4 GB price tape on every run. That was fixed on 2026-09-18. Since that day the log has recorded 108 more. The series below is read straight out of the log — it is not a claim that the fix worked, it is the evidence, and a bad day would show up here the same way the old ones do.
Each box is one UTC day, oldest on the left; the bar is against the worst day shown (19). Last 7 days 51, the 7 before that 26. Lifetime total 502 since 2026-05-27; the last day with one was 2026-10-14.
Who reads us
Requests from clients that name themselves an AI crawler or assistant, over the last 7 days, split by whether the address was inside the IP range that crawler’s operator publishes. Verified means the user-agent said it and the address checks out. Claimed means the user-agent said it and the address was not on the list — anyone can type any user-agent, and most of the claimed rows here are scanners probing for .env files under a famous name. Requests, not visitors, not pageviews.
| Family | Verified | Claimed | Total |
|---|---|---|---|
| ClaudeBot | 194 | 110 | 304 |
| PerplexityBot | 100 | 44 | 144 |
| OAI-SearchBot | 64 | 45 | 109 |
| ChatGPT-User | 49 | 53 | 102 |
| GPTBot | 7 | 107 | 114 |
| Claude-User | 0 | 90 | 90 |
| Perplexity-User | 0 | 22 | 22 |
| Claude-SearchBot | no published range | — | 0 |
5 of 14 AI families had at least one verified request in the window 2026-10-02 to 2026-10-15. A further 1,052 requests came from families whose operator publishes no range at all, so they can be neither verified nor disproved. Every family, every day, and the range lists →
The honest gaps
What this page can see that is missing, incomplete or easy to misread. Derived from the same reads above, not from a list somebody keeps.
- 1,052 of the AI-named requests in the last 7 days came from families whose operator publishes no IP range, so they can be neither verified nor disproved. A user-agent can be forged: a family is what a client SAID it was.
- The 502 worker timeouts are every one gunicorn has logged since 2026-05-27. The error log is not rotated, so this is a lifetime count, not a recent one -- read the daily series above it, not the total.
What this page does not say
- No money
- Every bot on tinycorp.ai trades paper. There is no revenue figure, no profit and no sum of anything across bots on this page, because none of those would mean anything here.
- No other site’s numbers
- This studio runs four sites and each one keeps its own status page. Counts from American Adventurer, Momatio or 223 Hampshire are never printed here, even where the same machine serves them — a number on this page is tinycorp.ai’s own or it is not here.
- No visitors
- The readers table counts requests in a web-server log. It is not visitors, not pageviews, and a user-agent can be forged — which is exactly what the verified/claimed split is for.
- Not a promise
- “Up” here means this page rendered. It is a reading taken at the moment you loaded it, cached for two minutes, and it says nothing about the next two.
- Read it yourself
- The same payload is JSON at /api/status.json, the page is
quants/status_page.py, and every source it reads is named in the table above. - What changed
- This page is a reading of now. For what changed over the last weeks — bots archived, forward-test windows opened and closed with their verdicts, Evolution Lab runs, price-tape exports — see What changed (also RSS and JSON).