Options Reference
Complete reference for all TriStack CLI options and flags
General Options
--yes, -y
Use default configuration and skip interactive prompts. Any flags you provide are merged over the defaults.
uvx tristack --yes
uvx tristack my-api --yes --database postgres--dry-run
Validate configuration, compatibility, and directory handling without writing files. The CLI still prints the resolved stack and the reproducible command.
uvx tristack my-api --yes --dry-run--verbose
Show detailed result information in JSON format after project creation.
uvx tristack my-api --yes --verbose--yolo
Bypass validations and compatibility checks. Not recommended for normal use.
uvx tristack --yolo--language <lang>
Programming language for the backend:
python: Python backendgo: Go backendrust: Rust backend
uvx tristack --language rust --framework axum--framework <framework>
Backend framework, scoped to the selected language:
Python:
fastapi: FastAPI (async, OpenAPI-first)litestar: Litestar (msgspec typing, batteries included)django: Django + Django REST Frameworkflask: Flask (minimal)
Go:
gin: Gin (high-performance HTTP)fiber: Fiber (Express-inspired)echo: Echo (high performance, minimalist)chi: Chi (lightweight, idiomatic router)stdlib: Go stdlib (net/http)
Rust:
axum: Axum (modular, ergonomic)actix-web: Actix Web (actor-based)rocket: Rocket (type-safe, productive)warp: Warp (composable, filter-based)salvo: Salvo (simple, powerful)loco: Loco (Rails-like full framework)
uvx tristack --framework litestar
tristack --framework axum--frontend <frontend>
Frontend strategy, scoped to the selected language. When set, pages are served by the same backend (no separate UI server).
Python:
htmx: server-rendered pages with HTMX for interactivitynone: API-only project with no rendered pages
Go:
htmx: server-rendered pages with HTMX for interactivitynone: API-only project with no rendered pages
Rust:
htmx: server-rendered pages with HTMX for interactivitynone: API-only project with no rendered pages
Note: Loco (
--framework loco) doesn't supporthtmxyet — the CLI rejects that combination.
uvx tristack --frontend htmx--orm <orm>
ORM or data layer, scoped to the selected language:
Python:
sqlmodel: SQLModel (Pydantic-native)sqlalchemy: SQLAlchemy 2.0tortoise: Tortoise ORM (async, Django-style)none: No ORM
Go:
sqlc: sqlc (type-safe Go from SQL)gorm: GORM (developer-friendly)sqlx: sqlx (extenddatabase/sql)none: No ORM
Rust:
seaorm: SeaORM (async)diesel: Diesel (safe, extensible)sqlx-rust: sqlx (async SQL toolkit)none: No ORM
uvx tristack --orm sqlalchemy
tristack --orm seaorm--migrations <tool>
Database migration tool, scoped to the selected language:
Python:
alembic: Alembic (pairs with SQLModel/SQLAlchemy)none: No migrations
Go:
goose: Goose (migrations/*.sql)golang-migrate: golang-migrate (db/migrations/*.up.sql/*.down.sql)none: No migrations
Rust:
none: No migrations (run your ORM's own tooling)
Django uses its own bundled migrations; combined with --framework django, migrations are on you by default.
uvx tristack --migrations alembic
tristack --migrations goose--database <db>
Database type:
sqlite: SQLite (local, default)postgres: PostgreSQLmysql: MySQLnone: No database
uvx tristack --database postgres--package-manager <pm>
Package manager, scoped to the selected language:
Python:
uv: uv (fast, modern; default)poetry: Poetrypip: pip + venv
Go:
go: Go modules (always)
Rust:
cargo: Cargo (always)
uvx tristack --package-manager poetry
tristack --package-manager cargo--addons [values...]
Additional features, scoped to the selected language. Pass a space-separated list (or repeat the flag), or none:
Python:
docker: Dockerfile +docker-compose.ymlruff: Ruff linting/formatting configmypy: MyPy type-checking configpytest: Test suite with health-check testsgithub-actions: CI workflownone: No addons
Go:
docker: Dockerfile +docker-compose.ymlair: Live-reloading for Go appsgolangci-lint: Fast Go linters runnergithub-actions: CI workflownone: No addons
Rust:
docker: Dockerfile +docker-compose.ymlcargo-watch: Rerun on file changesclippy: Lints to catch common mistakesgithub-actions: CI workflownone: No addons
uvx tristack --addons docker ruff pytest
tristack --addons docker cargo-watch clippy
uvx tristack --addons none--git / --no-git
Control Git repository initialization.
uvx tristack --no-git--install / --no-install
Control dependency installation after project creation. Runs uv sync / poetry install / pip install for Python, go mod tidy for Go, and cargo build for Rust.
uvx tristack --no-install--directory-conflict <strategy>
How to handle existing, non-empty target directories:
merge: Keep unrelated files and replace conflicting generated filesoverwrite: Permanently clear the directory before scaffoldingincrement: Create a suffixed directory (e.g.,my-api-1)error: Fail instead of prompting
The interactive prompt recommends the first available suffixed directory and requires an extra confirmation before overwriting.
# Overwrite an existing directory without prompting
uvx tristack my-api --yes --directory-conflict overwrite
# Safely create a new directory name if it exists
uvx tristack my-api --yes --directory-conflict increment--disable-analytics
Opt out of telemetry for this run. The CLI does not transmit telemetry today; the flag is reserved for future telemetry.
uvx tristack --disable-analyticsDefault Stack
Running with no flags (or with only --yes) produces:
| Option | Default |
|---|---|
language | python |
framework | fastapi |
frontend | none |
orm | sqlmodel |
migrations | alembic |
database | sqlite |
packageManager | uv |
addons | docker, ruff, pytest |
git | true |
install | true |
Option Validation
The CLI validates that framework, orm, migrations, and frontend values belong to the selected language. See the Compatibility page for the full rule set.
Examples
Full Configuration
uvx tristack my-api \
--language python \
--framework fastapi \
--frontend htmx \
--orm sqlmodel \
--migrations alembic \
--database postgres \
--package-manager uv \
--addons docker ruff mypy pytest github-actions \
--installMinimal Setup
uvx tristack my-micro \
--framework flask \
--database none \
--addons none