Spin up. Code on. Zap zap ⚡️

Local dev, zero cognitive load. For busy devs.

1. Install

Install the zapper-cli.

npm install --global pm2 zapper-cli

2. Configure

Create a zap.yaml file.

project: myapp
env_files: [.env.base, .env]
bare_metal:
frontend:
aliases: [fe]
repo: myorg/myapp-frontend
cmd: pnpm run dev
cwd: ./frontend
env: [API_KEY]
backend:
repo: myorg/myapp-backend
aliases: [be]
cmd: python run main.py
cwd: ./backend
env: [API_KEY, DB_PASS]
docker:
database:
aliases: [db]
image: postgres:17
envs: [DB_PASS]
tasks:
sync:
cmds:
- cd frontend; pnpm install
- cd backend; poetry install
- cd backend; poetry run alembic upgrade head

3. Profit

Easy process management!

zap clone # clone all the repos
zap pull # pull all the repos
zap task sync # run tasks
zap up # start the entire project
zap down # stop
zap restart # restart
zap up frontend # filter by service
zap logs frontend # view logs
zap exec db psql # run one off commands
zap l fe # shortcuts for lazy ppl

Be in control. Stop juggling tabs, containers and environment variables across projects.

Features

Isolated 🍱

All state lives in a .zap within your project. Processes are assigned names like zap.projectname.servicename for easy management.

Unified 🤝

Processes, containers, one-off tasks and pipelines all brought under a single readable config and one simple CLI interface.

Lightweight 🪶

Just a thin wrapper on top of pm2 and docker. Straightforward to peer under the hood. Works well with other tools like orbstack, asdf, taskfile and friends.

Watch this space 🔮

More to come! Such as one off tasks, ability to register projects globally, assign aliases, and more.