recipes: map plus an optional default:. Registries
resolve bundled → ~/.dabs/recipes.yaml (global) → ./dabs.yaml
(project), later winning by name.
Field notes
- image — a bare name reuses
~/.dabs/images/<name>(built from a bundled image recipe on first use). An inline{dockerfile, context}builds withdabs build; the image is named after the recipe, so two recipes sharing one Dockerfile still build two tags. - command — must not bake in agent instructions; recipes provision, callers prompt.
- sources — exactly one origin kind per entry (
mount/mkmount/copy/worktree). Space variables$NODE_VOLUME|HELD|TMPand$PARENT_VOLUME|HELD|TMPsubstitute in source paths only. ($NODE_EPHEMERAL/$PARENT_EPHEMERALare permanent aliases for the held variants.) Mounts land parent-before-child regardless of declaration order. - target —
""(local) or a server fromdabs servers. The reservedINTERNAL-docker-privileged-for-nested-sandboxingtarget exists for boxes that must boot nested sandboxes. - boxless recipes — a recipe with no
image:provisions its places (a worktree, a copied dir) and stops;wtandscratchare the bundled examples.