Roundhouse

Rails is the specification; deployment is a build flag.

Roundhouse ingests a Ruby on Rails application into a typed intermediate representation and emits equivalent projects in C#, Crystal, Elixir, Go, Kotlin, Python, Rust, Swift, and TypeScript — plus a Ruby round-trip that runs under CRuby, JRuby, or Spinel. Three real apps demonstrate it, each proving something different:

Blog

Correctness

The reference app, small enough to support fully. It's the conformance oracle: every target compiles clean, passes its tests, and matches live Rails.

Reference app →

Lobsters

Real-world coverage

A real production app — and Ruby's own YJIT benchmark. The proving lane: most of it transpiles, and the gaps show up as live diagnostics.

Proving lane →

Mastodon

Scale

The moonshot — one of the largest Rails apps, its whole-app types analyzed in ~2s in a browser tab. Work in progress, with the gaps shown.

The moonshot →

The emitted projects compile clean and pass their tests. Correctness is a conformance oracle: the same URL fetched from Rails and from each target must produce the same response — enforced by emitted unit tests, a differential compare gate against live Rails, and end-to-end browser tests.

No annotations are involved: has_many :comments is a type declaration, and whole-program inference recovers the types Rails' conventions already imply. That inference is a product in its own right — an LSP server, an MCP server, and the in-browser IDE answer what's the type here, can this be nil? on unannotated Rails apps, with no app boot and no database: queries answer in milliseconds, and a whole-app pass over Mastodon takes about two seconds, in a browser tab.

It's also the performance story: every decision that can't differ between requests is made once, at transpile time. The emitted Ruby serves ~10× the requests of stock Rails on the same CRuby+YJIT, ~74× under JRuby, and the compiled targets go further — ratios from a CPU-bound microbenchmark; caveats in the posts below.

Successor to railcar. Dual-licensed MIT / Apache-2.0.