Skip to content
VoidNullablePublic

About

Local-first, lightweight issue tracker. Single Rust binary, SQLite-backed, MCP-native.

Resources

Contributing

Security policy

Stars

73 stars

Watchers

1 watching

Forks

Latest commit

 

History

1,201 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lific: an issue tracker for prolific agents

CI crates.io Release License Discord

An issue tracker for prolific agents.
One binary. One SQLite file. MCP built in.

lific.dev  ·  Docs  ·  Discord


Plans and issues live on your server instead of in the context window, so work outlives the session. Agents use it over MCP; you use the web UI.

  • 31 MCP tools in 5,781 tokens, about one long file read.
  • One 25 to 32 MB binary with SQLite, the web UI and backups built in. No Docker, no Postgres.
  • lific connect writes MCP config for 11 AI clients.
  • Identifiers like APP-42, never UUIDs.

60-second setup

cargo install lific   # or download a binary from Releases
lific init            # config, database, admin account, background service on :3456
lific connect         # MCP config for your AI clients

Restart your AI client. The web UI is at http://localhost:3456. lific doctor checks config, database, server and an MCP round trip, and exits nonzero if anything is broken.

  • lific init --here keeps config and database in the current directory.
  • lific init --no-service skips the background service; run lific start yourself.
  • lific service status | restart | stop | uninstall manages the service.

More: Installation · Quickstart

What your agent can do

Call What it does
get_briefing(project="APP") Resume a project: plans and next steps, blocked and workable issues, and with since, what changed
list_issues(project="APP", workable=true) Open issues whose blockers are all resolved
list_issues(members=["me"]) Your active work across the projects you belong to
create_plan / get_plan Nested step plans that survive the session; a step and its issue close together
link_issues(target="APP-9", relation_type="blocks", user="ada") Block an issue on a person or a date window, not only another issue
update_issue(assignees=["human"]) Mark work a person must do; agents take unassigned issues
update_issue(status="done", evidence="cargo test: 412 passed") Close with the proof saved as a verification comment
edit_issue / edit_page Change one string without resending the document
get_activity(identifier="APP", since="2026-10-01") Who changed what while you were away

Each AI tool connects as its own bot under your account. The history says "OpenCode closed APP-42", and you can revoke one tool without touching the others.

MCP tools

Family Tools
Issues list_issues · get_issue · create_issue · update_issue · bulk_update · edit_issue · get_board
Relations and waits link_issues · unlink_issues
Pages get_page · create_page · update_page · edit_page
Plans create_plan · get_plan · edit_plan_step · update_plan_step
Comments add_comment · list_comments · edit_comment · delete_comment
Attachments upload_attachment · get_attachment · list_attachments
Search and history get_briefing · search · get_activity
Structure list_resources · manage_resource · delete
Export export

The 5,781 tokens are the tools/list definitions as compact JSON, counted with tiktoken's o200k_base. Parameters and output: MCP tools.

Connect your AI tools

lific connect supports opencode · claude-code · claude-desktop · cursor · vscode · codex · zed · gemini · windsurf · goose · crush.

lific connect                                          # pick from the clients it finds
lific connect --client opencode --client cursor --yes  # no prompts
lific connect --client claude-code --scope project     # repo-local .mcp.json
lific connect --client zed --stdio                     # no server: direct SQLite over stdio

It merges into existing config, and leaves a file it can't parse alone and prints the snippet instead. OAuth sign-in from the client and lific login for headless machines also work: Connect agents.

Manual config for any MCP client

Remote, over Streamable HTTP:

{
  "lific": {
    "type": "remote",
    "url": "http://localhost:3456/mcp",
    "headers": { "Authorization": "Bearer your-api-key" }
  }
}

Local, over stdio with no server:

{
  "lific": {
    "type": "local",
    "command": ["lific", "--db", "path/to/lific.db", "mcp"]
  }
}

Create a key with lific key create --name my-key --user <you>. A stdio session without LIFIC_TOKEN acts as the instance operator.

CLI

lific issue list --project APP
lific issue create --project APP --title "Fix login bug" --priority high
lific issue update APP-42 --status done
lific search "authentication" --project APP
lific --backend http --url https://lific.example.com issue list --project APP   # after lific login

The CLI reads the database directly, or a remote server with --backend http. Output is JSON when piped. lific agents-md adds a short Lific section to a repo's AGENTS.md. Full reference: CLI.

When Lific is the wrong tool

  • You coordinate a large team and need SSO, sprints or Gantt charts. Use Linear or Plane.
  • You want issues stored in the repo itself. Use a git-native tracker such as beads.
  • You need several servers syncing with each other. One Lific instance is one SQLite file.

It's built for one person directing several agents.

Running it

Access. New installs check project membership on every call, reads included. Add people with lific member add --project APP --user sam --role maintainer. See Self-hosting.

Backups. Lific writes an archive every hour and keeps 24. For a one-off:

lific dump                                    # database plus attachments, safe while running
lific restore lific_20260703_141500.tar.gz    # stop the server first

Config. lific init writes lific.toml. Set server.public_url before exposing the server beyond localhost. See Configuration.

Docker. Optional; the binary needs nothing else.

docker build -t lific .
docker run -p 3456:3456 -v lific-data:/data \
  -e LIFIC_INIT_ADMIN_NAME="Your Name" \
  -e LIFIC_INIT_ADMIN_PASSWORD="a long password" \
  lific

Both variables are required on first boot and ignored after it.

Upgrading. Read Upgrading before you skip versions.

Build from source

git clone https://github.com/VoidNullable/lific && cd lific
devenv allow && devenv shell
devenv tasks run lific:debug-build

CONTRIBUTING.md covers tests and release builds.

Community

Questions, bug reports and release announcements: Discord. Support questions get answered fastest in #support.

Contributing

Issues and PRs welcome. For anything large, open an issue first.

MCP Registry

Lific publishes server.json to the MCP Registry.

  • mcp-name: io.github.VoidNullable/lific

License

Apache-2.0

About

Local-first, lightweight issue tracker. Single Rust binary, SQLite-backed, MCP-native.

Resources

Contributing

Security policy

Stars

73 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages