Write Python, JavaScript, and Bash inside one program, and hand code exactly the authority it needs โ no more. Compiled to CASM bytecode and run on the CVM1 virtual machine. Early, incomplete, and moving fast.
_
Drop into another language mid-program with @python { }, @javascript { } or @bash { }. Python and JavaScript hand typed values back to Crush; Bash returns its output as text. A block only runs when it's granted.
No ambient authority. A program gets io.print, fs.read, net.get only when you grant them โ and nothing it wasn't handed. This is the core idea the language is built around.
Crush compiles to CASM bytecode and runs on the CVM1 virtual machine, natively or compiled to WebAssembly in your browser. Packaged as capsules, the same granted capability set is enforced whether a capsule runs natively or in the browser: try it.
Crush is alpha. Here's the real state, so you can decide what to try.
The language, compiler and VM run real programs: functions, structs, ranges (for i in 0..n), exceptions, input with io.read, the capability system, typed @python / @javascript round trips, and a standard library that's on by default. File, environment, time and HTTP access each sit behind their own grant. cargo install crush-lang-sdk gets you crush, crushc, crush-run and crush-repl (0.4.0); crush-pkg builds and runs a package in one command and checks its declared capabilities against what it uses. Every example in the guide that can run in a browser has a Run button, and every chapter downloads as a notebook.
Lambdas don't parse yet, and import doesn't load anything, so code can't be shared across files. The execution engines can still disagree in corners; differential tests across all of them are in progress. Walkers for languages beyond JavaScript, Python, C and Bash are thin.
A polyglot block only runs when it's granted, but once granted it runs as a normal host process with your full authority: it steps outside the capability sandbox. An opt-in sandbox exists on Linux but isn't on by default yet. Don't run untrusted Crush with --polyglot. Sandboxing granted blocks is first on the roadmap below. We'd rather say so than surprise you.
Plans, not promises. Each item is tracked in crush-ast; nothing here works until it says so above.
crush run file.pyEach model was pointed at crush-ast and asked one thing: "can you learn crush?" They had no task spec, and each one shipped a self-playing game. Eight games and two interpreters run in your browser.
The core: compiler frontend, the CVM1 runtime, the CASM assembler, and the language-frontend crates.
The language, the capability model, CAST and CASM. Every example that can run in a browser has Run and Edit buttons.
Notebooks for Crush: a .crush-nb document format, an MCP kernel that runs cells with shared variables, and an HTML renderer. cargo install crush-notebook-kernel.
Self-playing ASCII games written in Crush, each by a different LLM given only "can you learn crush?".