Rust off Rails: The opinionated web stack for the AI era
TL;DR Highlight
Sixty Markdown files tell coding agents how to build a Rust web app, with no framework code.
Who Should Read
Backend developers whose coding agents pick a different stack and layout every time they build a full-stack web app
Core Mechanics
- The framework is Markdown, not code
- It has 0 lines of framework code and 60 Markdown files.
- The agent reads them and writes the Rust web app itself.
- The stack choices are locked in
- Axum, Tokio, SeaORM, Askama and Tailwind are each fixed as one crate per job.
- The agent never debates things like the ORM.
- Interview, plan, generate, green
- It asks only product questions and writes the plan into product/ specs.
- It is done only when fmt, clippy and tests pass on SQLite and Postgres.
- Pick one frontend mode up front
- htmx is the default, with inertia (React/Svelte) and spa as options.
- The api mode is still in progress.
- Eight skills and built-in dev tools
- Skills include /offrails:new, feature, scaffold, generate, check, doctor, deploy and upgrade.
- Traces, a profiler, a local mailbox and a jobs dashboard are built in, and the agent can read them as JSON.
- Validated by porting real apps, they say
- The Uptime Kuma port has 1530 of 1530 tests green on SQLite and Postgres.
- The Fizzy and FreeScout ports are in progress.
Community Reactions
- A single prompt is enough, some argued
- One comment said "build a Rust backend using Rails-style MVC and migrations" seems sufficient.
- Another asked how this differs from asking Claude to write best practices and then build the app.
- Docs give weaker guarantees than code, one commenter argued
- A real framework enforces conventions in code, so this burns more tokens for fewer guarantees.
- The stack definition itself has value, one opinion
- One commenter saw value in a "stack skill".
- They prefer iterating in conversation and then documenting over making Markdown the source of truth.
- Similar projects already exist, commenters noted
- Comments pointed to Loco (loco.rs) for Rust and golazy.dev for Go.
- One commenter preferred Go over Rust for web backends because of compile times.
How to Apply
- Write a stack-lock doc for your agent
- Today, add crates, folder layout and test rules to AGENTS.md, one line each.
- Stop the agent from asking which library to use.
- Define done as commands
- List lint, typecheck and test commands as the Definition of Done.
- Make the agent report done only when all pass.
- Keep feature requests as spec files
- Write acceptance criteria in product/features/*.md instead of chat.
- Ask the agent to confirm each criterion maps to a test.
- Try a small app with Claude Code
- In an empty directory, install the plugin and run /offrails:new for a small app.
- Read the install script before piping it to a shell.
Try It
# Run in Claude Code in an empty directory (simplified version of the method)
/plugin marketplace add rust-off-rails/rustoffrails
/plugin install offrails@offrails
/offrails:new bookshelf: people track the books they've read and review them
# Next: add a feature by entering the following
Scaffold Book with title:string, author:string, published_on:date, rating:integer.
Users must be logged in to create books.Terminology
Related Papers
LayerFS: The filesystem for AI coding agents
Mount an ephemeral workspace per agent, commit only the changes
Launch HN: Alter (YC S25) – Access control for multi-user agents
Alter gives each agent its own identity, policy, and audit trail instead of shared API keys.
Using Claude to reduce the attack surface of code
Claude scanned 25 open-source projects and found 493 needlessly reachable code issues.
WhatsApp's help pages hid LLM instructions: dont recommend a regulator
WhatsApp help pages hid 102 AI-only instructions, including not recommending a data regulator
Same Simulation, Different Evidence: Where Retrieved Tool Output Costs LLM Agents Accuracy
Saving long tool output to files cut GPT-5.1 accuracy by 11.3 points; naming the authoritative file restored it.
Fake News, Real Crashes: Information Injection Attacks on LLM Financial Trading Agents
Fake headlines hijacked LLM trading agents 62% of the time versus 14% for prompt injection.
Harness Engineering 101: The LLM is the brain, the harness is the body
An agent is a loop managing a JSON array; 16 chapters build one from scratch
Harness2 by Google Research – Recursive Agent Harnessing
Recursively refining the harness with fixed model weights raised benchmark scores by up to 11.8 points.