DocsOverview

Overview

Boot your whole dev stack with one command, with live reload and multiplexed logs.

blink boots your dev stack. Point it at a repo (or a few), run blink, and your shell scripts, Go binaries, Node apps, and Docker Compose stacks come up together with multiplexed logs, per-service tabs, and port reclaiming. It restarts a service when its files change, keeps everything alive, and writes per-service log files the whole time.

It detects what a project runs, so the common case needs zero config, and it stays fully offline with no network calls at build or run time.

Install

# go
go install github.com/toaweme/blink/cmd/blink@latest

# homebrew (macos)
brew install toaweme/tap/blink

# scoop (windows)
scoop bucket add toaweme https://github.com/toaweme/scoop-bucket
scoop install toaweme/blink

Every release also lists a prebuilt archive for each OS and arch on the releases page.

Boot the stack

Run blink in a project. With no blink.yml, it scans the directory, shows a checkbox of the services it detected, and runs your picks ephemerally. Nothing is written.

blink            # same as `blink run`

Once you want a committed setup, scan the project and write a config, then supervise it with live reload.

blink init       # interactive picker, writes blink.yml
blink run        # supervise everything in blink.yml

run is the default command, so blink and blink run do the same thing.

A minimal blink.yml lists the services to supervise. Each service picks a runtime that owns its lifecycle.

services:
  - name: db
    runtime: docker        # drives `docker compose`, streams every container's logs

  - name: api
    runtime: go            # builds and runs a Go package, auto-watches go.work roots
    go:
      package: ./cmd/api
    ports: [8080]          # reclaimed before start
    reload:
      reload: true         # restart on file change
      reload_on_service: [db]   # start after db, restart whenever db restarts

  - name: web
    runtime: node          # detects the package manager, runs `<pm> run dev`
    dir: ../ui             # services can live in sibling repos
    node:
      script: dev

Note

blink reads blink.yml, blink.yaml, blink.toml, or blink.json, discovered by walking up from the current directory. A .env in the project root is auto-loaded at startup, and shell-set variables still win over it.

Where to go next

Start with the guides to learn how blink boots and supervises a stack, then reach for the reference when you need an exact command flag, config field, or key.