Roundhouse

Mastodon — the moonshot, analyzed in a browser tab

Mastodon is one of the largest, most complex Rails applications in the wild. It's the target that says how far this goes: if Roundhouse can carry Mastodon, it can carry real Rails at scale. Whole-app type analysis runs in about two seconds — in a browser tab, with no app boot and no database.

Status: work in progress — the moonshot is "Mastodon on Spinel" by end of 2026. It doesn't run yet; what works today is deep analysis and partial transpilation, with the gaps shown, not hidden.

Explore its types (IDE) Transpile it (Playground)

Why Mastodon

It is the hard case, chosen on purpose. Hundreds of models and controllers, concerns layered on concerns, service objects, heavy use of scopes and associations, HAML templates — the accumulated complexity of a real, long-lived product. Ambition needs a ceiling you can actually reach for, and this is it: the whole point of a Rails-is-the-specification transpiler is to run the Rails apps people actually built.

What works today

Open it in the IDE: it ingests the whole application and answers what's the type here, can this be nil? across the codebase — hover types, completion, go-to, request traceroute, N+1 hints — in milliseconds, all client-side. No annotations: has_many is a type declaration, and whole-program inference recovers the types Rails' conventions already imply.

Open it in the Playground: it transpiles to any target, emitting what it can and leaving a diagnostic on every construct not yet modeled. The multi-second pass runs off the main thread, so the tab stays responsive while thousands of files move through the compiler. This is the honest ledger at its largest scale — the same bar the blog meets perfectly, made visible on the hardest app.

Further reading

Source: mastodon/mastodon, pinned to a fixed commit. Mastodon is AGPL-licensed; each shipped bundle embeds its LICENSE and commit — the compliant kind of source redistribution.