Reference

CLI Reference

Every stack subcommand. Flags shown in [brackets] are optional.

Project lifecycle

stack new <name> / stack new .

Interactive scaffolding. stack new . targets the current directory and refuses to run if a stack.toml is already there.

stack up [dir] [--prompt]

Clones anything declared in [[clone]] that's missing, activates languages, starts declared services, spawns [run], and routes the domain. Defaults to the current directory. --prompt allows interactive prompting for unresolved command placeholders.

stack down [project] [--all]

Stops that project's [run] process and removes its route. Shared services keep running for other projects unless --all is passed, which stops every project and every shared service — the true end-of-day shutdown.

stack status alias: stack ps

Lists every running project, service, and Caddy's own liveness/route count. Self-healing — drops entries whose process is no longer alive.

stack stats [--no-stream]

Continuously-refreshing CPU/memory view, docker stats-style. --no-stream for a single snapshot.

stack logs <name> [--tail N] [-f/--follow]

Reads a project's or service's log file directly — works even after it's stopped, since it doesn't depend on the running-state list.

Manifest editing

stack add <kind> <name> [version] [options]

kind is language, service, or tool. Format-preserving — existing comments and key order in stack.toml survive untouched.

stack remove <kind> <name>

Removes one entry, same format-preserving guarantee.

Diagnostics & registry

stack doctor [--fix]

Checks vfox/uv/Caddy are present at compatible versions, and that every registered service/tool path still exists on disk. --fix installs vfox/uv/Caddy at stack's pinned versions. Also scans for pre-existing Windows Services (MySQL, MongoDB, PostgreSQL) worth registering as external.

stack register <kind> <name> <version> <path>

kind is service, tool, or language — makes a BYO install reusable by any project, without repeating the path in every stack.toml. stack register service <name> <version> --external --port <port> registers an already-running instance instead of a path.

stack list

Live-merged view of everything installed — vfox, uv, and the registry — queried fresh each time, never cached.

stack prune [--yes] [--purge-data]

Reports language/service versions installed but no longer referenced by any known project. Dry-run by default; --yes uninstalls orphaned language SDKs and drops orphaned registry pointers only — a service's actual data directory is never touched without the separate, explicit --purge-data.

Shell integration

stack setup [--shell]

One-time bootstrap: wires the shell hook into your profile and runs doctor --fix. Idempotent — safe to run again.

stack hook <shell>

Prints the bootstrap script your shell profile evaluates once at startup. You won't normally call this directly — stack setup wires it for you.

stack activate <shell>

Called by the hook on every prompt — resolves the current directory's stack.toml (if any) and prints the PATH changes for that shell to apply. Silent, no-op output when no manifest is found.

stack load-env [path]

Loads a .env-style file for the current shell session only (defaults to .env in the current directory). Confirms which variable names were loaded — never the values.