cd /news/ai-agents/show-hn-backlog-tasks-and-contexts-m… · home topics ai-agents article
[ARTICLE · art-50122] src=github.com ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

Show HN: Backlog – tasks and contexts manager for AI coding agents

Backlog, a local-first task and context manager for AI coding agents, has been released as an open-source tool that stores tasks, plans, and memory in a single SQLite file shared between humans and AI agents. The tool attributes every write to the actor (human or AI) and enables an agentic loop where fresh subagents can pull tasks, plan, ship, and exit, achieving up to 12× throughput and 10× cost reduction compared to long-running chat threads. Backlog runs as a single binary with no dependencies and integrates with Claude Code, Cursor, Codex, and OpenCode.

read10 min views1 publishedJul 7, 2026
Show HN: Backlog – tasks and contexts manager for AI coding agents
Image: source

A local-first task and context manager for humans and AI. One database your coding agents read and write directly.

Most AI coding agents lose state the moment a chat ends. Their "memory" is a 500k-token thread that costs you a subscription and forgets the project the next morning.

Backlog moves the queue, and everything the agent learns, out of the chat and into a Backlog DB your agents read and write directly. Tasks, plans, docs, and memory live in one SQLite file that your CLI, your web UI, and every agent share. Every write is signed by the actor that made it (human:alice

, ai:claude-code

, ai:semgrep

), so you always know who did what.

The result is the agentic loop: spawn a fresh subagent, let it load the project's context, pull a task, plan, ship, and exit, then do it again. Four parallel sessions, ~12× the throughput of one developer running one agent, ~10× cheaper per task than a long-running thread.

One queue. Many agents. Every write attributed.

Grab a pre-built binary for macOS or Linux (arm64 + amd64):

OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
curl -L https://github.com/mazen160/backlog/releases/latest/download/backlog_${OS}_${ARCH}.tar.gz | tar xz
sudo mv backlog /usr/local/bin/

Or install from source:

go install github.com/mazen160/backlog/cmd/backlog@latest

It's one binary with no dependencies and no runtime to install.

Everything runs from your shell. backlog init creates the Backlog DB. Every command attributes the write to the actor who made it.

backlog web

serves a clean, inline-editable dashboard from the same Backlog DB. Tasks created from a CLI or an AI agent show up here instantly with full attribution.

Wire Backlog into Claude Code, Cursor, Codex, or OpenCode. Your agent's writes land in the same database your shell reads from, fully attributed to the AI that made them.

A loop is one unit of work: pick → plan → ship → review → attribute. Backlog stores the queue, attributes every step, and keeps multiple agent sessions from stepping on each other.

Each task spawns a fresh subagent with only the context it needs. The average session fits in under 50k tokens instead of the 500k a long-running thread bloats into. Same quality, dramatically cheaper.

backlog init

backlog project add "My App" --alias app

backlog task add -p app -t "Fix login timeout" --type bug --priority P2
backlog task add -p app -t "Add rate limiting" --type feature --priority P3

backlog task list

backlog task move TASK-1 --status doing

backlog plan add --task TASK-1 --title "Fix plan" \
  --content "1. Increase timeout\n2. Add test"

backlog task move TASK-1 --status done

That's the whole workflow, and it runs entirely on your machine. There's no account to create and no service to host or pay for.

Once the skills are installed (backlog install-skills

), an agent does the same from a prompt. In Claude Code:

> show me the open tasks in app and start the top one

⏺ I'll check the open tasks and start the top one.

⏺ Bash(backlog task list -p app --status todo)
  ⎿  TASK-1  Fix login timeout   bug   P2   todo
     TASK-2  Add rate limiting   feat  P3   todo

⏺ Bash(backlog task move TASK-1 --status doing --as ai:claude-code)
  ⎿  ✓ TASK-1 → doing

⏺ Bash(backlog comment add --task TASK-1 "Picking this up. Reproducing the timeout first." --as ai:claude-code)
  ⎿  ✓ comment added to TASK-1

⏺ Started TASK-1 (Fix login timeout, P2). Reproducing the timeout now.

For step-by-step setup, see Getting Started.

backlog install-skills

drops a set of ready-made skills into Claude Code, Cursor, Codex, and OpenCode. From there your agent drives Backlog through the CLI directly. No server to run, no MCP to configure.

backlog install-skills

The skills it installs:

Skill What it does
backlog
The core loop: load context, pick a task, plan, ship, and attribute every write.
/backlog-memory
Load a project's tasks, plans, docs, and memory into the session (learn ), or persist a fresh snapshot when the work is done (store ).
/backlog-enhance-tasks
Flesh out a thin ticket's title and description, and draft a plan.
/backlog-loop
Pull the top task and iterate on it until a reviewer sub-agent agrees it's done.
/backlog-goal
Take a whole goal, break it into tickets, and work the board end to end.

Prefer tool calls? Backlog also speaks MCP. See MCP server.

A quick glossary of the vocabulary used throughout Backlog. Full detail in Core Concepts.

Term What it is
Workspace
A directory holding a backlog.db (and a config.toml ). Every project, task, plan, and comment lives in that one SQLite file. Created by backlog init .
Profile
A named pointer to a workspace, registered in ~/.config/backlog/config.toml , so you can switch workspaces without typing paths.
Project
A named group of tasks inside a workspace, identified by a short alias (e.g. api ). The alias is what you pass to -p / --project .
Task
The unit of work. Has a type, status, priority, and actor; addressed as TASK-N .
Plan
A versioned markdown document attached to a task. Every edit creates a new immutable version; the full history stays readable.
Comment
An append-only, actor-attributed note on a task.
Label
A per-project tag for filtering tasks.
Doc
A versioned markdown document attached to a project (not a task): runbooks, ADRs, design notes.
Memory
A free-form, taggable, mutable note for cross-session agent context.
Actor
The human:name or ai:name attributed to every write.
Activity
An append-only log of every write across the workspace.

