@voiden/runner

Your .void Files, Headless

Design requests in the Voiden desktop app. Run them anywhere: CI, cron, a script, with the same files, no GUI required.

$ voiden-runner run auth.void
 POST /api/login 200 · 214ms
exit code 0

npm install -g @voiden/runner

What It Does

Everything you built in the desktop app, executable outside of it.

Run Anywhere

Terminal, Docker, CI runners, cron jobs: anywhere Node.js 18+ is available. No GUI, no browser, no desktop app required.

Machine-Readable Output

Human-readable by default. Switch to --json for a versioned, stable schema, export --csv for spreadsheets, or --mail an HTML report.

Request Chaining

Persistent runtime variables between requests, just like the desktop app. Capture a value from one response, use it in the next via {{process.KEY}}.

Plugin-Powered

Core plugins run headlessly by default. Community plugins that ship a runner bundle work the exact same way: install with one command.

Ship It to CI

Deterministic, versioned exit codes mean your pipeline can tell “the API broke” from “the pipeline is misconfigured” without parsing terminal output.

  • 0All requests passed
  • 1One or more requests failed: your API broke
  • 2The run couldn't execute: your pipeline is misconfigured
.github/workflows/api-tests.yml
- name: Run API tests
  run: |
    voiden-runner run ./api-tests \
      --fail-on-error \
      --env .env.ci \
      --csv report.csv

Core and Community Plugins, Both Headless

Core plugins run headlessly by default. Any community plugin that ships a runner bundle installs and runs the exact same way: voiden-runner plugin install <id>, no special-casing.

Browse the plugin registry

Automate Your API Tests

Install the runner, point it at a .void file, and wire it into whatever runs your pipeline.