Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Vibe coding configuration

Airlock’s configuration system is hierarchical. That means you can put user-level settings in ~/.airlock/config.toml or ~/.airlock.toml, and they will apply to every project sandbox by default (and be overridden by per-project configuration where present).

This is especially handy if you want to “vibe code” and just point your agent at a random directory without any extra setup. Since airlock can build sandboxes from local Docker images, you can prebake one local image with everything you need for your vibe-coding sessions.

Your ~/.airlock/config.toml (or ~/.airlock.toml) might look something like this:

presets = ["debian", "rust", "claude-code"]

[vm.image]
name = "vibe:local"
resolution = "docker"

[network]
policy = "deny-by-default"

Pairing with mise

If you’re using mise for your project tooling, airlock pairs extremely well with it. You can use mise’s task dependencies and sources / outputs to build a local “vibe coding” image and keep it up to date.

Create ~/.airlock/vibe.dockerfile, for example:

FROM debian:trixie-slim

ENV MISE_TRUSTED_CONFIG_PATHS="/"

# Install development dependencies
RUN apt-get update && apt-get install -y git curl build-essential
RUN curl https://mise.run | sh
RUN curl -fsSL https://claude.ai/install.sh | bash
RUN /root/.local/bin/mise use -g node@22

# Setup login shell
RUN echo 'export PATH=~/.local/bin:~/.cargo/bin:$PATH' >> ~/.bashrc && \
    echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc && \
    echo '[[ -f ~/.bashrc ]] && source ~/.bashrc' >> ~/.bash_profile

ENTRYPOINT ["/bin/bash"]

Then add a user-level task in ~/.config/mise/config.toml:

[tasks."vibe:image"]
description = "Build vibe coding image"
quiet = true
hide = true
dir = "~/.airlock"
sources = ["~/.airlock/vibe.dockerfile"]
run = "docker build -t vibe:local -f vibe.dockerfile ."

[tasks.vibe]
depends = ["vibe:image"]
tools = { "github:milankinen/airlock" = "latest" }
description = "Start my vibe conding sandbox"
quiet = true
raw = true
dir = "{{ cwd }}"
run = "airlock start --monitor"

Running your setup

Now cd into any project directory and run:

mise vibe