Local-first. The Backlog DB sits next to your code. Commits with your repo, or doesn't (your call).Single binary. A ~17 MB static binary with nothing else to install or keep running.JIRA-style refs. Tasks areTASK-1

,TASK-2

, … No UUIDs in your terminal.Versioned plans. Every plan edit creates an immutable version. Full history is always readable.Actor attribution. Every write is signedhuman:name

orai:name

. Filter, audit, blame.Persistent project context. Memory, docs, and plans live in the DB, so a fresh agent session loads the full picture instead of re-reading the codebase.Agent skills.backlog install-skills

drops ready-made skills into Claude Code, Cursor, Codex, and OpenCode; your agent drives the queue and its own memory with no extra wiring.MCP server. Optionally plug in over MCP, for agents that prefer tool calls.Full-text search.backlog task list --search "injection*"

runs in milliseconds.Workflow health reports.backlog activity analyze

andbacklog doctor project

surface cycle time, stale work, and weakly-closed tasks across parallel agent sessions.Bulk findings import. Structured JSON intake for security scanners and AI agents.Web UI.backlog web

serves a clean dashboard from the same Backlog DB.Export anywhere. JSON, CSV, or Markdown.HTTP API. Embedded server for scripts and integrations.Private by default. Everything stays on your machine, and Backlog collects nothing about you.

Command Description
backlog init
Create a Backlog workspace
backlog project add/list/show/update/archive
Manage projects
backlog task add/list/show/update/move/archive
Manage tasks
backlog plan add/update/show/history
Versioned plans on tasks
backlog comment add/list
Comments on tasks
backlog label create/attach/detach
Per-project labels
backlog memory add/list/append
Cross-session project memory
backlog doc add/list/show/update/history
Versioned project docs
backlog attachment add/list/fetch/delete
Files attached to tasks or docs
backlog activity / activity analyze
Audit trail and project workflow-health report
backlog doctor project
Lint a project for stale, orphaned, and weakly-closed work
backlog import-findings <file.json>
Bulk import from scanners/agents
backlog import <other.db>
Merge another workspace
`backlog export --format json csv
Export tasks
backlog sync
Reconcile backlog.json with DB
backlog mcp serve
Start MCP stdio server (optional)
backlog install-skills
Install agent skills into Claude Code, Cursor, Codex, OpenCode
backlog web
Serve the web UI
`backlog doctor check backup`
Health check and backup
backlog schema
Print JSON Schema for all payload types
backlog profile add/list/set-default
Named workspace shortcuts

Full reference: CLI Reference.

Every command accepts --as kind:name

. Without it, the actor defaults to human:$USER

.

backlog task add -p app -t "Investigate memory leak" --as human:alice

backlog plan add --task TASK-1 --title "Memory profiling plan" \
  --content "Run pprof on /api/v2/search endpoint" \
  --as ai:claude-code

backlog task list --actor-kind ai
backlog task list --actor-name alice

Every row in the Backlog DB carries the actor that wrote it. Audit trails are free.

Skills are the simplest way to connect an agent. If you'd rather use MCP tool calls, Backlog also runs as an MCP server. Connect any MCP-compatible AI assistant directly to your backlog:

backlog mcp serve --as ai:claude-code --db /path/to/backlog.db

Claude Code (~/.claude.json

):

{
  "mcpServers": {
    "backlog": {
      "command": "backlog",
      "args": ["mcp", "serve", "--as", "ai:claude-code"],
      "env": { "BACKLOG_DB": "/path/to/backlog.db" }
    }
  }
}

Setup for Cursor, Codex, and OpenCode: MCP guide.

Security scanners and AI agents can write a structured JSON file and bulk-import:

cat > findings.json << 'EOF'
{
  "version": 1,
  "project": "app",
  "items": [
    {
      "title": "SQL injection in /search",
      "type": "vulnerability",
      "priority": "P1",
      "source": "semgrep",
      "plans": [{ "title": "Fix", "body": "Use parameterized queries." }]
    }
  ]
}
EOF

backlog import-findings findings.json --as ai:semgrep

Every finding becomes a task. Every task is attributed to the scanner that found it.

When several agents are closing tasks against the same queue, an empty backlog doesn't mean the work was done well. Two read-only reports tell you whether it actually was:

backlog activity analyze --project app --since 7d

Cycle time by task type, status-transition latency (todo→doing, doing→done), WIP by actor, reopened work, bug follow-ups, label churn, and the human-vs-AI close ratio. One report, no dashboard required. Add --json

to pipe it into your own.

backlog doctor project --project app

Flags stale doing

tasks, tasks created but never started, tasks closed with no plan or completion evidence, and final-audit tasks marked done while earlier work is still open. Every issue carries a severity, a code, and the evidence behind it, so the next agent (or you) can fix it instead of rediscovering it.

Page Description

Core ConceptsCLI ReferenceMCPSkillsHTTP APIbacklog web

Working Across Sessions

git clone https://github.com/mazen160/backlog
cd backlog
make build      # build binary
make test       # run all tests
make fmt        # gofmt
make vet        # go vet
make cover      # test + coverage report

See CONTRIBUTING.md for the full guide.

If Backlog saves you a context window, please star the repo. It's the only signal that tells me to keep building it in the open.

Share what you build:

The Backlog DB is an embedded SQLite store with WAL mode, full-text search (FTS5), and atomic backups. Backlog itself is written in Go and ships as a single static binary.

The project is currently licensed under MIT License.

Mazin Ahmed

── more in #ai-agents 4 stories · sorted by recency
── more on @backlog 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-backlog-task…] indexed:0 read:10min 2026-07-07 ·