io.github.RohitYajee8076/backburner
Put your AI agent's slow work on the back burner. Keep cooking.
Background tasks for AI agents that outlive the conversation β start a long job, close the client, and the result is still waiting when you come back.
Durable & Restart-Proof β¦ Zero Infrastructure β¦ MCP Tasks (2026-07-28) β¦ Windows & Unix
π¦ PyPI β’ ποΈ MCP Registry β’ π Issues β’ π MIT
π’ Updates
v1.0 β implements the official MCP Tasks extension (SEP-2663,
io.modelcontextprotocol/tasks). A Tasks-capable client can turn astart_taskcall into a durable task and drive it withtasks/get,tasks/update, andtasks/cancelβ the standard async-job protocol β while the five plain tools keep working for every other client. Built against the 2026-07-28 spec (mcp2.0).v0.2.1 β output with non-ASCII characters (β, emoji, any non-English text) no longer crashes tasks on Windows.
v0.2.0 β
exit_codeis no longer reported for cancelled/timed-out tasks (it was an artifact of the kill, not a real result); new animated demo below.v0.1.x β first release: 5 tools, task timeouts, command allow/deny policy. Listed on the official MCP Registry as
io.github.RohitYajee8076/backburner.
backburner is an MCP server that gives any AI assistant β Claude, ChatGPT,
Gemini, GitHub Copilot, Cursor, and any other MCP client β the ability to run
long shell commands as background tasks β start a test suite, a build, a
scrape, a batch job β then keep working and check back for the results, instead
of sitting frozen until it finishes.

π₯ Why not just use my client's built-in background mode?
Because that lives inside the conversation β it disappears the moment the session ends. Close the chat, restart the client, reboot the laptop, and any in-session background work (and its output) is gone.
backburner keeps every task and its full output on disk (SQLite +
per-task log files under ~/.backburner/), so your work outlives the session
that started it:
Start now, collect later β even in a different chat. A task you launch today is still listed, with its result, in a brand-new session tomorrow.
Restart-proof. State survives the server, the client, and the machine restarting. Finished tasks keep their output; a task cut off by a crash is honestly marked
interrupted, never silently dropped.No waiting, no blocking. A 10-minute tool call no longer freezes the conversation or times out and loses the work.
See it for yourself β a real two-process proof (no mock-ups):
python docs/demo_restart.pyIt starts a job in one process, exits, then a separate process β which never saw the task id β finds the finished work waiting on disk.
Built on the MCP Tasks pattern, formalized in the 2026-07-28 spec release
(SEP-2663):
backburner speaks it natively (tasks/get / tasks/update / tasks/cancel)
and exposes the same engine as plain tools, so it works with every client
today.
π§° Tools
Tool | What it does |
| Run a shell command in the background, returns a task id immediately |
|
|
| Captured output β works mid-run too, so you can peek at progress |
| Kill the task and its whole process tree |
| Recent tasks, newest first |
β¨ Features
Survives restarts β tasks are tracked in SQLite under
~/.backburner/; output is captured to per-task log files. If the server dies mid-task, orphaned tasks are honestly markedinterrupted, never silently lost.Real cancellation β kills the full process tree (worker processes included), on Windows and Unix.
Peek at live progress β
task_resulton a running task returns the output so far.Timeouts β pass
timeout_secondsand a runaway task is killed and honestly markedtimed_outinstead of hanging forever.Command policy β restrict what the AI may run with environment variables (regexes, comma-separated; deny always wins):
BACKBURNER_ALLOW="^pytest,^npm (test|run build)" # only these may run BACKBURNER_DENY="rm -rf,shutdown,format" # these never runZero infrastructure β stdlib only (SQLite, subprocess, threads). No Redis, no Celery, no Docker.
Tested β a pytest suite covers the full job lifecycle: completion, failure, cancellation, timeouts, crash recovery, and the command policy.
π Install
backburner is a standard stdio MCP server β it works with any MCP-compatible
client, including:
Claude Code Β· Claude Desktop Β· OpenAI (ChatGPT desktop / Agents SDK) Β· Google Gemini (Gemini CLI) Β· GitHub Copilot (VS Code) Β· Cursor Β· Windsurf Β· Cline Β· Zed β and any other client that speaks MCP.
First install the package:
pip install backburner-mcpClaude Code
claude mcp add backburner -- python -m backburner.serverEverything else (Claude Desktop, Cursor, VS Code / Copilot, Windsurf, Gemini CLI, β¦)
Most clients use the same standard config block β add backburner to your
client's MCP config (see your client's docs for where that file lives):
{
"mcpServers": {
"backburner": {
"command": "python",
"args": ["-m", "backburner.server"]
}
}
}π Security note
backburner executes the shell commands the AI sends it, with your user's
permissions. That is its job β but treat it like giving your agent a
terminal. Run it only with clients whose tool-use you review/approve,
prefer permission modes that require confirmation for start_task, and
use BACKBURNER_ALLOW / BACKBURNER_DENY to scope what may run.
πΊοΈ Roadmap
Task timeouts and max-runtime limits
Allowlist/denylist for commands
PyPI release β
pip install backburner-mcpListed on the official MCP Registry
MCP Tasks extension (spec 2026-07-28, SEP-2663) β native
tasks/get/tasks/update/tasks/cancelalongside the plain toolsTask push updates (
notifications/tasks) β live status without pollingLocal web dashboard β watch tasks live in the browser
Structured progress reporting (parse % / step markers from output)
π License
MIT