Runtime blocks
Field tables for the go, node, and docker typed blocks.
Three runtimes read a typed block of the same name under a service. Every field is optional unless noted, and whatever a runtime contributes is a default that anything you set explicitly overrides. The shell runtime has no typed block, it just runs the service's commands. See the runtimes guide for how each behaves.
go
- name: api
runtime: go
go:
package: ./cmd/api
args: ["--port", "8080"]
out: ./bin/api
workspace: true| Field | Type | Default | Meaning |
|---|---|---|---|
package | string | (required) | Go package to build, e.g. ./cmd/api. Empty is a hard error. |
args | list | (none) | arguments passed to the built binary on run. |
out | string | <build_dir>/<name> | build output path. build_dir itself is overridable. |
workspace | bool | true when go.work present | watch go.work module roots. |
Build is go build -o <out> <package>, run is <out> <args...> marked as a long-running service. Default watched extensions are go, mod, sum. Set workspace: false to opt out of workspace watching even when a go.work exists.
node
- name: web
runtime: node
node:
script: dev
package_manager: pnpm
install: true| Field | Type | Default | Meaning |
|---|---|---|---|
script | string | dev, else start | package.json script run as <pm> run <script>. |
package_manager | string | detected | npm, pnpm, yarn, bun. Empty means detect, and an unknown value is rejected at load. |
install | bool | true | when on, emits <pm> install as a setup step. |
When script is unset the runtime reads package.json and picks dev if present, else start. Package-manager detection order is pnpm, then bun, then yarn, then npm, falling back to npm when no lockfile is found.
docker
- name: infra
runtime: docker
docker:
file: docker-compose.yml
project: myapp
services: [db, redis]
logs: [db]
wait: true
stop_on_exit: false
log_tail: 500| Field | Type | Default | Meaning |
|---|---|---|---|
file | string | probed | compose file relative to the service dir (or dir_root). |
project | string | basename of resolved dir | compose -p project name. |
services | list | all | restricts which compose services are brought up. |
logs | list | all running | narrows which container logs stream into the UI. |
wait | bool | true | toggles docker compose up --wait. |
stop_on_exit | bool | false | stop blink-started containers on exit. |
log_tail | int | 500 | recent lines each container replays on attach. <=0 means all history. |
When file is unset the runtime probes compose.yaml, compose.yml, docker-compose.yaml, docker-compose.yml in that order and falls back to docker-compose.yml. services controls which compose services start, and logs controls which running containers blink follows. stop_on_exit defaults false so containers persist between runs, and pre-existing containers blink did not start are never touched.