A minimal, standalone issue tracker for individuals. No git hooks, no complex dependencies, just one JSON file.
Project description
SB Tracker - Simple Beads
A lightweight, standalone task tracker that stores state in a local .sb.json file. Perfect for individuals and agents to maintain context and track long-running or multi-step tasks without external dependencies.
Features
- Zero Dependencies: Pure Python, uses only stdlib (json, os, sys, datetime)
- Standalone: One JSON file stores all state locally
- Hierarchical Tasks: Support for sub-tasks with parent-child relationships
- Priority Levels: Tasks support P0-P3 priority levels
- Task Status Tracking: Open/closed status with timestamps
- Dependencies: Link tasks with blocking dependencies
- Audit Log: Track all changes to each task with timestamps
- JSON Export: Machine-readable output for integration
- Compaction: Archive closed tasks to keep context efficient
Installation
Recommended (pipx)
pipx install sb-tracker
pipx keeps the sb CLI isolated while exposing it on your shell PATH.
Alternative (pip)
pip install sb-tracker
From Source (development)
git clone https://github.com/sirius-cc-wu/sb-tracker.git
cd sb-tracker
pip install -e .
Verify installation:
sb --help
Quick Start
Initialize a new task tracker:
sb init
Add a task:
sb add "My first task"
sb add "High priority task" 0 "This is urgent"
List tasks:
sb list # Show open tasks
sb list --all # Show all tasks
sb list --json # Machine-readable output
Complete a task:
sb done sb-1
Commands
Create and Modify
init: Initialize.sb.jsonin the current git repository rootadd <title> [priority] [description] [parent_id]- Example:
sb add "Setup database" 1 "Configure PostgreSQL" sb-1
- Example:
update <id> [field=value ...]- Fields:
title,desc,p(priority),parent - Example:
sb update sb-1 p=0 desc="New description"
- Fields:
dep <child_id> <parent_id>: Add a blocking dependency- Example:
sb dep sb-2 sb-1(sb-2 blocked by sb-1)
- Example:
List and Search
list [--all] [--json]: Show open (or all) tasks with hierarchyready [--json]: Show tasks with no open blockerssearch <keyword> [--json]: Search titles and descriptions
Reporting and Maintenance
show <id> [--json]: Display task details with audit logpromote <id>: Optional Markdown summary of task and sub-tasksstats: Overview of progress and priority breakdowncompact: Archive closed tasks to save spacedone <id>: Mark task as closedrm <id>: Permanently delete task
Workflow
For Individual Sessions
-
Breakdown: Create tasks with hierarchies for complex work
sb add "Implement feature X" # Creates sb-1 sb add "Write unit tests" 1 "" sb-1 # Creates sb-1.1 sb add "Write integration tests" 1 "" sb-1 # Creates sb-1.2
-
Execute: Focus on high-priority ready tasks
sb ready # Show tasks with no blockers
-
Track Progress: Update as you complete steps
sb done sb-1.1 sb done sb-1.2
-
End session cleanly: Verify final state and hand off
sb compact # optional # If your agent environment has a commit skill, use it here. git add -A git commit -m "[scope]: complete <task-id>" sb list --all
Then provide a short summary of completed work and what remains.
Task ID Format
- Root tasks:
sb-1,sb-2, etc. - Sub-tasks:
sb-1.1,sb-1.2,sb-1.1.1, etc. - Parent relationship: Use parent ID in
addorupdate
Priority Levels
- P0: Critical, blocking everything
- P1: High priority, do soon
- P2: Normal priority (default)
- P3: Low priority, nice to have
Database Format
Tasks are stored in .sb.json (found in git repository root) with this schema:
{
"issues": [
{
"id": "sb-1",
"title": "Task title",
"description": "Optional description",
"priority": 1,
"status": "open",
"depends_on": ["sb-2"],
"parent": "sb-1",
"created_at": "2026-02-04T18:40:10.692Z",
"closed_at": "2026-02-04T19:40:10.692Z",
"events": [
{
"type": "created",
"timestamp": "2026-02-04T18:40:10.692Z",
"title": "Task title"
}
]
}
],
"compaction_log": []
}
Examples
Hierarchical Task Breakdown
$ sb add "Build authentication system"
Created sb-1: Build authentication system (P2)
$ sb add "Design schema" 1 "" sb-1
Created sb-1.1: Design schema (P1)
$ sb add "Implement login endpoint" 1 "" sb-1
Created sb-1.2: Implement login endpoint (P1)
$ sb add "Write tests" 2 "" sb-1
Created sb-1.3: Write tests (P2)
$ sb list
ID P Status Deps Title
sb-1 2 open Build authentication system
sb-1.1 1 open Design schema
sb-1.2 1 open Implement login endpoint
sb-1.3 2 open Write tests
Blocking Dependencies
$ sb add "Deploy to production" 1
Created sb-2: Deploy to production (P1)
$ sb dep sb-2 sb-1
Linked sb-2 -> depends on -> sb-1
$ sb ready
No issues found matching criteria.
$ sb done sb-1.1
Updated sb-1.1 status to closed
$ sb done sb-1.2
Updated sb-1.2 status to closed
$ sb done sb-1.3
Updated sb-1.3 status to closed
$ sb done sb-1
Updated sb-1 status to closed
$ sb ready
ID P Status Deps Title
sb-2 1 open Deploy to production
Task Reporting
Optional when you want a Markdown report for sharing:
$ sb promote sb-1
### [sb-1] Build authentication system
**Status:** closed | **Priority:** P2
#### Sub-tasks
- [x] sb-1.1: Design schema
- [x] sb-1.2: Implement login endpoint
- [x] sb-1.3: Write tests
#### Activity Log
- 2026-02-04: Created
- 2026-02-04: Status: open -> closed
License
MIT License - See LICENSE file for details
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Troubleshooting
sb: command not found
Install with pipx and verify your shell can find sb:
pipx install sb-tracker
sb --help
If you installed with pip, ensure the install location is on your PATH.
.sb.json not found
The tracker looks for .sb.json starting from the current directory and walking up the directory tree until it finds a .git directory (to keep data project-local). If not found, it creates .sb.json in the current working directory.
To initialize:
cd /your/project
sb init
Task not found error
Make sure you're using the correct task ID:
$ sb list --json # See all task IDs
Compaction
Archive old tasks to reduce token context:
sb compact
This moves all closed tasks to a compaction_log and keeps them accessible via list --all or list --json.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sb_tracker-0.1.3.tar.gz.
File metadata
- Download URL: sb_tracker-0.1.3.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2033e563b52e61d08cd60096ae5606f62e2e8c3c586ff79924e40ec40bdf17e3
|
|
| MD5 |
d560b8af4255b0823c9d1009d7fb28fd
|
|
| BLAKE2b-256 |
320fc6123647eb05df5391b2f3c691c52dca306a246b3553e11e35b02423977a
|
Provenance
The following attestation bundles were made for sb_tracker-0.1.3.tar.gz:
Publisher:
publish.yml on sirius-cc-wu/sb-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sb_tracker-0.1.3.tar.gz -
Subject digest:
2033e563b52e61d08cd60096ae5606f62e2e8c3c586ff79924e40ec40bdf17e3 - Sigstore transparency entry: 941219457
- Sigstore integration time:
-
Permalink:
sirius-cc-wu/sb-tracker@93dc3dcb4e466810d1ec51439b5fc281898d7fa4 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/sirius-cc-wu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93dc3dcb4e466810d1ec51439b5fc281898d7fa4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sb_tracker-0.1.3-py3-none-any.whl.
File metadata
- Download URL: sb_tracker-0.1.3-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b703da4e940c5c4c6817ea92f970cb764acda472611c482e1a1ba88574ed624e
|
|
| MD5 |
de81d51ec58dab3e663924ba8a89c81f
|
|
| BLAKE2b-256 |
aec52e0fed3da0a5ce5a6b008db404a97f83d3bcaaf7aa942cfafa01379f32b9
|
Provenance
The following attestation bundles were made for sb_tracker-0.1.3-py3-none-any.whl:
Publisher:
publish.yml on sirius-cc-wu/sb-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sb_tracker-0.1.3-py3-none-any.whl -
Subject digest:
b703da4e940c5c4c6817ea92f970cb764acda472611c482e1a1ba88574ed624e - Sigstore transparency entry: 941219494
- Sigstore integration time:
-
Permalink:
sirius-cc-wu/sb-tracker@93dc3dcb4e466810d1ec51439b5fc281898d7fa4 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/sirius-cc-wu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93dc3dcb4e466810d1ec51439b5fc281898d7fa4 -
Trigger Event:
release
-
Statement type: