AI News HubLIVE
In-site rewrite6 min read

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

Backlog is a task and context manager for AI coding agents, using a local SQLite database to store tasks, plans, docs, and memory, enabling multi-agent parallelism, attribution, and auditing. It features CLI, web UI, MCP server, and skills for Claude Code, Cursor, Codex, and OpenCode, implementing the agentic loop: spawn subagents, load context, execute tasks, and exit.

SourceHacker News AIAuthor: mazen160

Notifications You must be signed in to change notification settings

Fork 0

Star 4

BranchesTags

Open more actions menu

Folders and files

NameName

Last commit message

Last commit date

Latest commit

History

56 Commits

56 Commits

.github

.github

assets

assets

cmd/backlog

cmd/backlog

docs/wiki

docs/wiki

e2e

e2e

internal

internal

skills

skills

tests

tests

website

website

.gitignore

.gitignore

.golangci.yml

.golangci.yml

.goreleaser.yaml

.goreleaser.yaml

CHANGELOG.md

CHANGELOG.md

CONTRIBUTING.md

CONTRIBUTING.md

LICENSE

LICENSE

Makefile

Makefile

README.md

README.md

RELEASE_NOTES.md

RELEASE_NOTES.md

go.mod

go.mod

go.sum

go.sum

Repository files navigation

Why Backlog

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.

Install

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.

See it

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.

The agentic loop

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.

Quickstart

1. Create a workspace in your project directory

backlog init

2. Add a project

backlog project add "My App" --alias app

3. Create some tasks

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

4. See what's open

backlog task list

5. Start working on TASK-1

backlog task move TASK-1 --status doing

6. Attach a versioned plan

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

7. Done

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.

Connect your coding agent

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.

Concepts

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.

Features

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 are TASK-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 signed human:name or ai: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 and backlog 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.

CLI reference

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 Bulk import from scanners/agents

backlog import Merge another workspace

backlog export --format json|csv|md 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.

Actor attribution

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.

MCP server

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.

Findings import

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.

Workflow health

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:

How is this project trending over the last week?

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.

What did the agents close badly?

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.

Documentation

Page Description

Getting Started Install, init, first task, plans, agent skills

Core Concepts Workspaces, projects, tasks, plans, actors, profiles

CLI Reference Every command and flag with examples

MCP Wire into Claude Code, Cursor, Codex, OpenCode

Skills The five embedded agentic-loop

[truncated for AI cost control]