A small CLI for your daily development

Your workspace.
One command.

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

A workspace, ready to work

# Find your projects. Pick up where you left off.

$ dwork scan
$ dwork list
$ dwork switch my-app
Resume existing containersYour database, cache, and other services
Wait for dependenciesHealth checks before dependent commands
Open your workspaceConfigured terminals and browser URLs

Illustrative workflow · switches show a plan for confirmation

Less setup. More momentum.

Describe it once.
Come back with dwork.

01 / Discover

Use what you already have.

Scan for dwork.yml workspaces and select existing Compose projects. A Compose-only workspace doesn’t need extra configuration.

02 / Switch

See the plan. Then switch.

dwork stops eligible registered workspaces before starting the selected one. Locked workspaces and unregistered projects stay running.

03 / Work

Bring the whole setup along.

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

A short path to getting started.

01 / Install

One command to install.

Install the latest main source for your user, with isolated Python dependencies.

Installation & updates
Terminal
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 installer
02 / Find & switch

Choose your next project.

Scan your projects folder, list saved workspaces, then switch using a name from the list.

Terminal
cd ~/projects
dwork scan
dwork list
dwork switch my-app

Replace 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

A little YAML.
A ready workspace.

Put dwork.yml beside your Compose file to describe the parts of your workspace you want dwork to open.

  1. Start the existing postgres container.
  2. Wait for it to become healthy.
  3. Open make run in a terminal.
  4. Open the browser when its URL is ready.

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.

Explore example configs
dwork.yml
# 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: 60

Go a little deeper

Find the next answer.

All documentation