CLI
Using the interactive prompts
How to navigate and answer the CLI's interactive questions
Overview
The CLI uses @clack/prompts for interactive questions. These prompts work well in most terminals and are fully keyboard-driven.
Prompt sequence
The questions are grouped into two sections, prompted in order:
Stack
- Language — which language is your backend? (
python,go,rust) - 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) - Frontend —
htmx,nonefor all languages (Python, Go, and Rust);htmxis rejected withframework noneor the Rust Loco framework - ORM / data layer — options depend on the language (Python:
sqlmodel,sqlalchemy,tortoise,none; Go:sqlc,gorm,sqlx,none; Rust:seaorm,diesel,sqlx-rust,none) - Migrations — options depend on the language (Python:
alembic,none; Go:goose,golang-migrate,none; Rust:none) - Database —
sqlite,postgres,mysql,none
Tooling
- Package manager — options depend on the language (Python:
uv,poetry,pip; Go:go; Rust:cargo) - 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) - Git — initialize a Git repository? (yes/no)
- Install — install dependencies after creation? (yes/no)
Core keys
- Navigate: Up/Down arrow keys
- Confirm/continue: Enter
- Cancel: Ctrl+C
Prompt types you'll see
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)
- 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)
- Use Left/Right or Up/Down to highlight Yes/No, then Enter.
Typical places: installing dependencies, initializing Git.
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
- You can skip all prompts with
--yesif you want the defaults; provide flags alongside it to override individual choices. See the Options page. - If you accidentally start the wrong flow, press Ctrl+C to cancel safely.
