# Using the interactive prompts (/docs/cli/prompts)



## Overview [#overview]

The CLI uses `@clack/prompts` for interactive questions. These prompts work well in most terminals and are fully keyboard-driven.

## Prompt sequence [#prompt-sequence]

The questions are grouped into two sections, prompted in order:

**Stack**

1. **Language** — which language is your backend? (`python`, `go`, `rust`)
2. **Framework** — options depend on the language (Python: `fastapi`, `litestar`, `django`, `flask`; Go: `gin`, `fiber`, `echo`, `chi`, `stdlib`; Rust: `axum`, `actix-web`, `rocket`, `warp`, `salvo`, `loco`)
3. **Frontend** — `htmx`, `none` for all languages (Python, Go, and Rust); `htmx` is rejected with `framework none` or the Rust Loco framework
4. **ORM / data layer** — options depend on the language (Python: `sqlmodel`, `sqlalchemy`, `tortoise`, `none`; Go: `sqlc`, `gorm`, `sqlx`, `none`; Rust: `seaorm`, `diesel`, `sqlx-rust`, `none`)
5. **Migrations** — options depend on the language (Python: `alembic`, `none`; Go: `goose`, `golang-migrate`, `none`; Rust: `none`)
6. **Database** — `sqlite`, `postgres`, `mysql`, `none`

**Tooling**

7. **Package manager** — options depend on the language (Python: `uv`, `poetry`, `pip`; Go: `go`; Rust: `cargo`)
8. **Addons** — multi-select, options depend on the language (Python: `docker`, `ruff`, `mypy`, `pytest`, `github-actions`, `none`; Go: `docker`, `air`, `golangci-lint`, `github-actions`, `none`; Rust: `docker`, `cargo-watch`, `clippy`, `github-actions`, `none`)
9. **Git** — initialize a Git repository? (yes/no)
10. **Install** — install dependencies after creation? (yes/no)

## Core keys [#core-keys]

* **Navigate**: Up/Down arrow keys
* **Confirm/continue**: Enter
* **Cancel**: Ctrl+C

## Prompt types you'll see [#prompt-types-youll-see]

### Single select (choose one) [#single-select-choose-one]

* **Move** with Up/Down, **Enter** to choose the highlighted option.

Typical places: language, framework, frontend, ORM, migrations, database, and package-manager prompts.

### Multi-select (choose many) [#multi-select-choose-many]

* **Move** with Up/Down.
* **Space** toggles the highlighted option on/off.
* **Enter** confirms your selection(s).
* Some prompts allow selecting none (you can press Enter without toggling anything).

Typical places: selecting addons.

### Confirm (yes/no) [#confirm-yesno]

* Use Left/Right or Up/Down to highlight Yes/No, then **Enter**.

Typical places: installing dependencies, initializing Git.

### Text input [#text-input]

* Type your answer and press **Enter**.
* If validation fails, a short message will explain what to fix; edit and press **Enter** again.

Typical places: project name/path.

## Tips [#tips]

* You can skip all prompts with `--yes` if you want the defaults; provide flags alongside it to override individual choices. See the [Options](/docs/cli/options#yes--y) page.
* If you accidentally start the wrong flow, press **Ctrl+C** to cancel safely.
