Lariscus

dricket · Git tickets

Tickets that live in Git. Claimed by fast-forward.

dricket is a ticketing system with no server. Every ticket is a Markdown file in a Git repository, and who is working on it right now is decided by Git itself: only one fast-forward publication lands.

One static binary · Linux, macOS and Windows · GPL-3.0-or-later

$ dk add --prefix app -m "Login error" -l bug --unclaimed
app-1
$ dk next --claim --size M
claimed app-1 (epoch 1, lease until …)
$ dk sync && $EDITOR tickets/app/0000/app-1/ticket.md
$ dk commit app-1
committed app-1 (rev 2, commit …)
$ dk release --stage review -m "Fix on dk/app-1" app-1
released app-1 -> review

Why dricket

No server

Git is the database

Your Git host is the database and the lock manager. There is nothing to deploy, patch or pay for.

Atomic

One claim wins

Claiming is a fast-forward publication. Exactly one claimant succeeds and the others are told immediately.

Plain files

Markdown you can edit

Claim, sync, use any editor, publish with dk commit. Humans and agents work on the same files.

Guardrails

Safe for agents

Leases, cooperative fencing with epochs, immutable identity and transition checks keep shared state coherent.

How a claim works

Two runners race for the same ticket. Git accepts the first fast-forward and rejects the second. The loser fetches, sees who owns it and moves on to the next ticket.

  • Leases have a size (S, M, L) instead of a guessed duration
  • Owners extend a lease with a reason
  • A stale epoch is refused and local work is kept
  • Comments reach the owner without touching the ticket file

A small, strict CLI for agents

Inside the ticket repository dk finds the store, branch and project by itself, with no flags and no environment. Exit codes are part of the contract, so an agent knows what to do next.

  • 11 already claimed · 13 claim lost, stop immediately
  • dk guide prints instructions that match your version
  • dk setup-agent installs an agent skill and the AGENTS.md pointer
  • Ticket text is treated as untrusted input
$ dk show app-1 > ticket.md
# edit ticket.md in an editor
$ dk put app-1 -F ticket.md --claim --if-version 2 --json
$ dk validate
validate ok
$ dk setup-agent
installed .agents/skills/dricket/SKILL.md

Install

One static binary, shipped under one name: dk. Git 2.32 or newer must be installed.

# release archive: github.com/lariscus/dricket/releases (SHA-256 checksums included)
$ go install github.com/HenrikPuls/dricket/cmd/dk@latest
$ dk init tickets-store app
$ cd tickets-store
$ dk add -m "First ticket"

Trust model

Everyone allowed to push the ticket repository can edit tickets; your Git host owns authentication and branch rules. dricket validates documents and every identity, revision, epoch and claim transition, and dk validate can also run as a host-side gate. Report vulnerabilities privately as described in the security policy.

Questions

Do I need a ticket server?

No. dricket needs only a Git remote. A local repository works too.

How is it different from a hosted issue tracker?

The tickets are files in your repository, and claiming is an atomic Git operation, so several people and agents can work in parallel without a central service. It is a coordination layer, not a project-management suite.

What happens if two agents claim the same ticket?

One fast-forward push lands. The other gets exit code 11 (already claimed) and is told who owns the ticket.

Is it ready for my team?

dricket is in an early phase. It is built for teams and agents that share a ticket repository, and it works well there. Use in large-scale setups with many simultaneous writers has not been tested yet.