Use what you already have.
Scan for dwork.yml workspaces and select existing Compose projects. A Compose-only workspace doesn’t need extra configuration.
A small CLI for your daily development
Resume your project’s containers, wait for healthy dependencies, and open your terminals and browser URLs. Get back to the work you came to do.
Linux macOS WSL2 MIT licensed
# Find your projects. Pick up where you left off.
$ dwork scan
$ dwork list
$ dwork switch my-app
Illustrative workflow · switches show a plan for confirmation
Less setup. More momentum.
Scan for dwork.yml workspaces and select existing Compose projects. A Compose-only workspace doesn’t need extra configuration.
dwork stops eligible registered workspaces before starting the selected one. Locked workspaces and unregistered projects stay running.
Add terminal commands, service health checks, and browser URLs to your config. Use saved groups when you need several workspaces together.
dwork starts existing containers. It never creates, rebuilds, or removes them. Complete your project’s initial setup and migrations first.
From install to first switch
Install the latest main source for your user, with isolated Python dependencies.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/hayyaun/dwork/main/install.sh)"Requires Git, Make, curl, and Python with venv: 3.10+ on Linux/WSL2 or 3.13+ on macOS. The installer prints any needed PATH setup.
Container workspaces also need Docker and Docker Compose. Terminal tasks need a supported terminal. Prefer a tagged version? See release packages.
Inspect the installerScan your projects folder, list saved workspaces, then switch using a name from the list.
cd ~/projects
dwork scan
dwork list
dwork switch my-appReplace my-app with a saved name. Scanning saves projects without starting or stopping anything. Switching shows the plan and asks for confirmation.
Your workflow, in one file
Put dwork.yml beside your Compose file to describe the parts of your workspace you want dwork to open.
postgres container.make run in a terminal.This example assumes a postgres service with a Docker health check, a make run target, and an app on port 3000. Adapt these to your project.
# yaml-language-server: $schema=https://raw.githubusercontent.com/hayyaun/dwork/main/schemas/dwork.schema.json
version: 1
compose:
enabled: true
services: [postgres]
terminals:
- title: Backend
command: [make, run]
wait_for:
healthy: [postgres]
timeout: 180
browsers:
- url: http://localhost:3000
wait_for:
timeout: 60Go a little deeper
Commands, previews, status, and diagnostics.
Fields, defaults, readiness, and schema support.
Scanning, registration, saved groups, and locks.
Launchers, windows, and background commands.
Let an agent help write your workspace config.
Native Linux/macOS and Windows with WSL2.