run-stack
One command to boot a full local stack in Docker: API, Vite apps, Expo mobile, desktop renderer, database, mail and a status dashboard.
Status: an in-progress Rust port. The complete, maintained tool is the npm package
@dev-ahmed/run-stack. This crate covers the commands below and nothing else yet. Use it alongside the npm version, not instead of it.
What works
up [--build] [--essential] [service...] start the stack
down [service...] stop it, keep data
ps / status [service...] service status
logs [service...] follow logs
restart [--build] [--essential] [svc...] down then up
shell / sh [service] shell into a container
apps / list the apps this workspace runs
ports host ports
config the resolved configuration
commands [--raw] every CLI command in a table
explain <compose args> print the docker command, run nothing
env [KEY] the environment compose is given
generate write the compose overlays, start nothing
self-update [--verbose] install latest from crates.io, migrate configs
The binary carries docker-compose.yml, the Dockerfiles and the container
entrypoints inside itself, so it needs nothing else installed.
init, create, the mobile commands, the dashboard and deploy are still the
shell version.
Config
Workspace settings live in .run/run.config.toml (one table per section).
Older .run/run.config.json files are migrated to TOML automatically on the
next command, and on rst self-update.
[]
= "myapp"
= "My App"
[]
= "postgres"
= true
[]
= true
= true
= true
rst up --essential starts only the services set to true under
[essentials]. Set a service to false (or omit it) to leave it out.
Why a port
The npm entry point costs ~600 ms per command before any work starts, because a Node process launches to spawn a bash process. Measured on an M-series Mac:
| time | |
|---|---|
rst --version via the npm CLI |
537 ms |
| the same in Rust | 21 ms |
Speed is the reason to drop Node. Rust is for the single binary — no bash, no python3, no Node on the user's machine — and for making the config and prompt machinery typed.
Requirements
Docker with Compose v2, and a workspace containing .run/run.config.toml,
which run-stack init (or a migrated run.config.json) creates.
License
MIT