lissue
lissue (short for Local Issue) is a powerful, Git-friendly local TODO CLI designed for developers and AI coding agents. It manages your project tasks using a hybrid storage of SQLite (for speed) and JSON (for Git-based sharing).

Why lissue?
The name lissue comes from "Local Issue". It aims to bring the powerful issue-tracking experience of GitHub/GitLab directly to your local terminal, enabling seamless collaboration between humans and AI agents through Git.
Key Features
- Hybrid Storage: Fast local operations with SQLite + Git-syncable JSON storage.
- Git-Optimized: "1 Task per File" architecture prevents merge conflicts.
- AI-Ready: Specialized commands for AI agents, including context dumping and auto-locking.
- Hierarchical Tasks: Support for parent-child relationships and tree view display.
- Secure: Built-in protection against path traversal and SQL injection.
- Flexible: Editor integration, file movement tracking, and extensive filtering.
Installation
From crates.io (Recommended)
From Source
# Clone the repository
# Install locally
Quick Start
- Initialize the repository in your project root:
- Add a task:
# Add a subtask to ID 1 with related files # Or just 'lissue add' to open your $EDITOR - List tasks:
- Claim a task (for AI agents or team members):
- Sync with Git (Apply merged JSON files to your local database):
Command Reference
| Command | Options | Description |
|---|---|---|
lissue init |
Initialize .lissue directory and database. |
|
lissue add [TITLE] |
-m, -p, -f |
Add a new task. -p: parent ID, -f: linked file. |
lissue list |
-f, -t, -s, -u |
List tasks. -t: tree, -s: status, -u: unassigned. |
lissue next |
Get the next available task (Open & Unassigned). | |
lissue claim <ID> |
--by |
Mark task as In Progress and assign to yourself/agent. |
lissue close <ID> |
Close a task. | |
lissue open <ID> |
Reopen a closed task. | |
lissue link <ID> |
--to |
Create a parent-child relationship. |
lissue context <ID> |
Dump task details and linked file contents for AI. | |
lissue mv <OLD> <NEW> |
Move a file and update all linked tasks. | |
lissue rm <ID> |
Permanently remove a task. | |
lissue clear |
Permanently remove all closed tasks. |
Help and Discoverability
You can explore all available commands and options using:
lissue help: List all available subcommands.lissue <COMMAND> --help: Show detailed help for a specific subcommand (e.g.,lissue add --help).
Configuration
Settings are stored in .lissue/config.yaml:
output.default_format:humanorjsonoutput.auto_sync: Enable/disable implicit sync duringlistornext.integration.git_mv_hook: Usegit mvduringlissue mv.context.strategy:paths_onlyorraw_content.
License
MIT OR Apache-2.0