Ticket Protocol
The open standard for machine-readable work stored in Git. CC0 licensed.
A format, not a product.
The protocol defines repository layout, ticket file format, workflow states, and the index schema. Any implementation can read and write tickets that conform.
Includes
- ✓
.tickets/repository structure - ✓Ticket file format (YAML frontmatter + Markdown body)
- ✓Five-state workflow and transitions
- ✓
index.jsonschema for efficient querying - ✓Forward compatibility rules (
x_ticketnamespace)
Does not include
- ×CLI commands
- ×Dashboard UI
- ×Pricing or business model
- ×GitHub-specific features
Core and Indexed
Core profile
- Only requires
.tickets/tickets/*.md - Ideal for minimal tooling or manual workflows
Indexed profile
- Adds
.tickets/config.ymland.tickets/index.json - Enables fast dashboards and large-scale querying
ticket.app requires Indexed profile.
Canonical examples
Ticket file
---
id: 01ARZ3NDEKTSV4RRFFQ69G5FAV
title: Example ticket
state: ready
priority: p1
labels: []
---
Markdown body…index.json
{
"format_version": 1,
"generated_at": "2026-02-16T18:22:11Z",
"workflow": "simple-v1",
"tickets": [
{
"id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
"short_id": "01ARZ3ND",
"display_id": "TK-01ARZ3ND",
"title": "Example ticket",
"state": "ready",
"priority": "p1",
"labels": [],
"path": ".tickets/tickets/01ARZ3NDEKTSV4RRFFQ69G5FAV.md"
}
]
}Git is authoritative.
Any caches, databases, or indexes are derived and disposable. If there is a conflict, ticket files win.