Skip to content
crib logocrib logo

devcontainers without the ceremony

Your devcontainer.json, minus the IDE. crib builds the container and stays out of your way.
Terminal window
mise use github:fgrehm/crib

Or without mise:

Terminal window
curl -Lo crib.tar.gz "https://github.com/fgrehm/crib/releases/latest/download/crib_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz"
tar xzf crib.tar.gz crib && install -m 755 crib ~/.local/bin/crib && rm crib.tar.gz

See Installation for full details.

If your project has a .devcontainer/ directory, you’re ready:

Terminal window
cd my-project
crib up # build and start the devcontainer
crib shell # drop into a shell
crib restart # restart (picks up config changes)
crib down # stop and remove the container

No agent injection

All container setup happens via docker exec from the host. Nothing gets installed inside your container that you didn’t ask for.

Docker and Podman

Both runtimes are first-class citizens. Auto-detected or configurable via environment variable.

DevContainer Features

Full support for OCI-based devcontainer features. Install tools like Node, Go, or Docker-in-Docker without touching your Dockerfile.

Lifecycle hooks

All six devcontainer lifecycle hooks run automatically, from onCreateCommand through postAttachCommand.

Docker Compose

Multi-service setups work out of the box. crib reads your compose files, builds services, and manages the full stack.

Smart restart

crib restart detects what changed and picks the fastest strategy, from a simple restart to a container recreate.