Skip to main content

tisket

A plaintext, git-tracked issue tracker. Each issue is a markdown file with YAML frontmatter. The files live in .tisket/ inside your git repo. Tisket needs no external service and no API tokens. It works offline. Coding agents read and write issues as ordinary file operations instead of calls to a hosted API.

Install

cargo install --locked tisket
brew install cjohnhanson/tap/tisket
uv tool install tisket
npm install -g tisket

cargo install builds from source. It needs Rust 1.88 and a C compiler. The other three carry a prebuilt binary for macOS and Linux, x86-64 and arm64, published by a tagged release.

To build the unreleased main branch:

cargo install --locked --git https://github.com/cjohnhanson/tisket

Or run it without installing:

uvx tisket issue list
npx tisket issue list

A release also carries prebuilt archives and a .deb, on the releases page. Each archive holds the binary and the man page. Install a .deb with dpkg -i: it is a file, not a repository, so apt-get install does not reach it.

Check the install with tisket --version.

Usage

tisket init                           # set up .tisket/ in a git repo
tisket issue create "Fix the thing"   # create an issue
tisket issue list                     # list open issues
tisket issue list -s todo             # filter by status
tisket issue show ab12                # show the issue details
tisket issue edit ab12 --add-label urgent
tisket issue close ab12               # move the file to .closed/
tisket search "TLS|certificates"      # search every issue with a regex
tisket store list                     # show this tracker and the trackers it declares
tisket serve [--bind ADDR]            # serve this tracker over MCP
tisket docs [topic]                   # show the bundled documentation

How it works

Each issue is one file. The filename has a 4-character random prefix and a slug from the title. The file holds YAML frontmatter for the metadata and a markdown body. Tisket moves a closed issue to .closed/.

.tisket/
  default/                           # project directory
    ab12-fix-the-widget.md           # open issue
    .closed/
      cd34-old-resolved-thing.md     # closed issue

An issue moves through a status lifecycle: discovery → todo → in_progress → done (or cancelled). An issue can also be blocked or paused.

Scratch notes

Each issue can have a ## Scratch Notes section below the issue body. An agent appends its working notes there: investigation logs, approaches that failed, and partial findings. The problem description above stays unchanged.

tisket scratch ab12 append "Confirmed: bounds check missing on line 42"
tisket scratch ab12 read

Git-aware divergence detection

When you list or show an issue, tisket also reads that issue file from every other branch. It compares the files field by field. If another branch has a different status, assignee, or priority, tisket marks the issue with a *. It also names each branch that differs. You see the conflict before a merge overwrites one version.

Serving over MCP

tisket serve offers the same tracker to a Model Context Protocol client. The library answers both interfaces, so the server returns what the CLI returns.

tisket serve                        # speak MCP on stdin and stdout
tisket serve --bind 127.0.0.1:7432  # serve over HTTP at /mcp on that address
tisket serve --access read-write    # also allow appending to working notes

The server is read-only by default. With --access read-write it adds one write: appending to an issue's scratch notes. A caller cannot create an issue, change a status, or edit a body through the server. A served tracker has no authentication: bind it to 127.0.0.1, or put a proxy that authenticates in front of it.

Documentation

tisket docs prints the same pages from the installed binary.

Tisket belongs to a group of plaintext, git-tracked, agent-readable tools.

  • zettel — zettelkasten notes for a repository
  • almanac — agent skill index, over pluggable sources
  • gaff — context-lifecycle handler for coding agents
  • missouri — end-to-end tests as directed graphs of filesystem states
  • mdstore — the frontmattered markdown library tisket stores issues with

License

MIT.

Metadata

Release files for tisket 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tisket 0.2.4
File Size Uploaded Provenance Actions
tisket-0.2.4.tar.gz 91.5 kB Without provenance Details for tisket-0.2.4.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for tisket 0.2.4
File Actions
tisket-0.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl Python 3 none Linux musl 1.1+ x86-64, Linux glibc 2.17+ x86-64 Details for tisket-0.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl
tisket-0.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl Python 3 none Linux musl 1.1+ ARM64, Linux glibc 2.17+ ARM64 Details for tisket-0.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
tisket-0.2.4-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for tisket-0.2.4-py3-none-macosx_11_0_arm64.whl
tisket-0.2.4-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for tisket-0.2.4-py3-none-macosx_10_12_x86_64.whl

Total release size: 31.9 MB

Release files / tisket-0.2.4.tar.gz

Download URL tisket-0.2.4.tar.gz
Size 91.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ed53cbbccdade9aa0dcd1b40fca1458cfc4b522f86b0dd2075f30156af139d7b
BLAKE2b-256 checksum
How to use checksums
dc56f8b4f0293cb70a7e7526cfdfeb11b41eb0b7239e0a22b8067393c8a97bc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / tisket-0.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl

Download URL tisket-0.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl
Size 8.4 MB
Tags Linux glibc 2.17+ x86-64 Linux musl 1.1+ x86-64 Python 3
SHA-256 checksum
How to use checksums
ae2685592e9f619d9dd6d2282e5652dfa2f9cd6e3714405c34e267c67d9f1a0b
BLAKE2b-256 checksum
How to use checksums
4f0dcb725ad7177f4f76670e79b40734c6af30f104a0f8dfbf03b08eb0ff52da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / tisket-0.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl

Download URL tisket-0.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Size 7.8 MB
Tags Linux glibc 2.17+ ARM64 Linux musl 1.1+ ARM64 Python 3
SHA-256 checksum
How to use checksums
378a74de79340e266cefe7e668e16cfc925c8256de4ab8cf3ded661b09bdbd5a
BLAKE2b-256 checksum
How to use checksums
899c5126e14cadcb4574e116923f58bb57ee8f34f0b493c86972ce5092970222
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / tisket-0.2.4-py3-none-macosx_11_0_arm64.whl

Download URL tisket-0.2.4-py3-none-macosx_11_0_arm64.whl
Size 7.7 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
71790c6cad0bc4c80b1b9245fe3919d98732b0e10455bc7f22ccb7921f492dc0
BLAKE2b-256 checksum
How to use checksums
3e62738c98429d7d4c1f148c9ea74aa1c70850b8b8b2d0070e5fc731b7b1f775
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / tisket-0.2.4-py3-none-macosx_10_12_x86_64.whl

Download URL tisket-0.2.4-py3-none-macosx_10_12_x86_64.whl
Size 8.0 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
38a0792ad6d8516c97c179ff71dcd5e65cc2838ed58d3daa592229e9ef630196
BLAKE2b-256 checksum
How to use checksums
99f2bbd494047598f73e3757dd50320d9d8d926177fcd33d75b202e99d9242e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for tisket 0.2.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.4 This release

5 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page