Skip to content

Stacks

A stack is the set of language-native tools wired into the task contract. Every task delegates to its stack's tools.

Stack comparison

Python Go Rust Web (TS)
Status ✅ Available ✅ Available ✅ Available ✅ Available
fmt ruff format gofumpt cargo fmt prettier
lint ruff check golangci-lint cargo clippy eslint
typecheck ty go vet cargo check tsc --noEmit
test pytest go test cargo test vitest
build uv build go build cargo build --release vite build
deploy check Package build Docker build Docker build wrangler deploy dry-run
Tool manager uv go toolchain cargo npm

Stack selection

Set at init time via --stack:

mise run init -- --non-interactive --name myapp --shape single --stack python
mise run init -- --non-interactive --name myservice --shape single --stack go
mise run init -- --non-interactive --name mydaemon --shape single --stack rust
mise run init -- --non-interactive --name mydashboard --shape single --stack web
mise run init -- --non-interactive --name mydashboard --shape single --stack web --web-ui shadcn --web-db drizzle-d1

Web stack variants are opt-in. --web-ui accepts plain, tailwind, or shadcn; --web-db accepts d1 or drizzle-d1.

After init, the stack is recorded in .mise.toml:

[env]
SCAFFOLD_PROJECT_STACK = "python"

All task scripts read this variable to dispatch to the correct toolchain.

Detailed docs