The green-tea CLI — scaffold, run, and generate green-tea apps from a single native binary. No JS runtime required to install or operate.
cargo install matcha-cliBuilds from crates.io and installs the matcha
binary. Needs a Rust toolchain; takes a few seconds.
Prebuilt binary (no Rust), from the latest GitHub release:
curl -fsSL https://raw.githubusercontent.com/Expressive-Tea/matcha/main/install.sh | shDrops the binary in ~/.local/bin. Env vars go on the sh side of the pipe:
curl -fsSL …/install.sh | MATCHA_VERSION=v26.7.0 MATCHA_INSTALL_DIR=/usr/local/bin shFrom git (compiles the default branch):
cargo install --git https://github.com/Expressive-Tea/matchamatcha new my-api # scaffold from the official starter
matcha new my-api --template-url gh:owner/repo # scaffold from any git template
matcha run # detect node/deno/bun and run in watch
matcha create controller Users # generate + auto-wire into @Module
matcha add sse # add a capability (sse|stream|buffer) to your controllermatcha new <name> (no flags) scaffolds a live app: it serves an index.html
with the green-tea logo and streams a rotating zen message over @Sse('/zen').
Open the browser and it's already alive — matcha run boots it.
create and add edit your TypeScript with tree-sitter: they insert imports
and wire pieces into the right @Module array or controller. Edits are
idempotent and revert themselves if they would break the file's syntax. Pass
--check to create to type-check with your project's runtime afterward.
matcha run picks the runtime by precedence, first match wins:
matcha.toml—runtime = "node" | "deno" | "bun"deno.json/deno.jsonc→ denobun.lockb/bun.lock→ bunpackage.json→ node
Edge is a deploy target, not a matcha run target.
MIT — same as the green-tea framework. Contributions require a DCO sign-off (git commit -s).