CLI

Commands

Complete reference for all TriStack CLI commands

Overview

The TriStack CLI ships as a standalone native binary. It scaffolds Python, Go, and Rust backend projects: uvx tristack for Python (or uv tool install tristack / pipx install tristack), and the standalone tristack command for Go and Rust (curl installers). It ships two commands today — create (the default) and create-json.

create (Default Command)

Creates a new TriStack project.

uvx tristack [project-directory] [options]

Parameters

  • project-directory (optional): Name or path for your project directory. Defaults to my-tristack-app.

Key Options

  • --yes, -y: Use default configuration, merging any provided flags (skips prompts)
  • --dry-run: Validate configuration and target directory without writing files
  • --verbose: Show detailed result information as JSON
  • --yolo: Bypass validations and compatibility checks
  • --language <lang>: python, go, rust
  • --framework <framework> (Python): FastAPI (default), Litestar, Django, Flask
  • --orm <orm> (Python): sqlmodel (default), sqlalchemy, tortoise, none
  • --migrations <tool> (Python): alembic (default), none
  • --database <db>: sqlite (default), postgres, mysql, none
  • --package-manager <pm> (Python): uv (default), poetry, pip
  • --addons [values...]: space-separated list (or repeat the flag) or none (see Options)
  • --git / --no-git: Initialize a Git repository (default on)
  • --install / --no-install: Install dependencies after creation (default on)
  • --directory-conflict <strategy>: merge, overwrite, increment, error
  • --disable-analytics: Opt out of telemetry (the CLI sends none today)

See the full reference in Options. Options are per language — see the Compatibility reference for the Go and Rust option sets.

For JSON-first automation and agent usage, see Agent Workflows.

Examples

# Interactive prompts
uvx tristack my-api

# Quick setup with defaults
uvx tristack --yes

# Fully specified stack
uvx tristack my-api \
  --language python \
  --framework fastapi \
  --orm sqlmodel \
  --migrations alembic \
  --database postgres \
  --package-manager uv \
  --addons docker ruff pytest github-actions

# Rust stack (standalone binary)
tristack my-api \
  --language rust \
  --framework axum \
  --orm seaorm \
  --migrations none \
  --database sqlite \
  --package-manager cargo \
  --addons docker cargo-watch clippy

# Validate without writing files
uvx tristack my-api --yes --dry-run

create-json

Create a project from a single JSON payload instead of many flags. This is the agent- and automation-friendly path.

uvx tristack create-json --input '{
  "projectName": "my-api",
  "language": "python",
  "framework": "fastapi",
  "orm": "sqlmodel",
  "migrations": "alembic",
  "database": "postgres",
  "packageManager": "uv",
  "addons": ["docker", "pytest"],
  "git": true,
  "install": false
}'

The payload is validated against CreateInputSchema — the same schema that backs --yes. See Agent Workflows for details.

On this page