DocsBlinkReferenceRuntime blocks

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
FieldTypeDefaultMeaning
packagestring(required)Go package to build, e.g. ./cmd/api. Empty is a hard error.
argslist(none)arguments passed to the built binary on run.
outstring<build_dir>/<name>build output path. build_dir itself is overridable.
workspacebooltrue when go.work presentwatch 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
FieldTypeDefaultMeaning
scriptstringdev, else startpackage.json script run as <pm> run <script>.
package_managerstringdetectednpm, pnpm, yarn, bun. Empty means detect, and an unknown value is rejected at load.
installbooltruewhen 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
FieldTypeDefaultMeaning
filestringprobedcompose file relative to the service dir (or dir_root).
projectstringbasename of resolved dircompose -p project name.
serviceslistallrestricts which compose services are brought up.
logslistall runningnarrows which container logs stream into the UI.
waitbooltruetoggles docker compose up --wait.
stop_on_exitboolfalsestop blink-started containers on exit.
log_tailint500recent 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.