Local-first, lightweight issue tracker. Single Rust binary, SQLite-backed, MCP-native.
git clone https://github.com/VoidNullable/lificTools overview
<p align="center">
<img src="LificHero.png" alt="Lific Issue tracking built for AI-driven development" width="800">
</p>
<p align="center">
<a href="https://github.com/VoidNullable/lific/actions/workflows/ci.yml"><img src="https://github.com/VoidNullable/lific/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
<a href="https://crates.io/crates/lific"><img src="https://img.shields.io/crates/v/lific" alt="crates.io"></a>
<a href="https://github.com/VoidNullable/lific/releases"><img src="https://img.shields.io/github/v/release/VoidNullable/lific" alt="Release"></a>
<a href="LICENSE"><img src="https://img.shields.io/github/license/VoidNullable/lific" alt="License"></a>
<a href="https://discord.gg/uWvaFC4f7D"><img src="https://img.shields.io/discord/1516612377196363889?logo=discord&logoColor=white&label=discord&color=5865F2" alt="Discord"></a>
</p>
<p align="center">
<strong>Issue tracking for the agentic coding era.</strong><br>
One binary. One SQLite database (plus an attachments dir). MCP built in.
</p>
<p align="center">
<a href="https://lific.dev"><strong>lific.dev</strong></a>
·
<a href="https://lific.dev/docs">Docs</a>
·
<a href="https://discord.gg/uWvaFC4f7D">Discord</a>
</p>
---
Your agent can write the code. What it can't do is remember: the plan dies with the context window, the TODO list rots in a markdown file, and the next session starts from zero. Lific is the missing memory: a self-hosted, single-binary issue tracker whose primary user is often an agent rather than a person.
Three numbers instead of adjectives:
- **27 MCP tools in 5,641 tokens.** That's the measured size of the full `tools/list` response at v2.2.1 (o200k tokenizer). Your entire tracker costs about as much context as one long file read.
- **One ~25 MB binary.** Embedded SQLite, embedded web UI, backups built in. The data set is just the database and a content-addressed `attachments/` dir beside it (both covered by the automatic backups). No Docker, no Postgres, no reverse proxy, no daemon farm. Copy it to a server, point your agents at it, done.
- **11 AI clients configured by one command.** `lific connect` writes correct MCP config into OpenCode, Claude Code, Cursor, VS Code, Codex, Zed, and more. No hand-edited JSON.
Identifiers are human-readable everywhere: `APP-42`, never a UUID. They survive being spoken, logged, grepped, and pasted into a prompt.
## 60-second setup
```bash
cargo install lific # or grab a binary from the releases page
lific init # config + database + your API key, printed once -
# then installs a background service and starts it.
# The server is now on :3456 and survives reboot.
lific connect # writes MCP config into your AI clients
```
That's the whole thing. `lific init` sets everything up in your OS's standard locations (config in `~/.config/lific/`, data in `~/.local/share/lific/` on Linux; macOS and Windows equivalents) so it works the same from any directory - use `lific init --here` if you'd rather keep a directory-local instance (`./lific.toml` + `./lific.db`). It registers the server with your OS service manager (a systemd user unit on Linux, a LaunchAgent on macOS), so it isn't a process tied to your terminal - it's still running tomorrow. `lific connect` then detects the AI tools installed on your machine, lets you pick, mints a per-tool API key, and merges correct MCP config into each one without overwriting existing config. Restart your client and the Lific tools are there.
Manage the service anytime with `lific service status | restart | stop | uninstall`. Prefer a foreground process (containers, supervisors, debugging)? `lific init --no-service` skips the service and `lific start` runs the server in your terminal.
The web UI is at `http://localhost:3456`. Sign up there to create your account, then grant it admin rights from the CLI: `lific user promote --username <username>`.
Verify any setup with:
```bash
lific doctor # green/yellow/red checks: config, database, server,
# OAuth discovery, and a real MCP round-trip
```
`doctor` exits nonzero if anything is actually broken, so agents and CI can gate on it.
## What your agent can now do
- **Ask "what can I work on right now?" in one call.** `list_issues(project="APP", workable=true)` returns only issues with every blocker resolved. Dependency-aware triage without a graph query.
- **Keep a plan alive across sessions.** Plans are persistent, nestable step trees. A fresh session calls `get_plan` and resumes exactly where the last one left off. No `MEMORY.md`, no re-priming ritual.
- **Break work down and wire it up.** Create issues, link blockers (`blocks`, `relates_to`, `duplicate`), group them into modules, and mirror plan steps to real issues with two-way done/close sync.
- **Leave a real audit trail.** `get_activity` answers "what changed while I was gone": who changed what, when, and through which tool. Every agent's work is attributed (more below).
- **Write docs where the issues live.** Markdown pages in folders, with comments, labels, lifecycle status, and Mermaid diagrams. Design decisions stay next to the work they justify.
- **Edit without resending.** `edit_issue` / `edit_page` do targeted find-and-replace, so updating one line of a long description doesn't cost the whole document in tokens.
- **Take everything with you.** `export` turns an issue, a page, or a whole project into portable markdown, no lock-in.
## Every tool gets its own identity, and that's the point
`lific connect` mints a **separate bot identity per tool**, owned by your account (`opencode-blake`, `cursor-blake`, ...). When several agents work the same project, provenance is the primitive that keeps you sane:
- **The audit log shows which harness made every change.** "OpenCode closed APP-42", "Cursor edited the design page". All attributed to you, never blurred together.
- **Revoke one tool without touching the others.** Cursor misbehaving? Disconnect just its key and OpenCode keeps working.
- **Scoped authority.** Each bot inherits its owner's project access and nothing more.
This is the recommended way to connect agent harnesses.
## Connecting AI tools
**`lific connect`** is the front door. It supports eleven clients out of the box:
`opencode` · `claude-code` · `claude-desktop` · `cursor` · `vscode` · `codex` · `zed` · `gemini` · `windsurf` · `goose` · `crush`
```bash
lific connect # interactive picker
lific connect --client opencode --client cursor --yes # non-interactive
lific connect --client claude-code --scope project # repo-local .mcp.json
lific connect --client zed --stdio # no server: direct SQLite over stdio
lific connect --dry-run --client vscode # preview without writing
```
Each client gets its native schema (`mcpServers` vs `servers` vs `mcp`, Codex TOML with an env-var token, Goose YAML; the quirks are handled). JSON configs are merged non-destructively; a file `connect` can't parse safely is left untouched and you get the exact snippet to paste instead.
<details>
<summary>OAuth, if you'd rather auth as yourself</summary>
Lific implements the full MCP authorization spec (RFC 9728 protected-resource metadata, dynamic client registration, PKCE), so OAuth-capable clients can connect with **just the URL** and complete auth in the browser:
```bash
lific connect --oauth --client opencode # writes a header-less config, mints nothing
opencode mcp auth lific # browser opens → sign in → approve
# or with any client's native command:
claude mcp add --transport http lific http://localhost:3456/mcp
```
The trade-off: an OAuth token **is you**. Changes made through it are indistinguishable from your own edits in the audit log, with no per-harness attribution. Fine for personally browsing your tracker from an editor; for agents doing real work, prefer the per-tool bot identities above.
**Headless / SSH / agents.** No browser on the box? The device flow has you covered:
```bash
lific login # prints a URL + short code; approve on any device
lific login --non-interactive # agent mode: prints JSON {verification_uri, user_code,
# device_code, next_step} and exits immediately
lific login --complete <code> # finish later, from a script or a second session
```
Tokens are stored in your OS keyring (Secret Service / Keychain / Credential Manager), falling back to a `0600` file with a loud warning when no keyring exists.
</details>
<details>
<summary>Manual configuration (any MCP client)</summary>
**Remote (Streamable HTTP):**
```json
{
"lific": {
"type": "remote",
"url": "http://localhost:3456/mcp",
"headers": { "Authorization": "Bearer your-api-key" }
}
}
```
**Local (stdio, no server):**
```json
{
"lific": {
"type": "local",
"command": ["lific", "--db", "path/to/lific.db", "mcp"]
}
}
```
Create keys anytime with `lific key create --name my-key`.
</details>
<details>
<summary>Web UI setup (if you prefer clicking)</summary>
Go to **Settings > Connected tools** in the web UI. Pick your tool, click Connect, and paste the generated config snippet.
Each connection creates a bot identity tied to your account (the CLI's `connect` does the same). Changes show up attributed to you, tagged with which tool made them.
</details>
## Plans: state that outlives the session
An agent's plan shouldn't die when its context does. A **plan** is an ordered, arbitrarily-nestable tree of steps that persists across sessions and compaction. Start a new session, call `get_plan`, and it's still there, ready to resume.
- **Steps can mirror issues.** Link a step to an issue and the two stay in sync: close the issue and the step checks itself; mark the step done and the issue closes. Reopen the issue and the step reopens, with a note oWhat people ask about lific
What is VoidNullable/lific?
+
VoidNullable/lific is tools for the Claude AI ecosystem. Local-first, lightweight issue tracker. Single Rust binary, SQLite-backed, MCP-native. It has 27 GitHub stars and was last updated today.
How do I install lific?
+
You can install lific by cloning the repository (https://github.com/VoidNullable/lific) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is VoidNullable/lific safe to use?
+
VoidNullable/lific has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains VoidNullable/lific?
+
VoidNullable/lific is maintained by VoidNullable. The last recorded GitHub activity is from today, with 1 open issues.
Are there alternatives to lific?
+
Yes. On ClaudeWave you can browse similar tools at /categories/tools, sorted by popularity or recent activity.
Deploy lific to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/voidnullable-lific)<a href="https://claudewave.com/repo/voidnullable-lific"><img src="https://claudewave.com/api/badge/voidnullable-lific" alt="Featured on ClaudeWave: VoidNullable/lific" width="320" height="64" /></a>More Tools
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
An AI SKILL that provide design intelligence for building professional UI/UX multiple platforms
🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
The fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]
AI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary