# Commands (/docs/cli)



## Overview [#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) [#create-default-command]

Creates a new TriStack project.

```bash
uvx tristack [project-directory] [options]
```

### Parameters [#parameters]

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

### Key Options [#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](/docs/cli/options#addons))
* `--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](/docs/cli/options). Options are per language — see the [Compatibility reference](/docs/cli/compatibility) for the Go and Rust option sets.

For JSON-first automation and agent usage, see [Agent Workflows](/docs/cli/agent-workflows).

### Examples [#examples]

```bash
# 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-json]

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

```bash
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](/docs/cli/agent-workflows) for details.
