headless.ts runs Vulgr Agent non-interactively. No TTY is needed.
Usage
Pass the task with -p:
vulgr -p "fix the failing parser test"
or pass the task on stdin instead.
Behaviour
With nobody at the keyboard:
- Every permission is approved automatically.
- Every question (
ask_user) is answered with “there is no human, proceed on your own.”
JSONL output
Add --json to stream the engine’s protocol events as JSON Lines — one event per line — instead of human-readable output:
vulgr -p "update the changelog" --json > run.jsonl
These are the same events the TUI consumes, so anything you see interactively can be reconstructed from the log.
Exit codes
The turn’s final TurnStatus is mapped to the process exit code, so scripts and CI can gate on the result directly.
Benchmarks
Headless mode is how Vulgr Agent is measured: the target is Terminal-Bench 2.0 on Harbor, compared against other agent harnesses.