git-native tickets for people who live in the terminal

Issues that travel with your repo.

TicGit is a small Rust CLI for tracking work inside Git projects. Create tickets, tag them, assign owners, comment, save views, and sync the whole thing through Git metadata refs.

$ cargo install ticgit
$ ti init
ticgit initialised on this repository

$ ti new --title "fix parser" \
    --tags bug,parser \
    --comment "fails on empty input"
Created ticket d7f2d8 (fix parser)

$ ti list --tag bug
* d7f2d8  fix parser  open  bug,parser

Start in one minute.

Install the CLI, initialize metadata, and make your first ticket.

1

Install

Install the published crate with cargo install ticgit. From source, use cargo install --path crates/ticgit.

2

Initialize

Run ti init inside any Git repository. TicGit uses your Git identity for metadata authorship.

3

Track work

Create tickets with ti new, then filter, update, comment, and sync without leaving your checkout.

What it can do.

A practical issue tracker shaped like a command-line tool, not a web app.

Daily workflow

  • ti new --title "add docs"Create a UUID-backed ticket
  • ti list --state openFilter and sort ticket tables
  • ti show <id> --jsonInspect details or script output
  • ti checkout <id>Select a current ticket
  • ti comment "fixed it"Add threaded history
$ ti tag --ticket d7f2d8 bug ui
Tags on d7f2d8: bug, ui

$ ti assign you@example.com --ticket d7f2d8
d7f2d8 assigned: you@example.com

$ ti points 3 --ticket d7f2d8
d7f2d8 points: 3

$ ti state resolved --ticket d7f2d8
d7f2d8 -> resolved

Works offline

Tickets live in your repo's local git-meta database. Read and update them without network access.

Syncs with Git

ti pull, ti push, and ti sync exchange metadata through refs/meta/*.

Scriptable output

Use --json on list and show commands to feed tickets into shell scripts or other tools.

Saved views

Snapshot filtered ticket sets with ti save-view bugs --tag bug, then reopen with ti list --view bugs.

Simple fields

State, assignee, points, milestone, tags, comments, creation time, and author are first-class metadata.

Clean break

No legacy orphan branch or migration layer. TicGit uses structured git-meta values from the start.

Structured Git metadata.

Every ticket is project-scoped metadata under the ticgit: namespace.

Storage shape

Ticket existence is implied by fields under ticgit:tickets:<uuid>:*. There is no separate ticket index to keep consistent.

string fields set tags list comments project target refs/meta/*
ticgit:schema-version
ticgit:owners
ticgit:views:bugs
ticgit:tickets:<uuid>:title
ticgit:tickets:<uuid>:state
ticgit:tickets:<uuid>:assigned
ticgit:tickets:<uuid>:tags
ticgit:tickets:<uuid>:comments

Ready for a terminal-first project tracker?

Use TicGit when issues belong with the code: small tools, offline work, experiments, forks, and repos where Git is already the shared source of truth.

Publish note: the CLI crate depends on ticgit-lib, so publish ticgit-lib first, then publish ticgit. After that, users can install with cargo install ticgit.