-
-
Notifications
You must be signed in to change notification settings - Fork 1
wip vs dip
Yusuke Abe edited this page Aug 11, 2026
·
1 revision
dip is the tool wip is modeled on. If you know dip, most of
wip will feel familiar — the differences come almost entirely from the runtime underneath.
| Both | |
|---|---|
| Named project commands |
interaction: — same key, same idea |
| Alias for it | commands: |
| A single verb hiding run-vs-exec | ✔ |
.env loading |
✔ |
| Sidecar services alongside the app | ✔ |
| Run from any subdirectory | ✔ (walks up to find the config) |
| Extra CLI args appended to the configured command | ✔ |
The design goal is the same: dip rspec / wip rspec should work on a fresh clone without anyone
remembering the underlying invocation.
wip |
dip |
|
|---|---|---|
| Runtime | Microsoft WSLC (wslc.exe / wslc) |
Docker |
| Config file | wip.yml |
dip.yml |
| Orchestration | explicit mode: — container / compose / compose-native
|
assumes Docker Compose |
| Declaring services without Compose | ✔ dependencies:
|
✘ |
| Primary container |
container: — no default
|
conventionally a named service per command |
| Source-sync for slow mounts | ✔ sync:
|
✘ (Docker Desktop's own mount tuning instead) |
| Restart policies | approximated by wip up --watch polling |
via Compose |
| Build-context filtering | wip applies .dockerignore itself |
Docker does it |
| Persistent Windows-side build context | ✔ shadow_context:
|
n/a |
provision: |
✘ not implemented | ✔ |
dip ssh / agent forwarding |
✘ | ✔ |
| Shell completion | ✘ | ✔ |
Most of what wip has and dip doesn't traces back to WSLC:
-
sync:— WSLC bind mounts always cross a VM boundary over virtiofs, so a framework that stats thousands of files at boot is unusably slow. Docker Desktop has its own mitigations; WSLC doesn't. See Fixing a Slow Boot. -
.dockerignorehandling —wslc buildsends the context as-is, with no ignore support of its own. See Dockerignore. -
shadow_context:— the same boundary makes re-sending a large build context expensive. See Shadow Build Context. -
mode: compose-native—wslchas no native Compose support (microsoft/WSL#40948), so someone has to parsecompose.yml. dip could always assume Compose was there. -
--watchrestarts — no restart policy in the runtime, and no event stream to build one on. See Restart Policies.
-
provision:— a declared list of setup commands. Express it as an interaction and run it yourself:interaction: setup: type: run command: bin/setup
-
dip sshand SSH-agent forwarding. - Shell completion.
-
Nested
subcommands:— declare separate top-level entries instead.
Step-by-step: Migrating from dip.
Straightforward: whichever matches your runtime. wip has no Docker backend and dip has no WSLC
backend. If you're running both (a Docker CI and a WSLC laptop, say), keeping both config files is
normal — the interaction: blocks look nearly identical.
Introduction
Modes
Configuration
- Configuration Reference
- Config File Discovery
- Dependencies
- Networking
- Interactions
- Restart Policies
- Env Files
- Secret Masking
- Dockerignore
- Shadow Build Context
- Source Sync
- Sync Modes
compose.yml support
- Compose File Support
- Compose Build
- Compose Depends On
- Compose Profiles
- Compose Variable Interpolation
Commands
- CLI Command Reference
- wip init
- wip version
- wip doctor
- wip config
- wip build
- wip up
- wip stop
- wip down
- wip exec
- wip run
- wip shell
- wip logs
- wip sync
- wip dispatch
- Global Options
- Debug Output
- TTY Allocation
Guides
- Guides
- Migrating from dip
- Reusing an Existing compose.yml
- Fixing a Slow Boot
- Continuous Sync
- Auto Restarting Containers
- Multi Arch Images
- Using wip in CI
Troubleshooting
- Troubleshooting & FAQ
- FAQ
- Configuration Errors
- WSLC Not Found
- Registry Authentication
- Architecture Mismatch
- Volume Limit Reached
- rsync Not Found
- Reporting Issues
Comparison
Project