CLI

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 backend
  • go: Go backend
  • rust: 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 Framework
  • flask: 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 interactivity
  • none: API-only project with no rendered pages

Go:

  • htmx: server-rendered pages with HTMX for interactivity
  • none: API-only project with no rendered pages

Rust:

  • htmx: server-rendered pages with HTMX for interactivity
  • none: API-only project with no rendered pages

Note: Loco (--framework loco) doesn't support htmx yet — 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.0
  • tortoise: Tortoise ORM (async, Django-style)
  • none: No ORM

Go:

  • sqlc: sqlc (type-safe Go from SQL)
  • gorm: GORM (developer-friendly)
  • sqlx: sqlx (extend database/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: PostgreSQL
  • mysql: MySQL
  • none: No database
uvx tristack --database postgres

--package-manager <pm>

Package manager, scoped to the selected language:

Python:

  • uv: uv (fast, modern; default)
  • poetry: Poetry
  • pip: 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.yml
  • ruff: Ruff linting/formatting config
  • mypy: MyPy type-checking config
  • pytest: Test suite with health-check tests
  • github-actions: CI workflow
  • none: No addons

Go:

  • docker: Dockerfile + docker-compose.yml
  • air: Live-reloading for Go apps
  • golangci-lint: Fast Go linters runner
  • github-actions: CI workflow
  • none: No addons

Rust:

  • docker: Dockerfile + docker-compose.yml
  • cargo-watch: Rerun on file changes
  • clippy: Lints to catch common mistakes
  • github-actions: CI workflow
  • none: 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 files
  • overwrite: Permanently clear the directory before scaffolding
  • increment: 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-analytics

Default Stack

Running with no flags (or with only --yes) produces:

OptionDefault
languagepython
frameworkfastapi
frontendnone
ormsqlmodel
migrationsalembic
databasesqlite
packageManageruv
addonsdocker, ruff, pytest
gittrue
installtrue

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 \
  --install

Minimal Setup

uvx tristack my-micro \
  --framework flask \
  --database none \
  --addons none

On this page