Show HN: Replaces Supabase and FastAPI Jerrycan, an AI-native Rust backend framework and generation platform, replaces Supabase and FastAPI by letting AI agents design, generate, verify, and deploy complete backends from a single description. The framework enforces security and testing by default, producing crate-per-module workspaces with compiler-enforced boundaries for multi-agent development. Humanity's last backend. Built for AI agents. The AI-native Rust backend framework + generation platform. Agents design, generate, verify and package complete backends. You never write the code. jerrycan.cc https://jerrycan.cc · AI-native docs /backant-io/jerrycan/blob/main/docs/ai · Why jerrycan exists https://jerrycan.cc/blog/humanitys-last-backend-framework · llms.txt https://jerrycan.cc/llms.txt bash $ jerrycan new --design bookmarks.json describe it once ✓ scaffolded a crate-per-module workspace $ jerrycan gen-tests --module bookmarks the test suite is generated for you ✓ 8 acceptance tests written …an agent fills in ~12 lines of obvious handler glue… $ jerrycan --json check build · clippy · audit · tests · lints {"ok":true,"diagnostics": } all green: safe + tested, no internals leaked 0.2.0, published onExpect rough edges as it grows. crates.io . Early but real. Agents build it, you don't. Describe the API once; jerrycan generates the workspace, a working data layer, and the tests. Handlers come out as a few lines of obvious glue. Secure by default. Secure response headers, body limits, strict input handling, no internals leaked in errors, forbid unsafe code everywhere, and stable JC codes that deep-link into the docs. Tested before it's "done". jerrycan generates the acceptance suite test-first; jerrycan check won't go green until it passes. What the generator can't derive from the contract becomes an explicit AGENT TODO in the test file, so the gaps are named instead of silent. Fail loud. Conflicting routes are build-time errors before serving; missing dependencies and cycles are coded errors, not mysteries. Multi-agent ready. Generated apps are crate-per-module workspaces with compiler-enforced boundaries, so parallel agents merge without conflicts. Deploy anywhere, deployed by the agent. jerrycan package produces a static binary, a hardened container image, k8s manifests, or a systemd unit, with an SBOM. jerrycan deploy render writes a deploy kit the agent executes with an API key: design file to live URL, no human in the loop. Docs that can't lie. Every example in the docs is a doctest executed in CI. cargo install jerrycan the CLI + MCP server Wire the MCP server into your agent, then ask for a backend in one prompt: Claude Code claude mcp add jerrycan -- jerrycan mcp // Cursor / any stdio MCP client { "mcpServers": { "jerrycan": { "command": "jerrycan", "args": "mcp" } } } The agent drives the whole loop: design → scaffold → gen-tests → implement → check → package → deploy. Claude Code users also get the bundled jerrycan-backend skill /backant-io/jerrycan/blob/main/.claude/skills/jerrycan-backend that guides the process end to end. Point any other agent at docs/ai /backant-io/jerrycan/blob/main/docs/ai or jerrycan.cc/llms.txt https://jerrycan.cc/llms.txt ; the docs are written to be sufficient on their own. In your app: the framework, with the extensions you need cargo add jerrycan --features db,auth,validate,observe A route module is Flask's Blueprints, reborn with compiler-enforced boundaries. Everything a handler needs is visible in its signature, and guards are just dependencies : php use jerrycan::prelude:: ; pub fn module - Module { Module::new "todos" .route "/", get list .post create .route "/{id}", get show .delete remove .mount "/{id}/comments", comments::module // subroutes nest arbitrarily .provide TodoRepo::new // module-scoped dependency } async fn list repo: Dep