Repository navigation
Releases: bethropolis/bgrun
Release list
v0.7.0
0.7.0 - 2026-10-13
Highlights. expect used to time out on every live prompt: REPL prompts never reach the log file until later output arrives, so >>> always waited the full 10s. It now matches unflushed output instantly (0.6s measured) and reports it with "line_number": null. The OpenCode plugin is new: 16 native tools plus ready/exit notifications back into the originating session, so agents fire-and-continue instead of blocking in wait.
Added
- Add OpenCode plugin (
plugins/opencode, install withopencode plugin add 'github:bethropolis/bgrun#main::path:plugins/opencode'): 16 native tools,bgrunskill,/bg-runand/bg-tailcommands, ready/exit session notifications, long-runner prompt steering. - Add
screen --strip-ansi(also in MCPscreenand pluginbgrun_screen). - Add
bgrun watch(plugin-only): opt an already-running job into completion notifications. - Add
pty_colsandpty_rowsto the pluginruntool.
Changed
tail --digestwithoutlinesreturns only the summary. It previously attached 50 log lines, which made the token-saving call the most expensive one. Pass--lines Nfor digest plus lines.listreturns trimmed records (id, name, state, pid, short command, workspace). Passverbose: truefor full records.- MCP tool output is compact JSON with a 64KB ceiling and a 1000-line cap per log call. Oversized output names how to re-query narrower.
run(MCP and plugin) acceptswaitandwait_timeout_msto fold run plus wait into one call.expectmatches mid-line prompts immediately. Such matches return"line_number": null.- Spawned jobs no longer inherit
OPENCODE_SESSION_ID. A nestedopencode miniused to resolve the parent session's project and work in the wrong directory. - Old
screenclients keep working against the new daemon (missingstrip_ansidefaults to false).
Fixed
- Fix
expectnever matching live prompts.
Known issues
- Cursor-addressed fullscreen apps read only partly: static views decode with
--strip-ansi, redraws garble, and\r-drawn apps needexpectas a frame reader. Line-oriented programs work fully.
Upgrading
- No config changes. Restart the daemon (
pkill -x bgrun-daemon; it autostarts) to pick up the daemon-side fixes.
For plugin authors
- MCP
screeninput gainsstrip_ansi.expectmatches can carry"line_number": null; handle the null before treating it as a line number.
v0.6.0
0.6.0 - 2026-10-05
Highlights
tail --follow streams again. v0.5.0 shipped a regression: with no --filter-regex, the filter compiled to a match-nothing pattern, so --follow printed nothing at all. If you adopted --follow on 0.5.0 it has been silently doing nothing. An invalid --filter-regex now reports the error instead of streaming your whole unfiltered log.
Live lines also carry real line numbers now. They used to print as 0 |, because the writer broadcast each line before it had a position. tail --follow on a piped or PTY job now numbers continuously, and restarts at 1 after a log rotation.
expect answers questions about the past. It scanned from the end of the log, so it only ever matched output written after the call. Asking whether an error had already happened always timed out. It now searches the whole log first, then keeps watching for new lines.
bgrun expect api "error" --timeout 5s # finds an error already loggedMCP server. bgrun mcp speaks JSON-RPC 2.0 over stdio and exposes 15 commands as tools for agent clients.
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | bgrun mcpAdded
- Add
bgrun mcp, a stateless stdio MCP server exposing 15 daemon commands as tools
Fixed
- Fix
tail --followprinting nothing when no--filter-regexwas given (regression in 0.5.0) - Fix
tail --follow --filter-regex <invalid>silently streaming the whole unfiltered log - Fix
tail --followprinting0as the line number for live lines - Fix
expecttiming out on a pattern that was already in the log - Fix
diffline numbers collapsing after a log rotation
Changed
- Add
last_diff_linestobgrun status --jsonoutput
MCP requests are handled one at a time, so a long wait blocks later calls. Poll diff when you need to interleave.
Full Changelog: v0.5.0...v0.6.0
v0.5.0
bgrun v0.5.0
Background process runner for development workflows.
Installation
Arch Linux:
yay -S bgrun-binDebian / Ubuntu:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.5.0/bgrun_0.5.0_x86_64.deb
sudo dpkg -i bgrun_0.5.0_x86_64.debFedora / RHEL:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.5.0/bgrun_0.5.0_x86_64.rpm
sudo rpm -i bgrun_0.5.0_x86_64.rpmHomebrew:
brew install bethropolis/tap/bgrunQuick install:
curl -fsSL https://bethropolis.github.io/bgrun/install.sh | shTarball:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.5.0/bgrun_0.5.0_linux_x86_64.tar.gz
tar -xzf bgrun_0.5.0_linux_x86_64.tar.gz
sudo mv bgrun bgrun-daemon /usr/local/bin/Changelog
New Features
- 8a90689: feat: agent-friendly run — --env/--cwd/--replace/--wait, short flags, toml regex parity (@bethropolis)
- 989bd4d: feat: first-class stop/restart ops with graceful termination (@bethropolis)
- 25b899a: feat: log rotation config (size/keep) and export command spanning rotations (@bethropolis)
- c8e0222: feat: namespace sandbox isolation via --sandbox (loopback-only net + private IPC) (@bethropolis)
- 2ba8f72: feat: per-job resource limits via cgroup v2 (memory-max, cpu-quota, pids-max) ( <>)
- 20f08fc: feat: redesign interactive mode with dashboard, job submenu, and start-job flow (@bethropolis)
- 5d9fd6e: feat: restart policies (never/on-crash/on-failure/always) with max-retries (@bethropolis)
Bug Fixes
- dad8cdc: fix: add retry logic to install script for timing issues (@bethropolis)
- 229619f: fix: atomic owner-only state writes, corrupt-record tolerance, pid recycle verification, export symlink guard, size parse for short inputs, utf8 lossy export (@bethropolis)
- 43bab36: fix: config overlay for named runs, state colors, tail filtering and line numbers, follow-mode duplication, ndjson readiness matching, starting-state transitions (@bethropolis)
- 1d242ae: fix: honor restart policy for adopted jobs, kill dual-spawn duplicates, diff cursor bytes, pid cleanup (@bethropolis)
- 57611e1: fix: idle timeout zero disables auto-shutdown, sigwinch resize handling, name index preservation on remove, kill force flag (@bethropolis)
- 075c6a3: fix: ignore SIGHUP in daemon and stabilize list ordering by start time (@bethropolis)
- 788fd89: fix: install.sh works with any toolchain >= MSRV, not just pinned patch (@bethropolis)
- 3bafeac: fix: single lifecycle-notify static and private socket directory permissions (@bethropolis)
- b4b2596: fix: use printf for ANSI escapes in install.sh (literal \033 not rendered) (@bethropolis)
Other Changes
- 4d69bd3: style: apply clippy pedantic lints and allowlist structural exceptions (@bethropolis)
- 41f1d41: style: polish install.sh with banner, colors, and progress steps (@bethropolis)
Full Changelog: v0.4.0...v0.5.0
v0.4.0
bgrun v0.4.0
Background process runner for development workflows.
Installation
Arch Linux:
yay -S bgrun-binDebian / Ubuntu:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.4.0/bgrun_0.4.0_x86_64.deb
sudo dpkg -i bgrun_0.4.0_x86_64.debFedora / RHEL:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.4.0/bgrun_0.4.0_x86_64.rpm
sudo rpm -i bgrun_0.4.0_x86_64.rpmHomebrew:
brew install bethropolis/tap/bgrunQuick install:
curl -fsSL https://bethropolis.github.io/bgrun/install.sh | shTarball:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.4.0/bgrun_0.4.0_linux_x86_64.tar.gz
tar -xzf bgrun_0.4.0_linux_x86_64.tar.gz
sudo mv bgrun bgrun-daemon /usr/local/bin/Changelog
New Features
- 5d1720c: feat: add screen command, send --enter, tail --digest --lines, fix TOCTOU race (@bethropolis)
- 762d823: feat: add skill install presets (opencode/claude/codex/all) with --project flag, update SKILL.md (@bethropolis)
Bug Fixes
- c749bd4: fix: suppress clippy unsafe_code warnings on documented unsafe blocks and add missing Debug derives (@bethropolis)
Other Changes
- 392b0ac: v0.4.0 (@bethropolis)
Full Changelog: v0.3.0...v0.4.0
v0.3.0
bgrun v0.3.0
Background process runner for development workflows.
Installation
Arch Linux:
yay -S bgrun-binDebian / Ubuntu:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.3.0/bgrun_0.3.0_x86_64.deb
sudo dpkg -i bgrun_0.3.0_x86_64.debFedora / RHEL:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.3.0/bgrun_0.3.0_x86_64.rpm
sudo rpm -i bgrun_0.3.0_x86_64.rpmHomebrew:
brew install bethropolis/tap/bgrunQuick install:
curl -fsSL https://bethropolis.github.io/bgrun/install.sh | shTarball:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.3.0/bgrun_0.3.0_linux_x86_64.tar.gz
tar -xzf bgrun_0.3.0_linux_x86_64.tar.gz
sudo mv bgrun bgrun-daemon /usr/local/bin/Changelog
Other Changes
- df9cdc8: v0.3.0 (@bethropolis)
Full Changelog: v0.2.2...v0.3.0
v0.2.2
bgrun v0.2.2
Background process runner for development workflows.
Installation
Arch Linux:
yay -S bgrun-binDebian / Ubuntu:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.2.2/bgrun_0.2.2_x86_64.deb
sudo dpkg -i bgrun_0.2.2_x86_64.debFedora / RHEL:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.2.2/bgrun_0.2.2_x86_64.rpm
sudo rpm -i bgrun_0.2.2_x86_64.rpmHomebrew:
brew install bethropolis/tap/bgrunQuick install:
curl -fsSL https://bethropolis.github.io/bgrun/install.sh | shTarball:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.2.2/bgrun_0.2.2_linux_x86_64.tar.gz
tar -xzf bgrun_0.2.2_linux_x86_64.tar.gz
sudo mv bgrun bgrun-daemon /usr/local/bin/Changelog
Other Changes
- 01cb239: Add terminal handshake noise scrubber for log lines (@bethropolis)
- ff98b73: Fix PTY size desync on attach and propagate terminal env vars to spawned processes (@bethropolis)
- 590e201: Prettier terminal output with color-coded states, no color when piped (@bethropolis)
- 32704d3: Replace ASCII crate layout with SVG architecture diagram (@bethropolis)
- 68c32f8: Strip docs/ prefix from links when copying README to book index (@bethropolis)
- ca3e447: UX improvements: unified duration parser, better errors, confirmations, Ctrl+C handling, JSON for attach (@bethropolis)
- c8c934d: bgrun shows help by default, -i for interactive, add --version (@bethropolis)
- 794f2a1: v0.2.2 (@bethropolis)
Full Changelog: v0.2.1...v0.2.2
v0.2.1
bgrun v0.2.1
Background process runner for development workflows.
Installation
Arch Linux:
yay -S bgrun-binDebian / Ubuntu:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.2.1/bgrun_0.2.1_x86_64.deb
sudo dpkg -i bgrun_0.2.1_x86_64.debFedora / RHEL:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.2.1/bgrun_0.2.1_x86_64.rpm
sudo rpm -i bgrun_0.2.1_x86_64.rpmHomebrew:
brew install bethropolis/tap/bgrunQuick install:
curl -fsSL https://bethropolis.github.io/bgrun/install.sh | shTarball:
curl -LO https://github.com/bethropolis/bgrun/releases/download/v0.2.1/bgrun_0.2.1_linux_x86_64.tar.gz
tar -xzf bgrun_0.2.1_linux_x86_64.tar.gz
sudo mv bgrun bgrun-daemon /usr/local/bin/Changelog
New Features
- 4d9a9f7: feat: add packaging/completions with dynamic fish script, install completions via install.sh (@bethropolis)
- bd6ba44: feat: config expansion, signal handling, completions, man pages, audit log, --json for clean (@bethropolis)
Other Changes
- e916662: Add AUR publishing to goreleaser (@bethropolis)
- 3e3fe5e: Add AUR_KEY to goreleaser config and release workflow (@bethropolis)
- bf2cf7d: Add deb/rpm packaging via nfpms to goreleaser config (@bethropolis)
- 995957f: Add docs/man/bgrun-daemon.1 to release archive (@bethropolis)
- f7e5706: Add mdbook GitHub Pages site with CI deployment (@bethropolis)
- bf28b57: Add online install script served via GitHub Pages (@bethropolis)
- fe11326: Add release header with install instructions and structured changelog (@bethropolis)
- 163cc1c: Fix release workflow: only trigger on tags, not branch pushes (@bethropolis)
- f7cd5a6: Implement Continuous Active Health Probing (@bethropolis)
- 938bec4: Implement Phase A-C: dynamic port allocation, server-side log filtering, reactive log stream (@bethropolis)
- 36284d6: Remove embedded skill guide from docs site (@bethropolis)
- 5087875: Switch docs deployment to official actions/deploy-pages (@bethropolis)
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Highlights
- PTY attach — attach to interactive PTY sessions via
bgrun attach - Expect — wait for a pattern in log output via
bgrun expect - Memory RSS guardrails — auto-kill jobs exceeding memory limits
- Interactive menu — tab-completion, prefix IDs, schema generation
- Reactive daemon shutdown — 0% idle polling, event-driven auto-shutdown
- Log stream filtering & follow mode —
bgrun tail --follow, ANSI stripping - Exponential backoff restart — configurable restart strategy
--jsonflag &cleancommand — machine-readable output, clean terminated jobs- Zero-overhead PTY wait — replaced 100ms polling with blocking OS waitpid
- Memory monitor guard — immediate break on dead jobs, no stale-PID spin
v0.1.1
Changelog
- 2146b3f feat: polishing and fixing bugs