Gira - Git-based Issue Tracking and Project Management
Gira is a lightweight, Git-friendly project management tool designed for developers and AI agents. It stores all project data in plain JSON files within your repository, making it perfect for version control and collaboration.
✨ Features
- Git-Native: All data stored as JSON files in
.gira/directory - Offline-First: Works completely offline, no external dependencies
- AI-Friendly: MCP server for AI agents (Claude, Gemini) with 30+ tools
- Kanban Board: Visual project management with customizable swimlanes
- Rich CLI: Beautiful terminal UI with colors and tables
- Advanced Search: Powerful query language with filters and full-text search
- Shell Completion: Tab completion for all commands and dynamic ID completion
- Fast: Lightweight and responsive, perfect for large projects
- Extensible: Hook system, webhooks, and custom fields support
- Import/Export: JSON, CSV, and Markdown format support
🚀 Quick Start
# Install Gira
pip install gira # Available on PyPI
# Or install from source
pip install -e .
# Install with optional features
pip install "gira[s3]" # For AWS S3, Cloudflare R2, Backblaze B2
pip install "gira[gcs]" # For Google Cloud Storage
pip install "gira[azure]" # For Azure Blob Storage
pip install "gira[docs]" # For documentation tools
# Initialize a new project
gira init "My Project"
# Create your first ticket
gira ticket create "Set up project structure"
# View the kanban board
gira board
# List all tickets
gira ticket list
📋 Core Commands
Project Management
gira init <name>- Initialize a new Gira projectgira --version- Show version information
Ticket Operations
gira ticket create <title>- Create a new ticketgira ticket list- List tickets with filtering (--search,--labels,--assignee)gira ticket show <id>- Display ticket detailsgira ticket update <id>- Update ticket fieldsgira ticket move <id> <status>- Move ticket between statuses
Epic Management
gira epic create <title>- Create a new epicgira epic list- List all epicsgira epic show <id>- Display epic detailsgira epic update <id>- Update epic fields (--add-tickets)
Sprint Management
gira sprint create <name>- Create a new sprint (--duration,--end-date)gira sprint list- List sprints (--format json)gira sprint show <id>- Display sprint detailsgira sprint update <id>- Update sprint fields
Comments & Search
gira comment add <ticket-id>- Add comment to ticketgira comment list <ticket-id>- List ticket commentsgira query <expression>- Advanced search with filters
Export & Integration
gira export json- Export project data to JSONgira export csv- Export to CSV formatgira export md- Export to Markdown formatgira webhook add <url>- Add webhook integration
AI Integration
- MCP Server: 30+ tools for AI agents (Claude Desktop, etc.)
- Natural Language: AI agents can manage tickets through conversation
- Install:
pip install "gira[mcp]"and configure Claude Desktop
Shell Completion
gira --install-completion- Install tab completion (recommended)gira completion install <shell>- Legacy completion system (deprecated)
Board Visualization
gira board- Display kanban boardgira board --compact- Compact board viewgira board --assignee <email>- Filter by assignee
Backlog Management
gira backlog- View backlog tickets with smart filtersgira backlog --ready- Show tickets ready to work ongira backlog --unassigned- Show unassigned ticketsgira backlog --priority high- Filter by prioritygira backlog --counts- Show summary counts
🏗️ Project Structure
.gira/
├── config.json # Project configuration
├── .state.json # Internal state (next ticket ID, etc.)
├── backlog/ # Tickets in backlog
├── board/ # Active tickets by status
│ ├── todo/
│ ├── in_progress/
│ ├── review/
│ └── done/
├── epics/ # Epic definitions and management
├── sprints/ # Sprint data and tracking
├── comments/ # Ticket comments and discussions
└── archive/ # Completed tickets
📖 Documentation
🛠️ Advanced Features
Custom Git Merge Driver
Gira includes an intelligent Git merge driver that automatically resolves conflicts in JSON files:
- Smart Conflict Resolution: Uses "latest-write-wins" strategy based on timestamps
- Semantic Merging: Understands ticket structure and merges fields intelligently
- File Movement Handling: Correctly handles tickets moved to different statuses
- Audit Trail: Adds merge notes to track automatic resolutions
To enable the merge driver:
.gira/scripts/setup-merge-driver.sh
See merge driver documentation for details.
Contributing
Contributions are welcome! Please read our contributing guide and submit pull requests to our repository.
📚 Documentation
Comprehensive documentation is available at goatbytes.github.io/gira
- 📖 Installation - Installation guide
- 🚀 Quick Start - Get started in minutes
- 📋 User Guide - Complete feature documentation
- 🔧 CLI Reference - All commands and options
- 📝 Commands - Individual command documentation
- 🤖 AI Agents - AI integration documentation
- 🔗 MCP Server - Model Context Protocol integration
📡 Documentation is automatically updated on every release using our automated generation system.
Development Setup
# Clone the repository
git clone https://github.com/goatbytes/gira.git
cd gira
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Run linter
ruff check src/
📊 Testing
Gira maintains high test coverage (88%+) with comprehensive unit and integration tests:
# Run all tests
pytest
# Run with coverage
pytest --cov=gira --cov-report=html
# Run specific test file
pytest tests/integration/test_cli_ticket.py
🔧 Requirements
- Python 3.8 or higher
- Git (for version control integration)
- Terminal with Unicode support (for rich output)
🎯 Design Philosophy
Gira follows these core principles:
- Simplicity: Plain JSON files, no database required
- Transparency: All data is human-readable and Git-friendly
- Flexibility: Extensible design for custom workflows
- Performance: Fast operations even with thousands of tickets
- AI-First: Structured data optimized for AI agent interaction
🔧 Troubleshooting
Unicode Display Issues
If you see garbled characters (like â) instead of box-drawing characters in the board view:
# Set environment variable to force ASCII-only output
export GIRA_ASCII_ONLY=1
gira board
# Or force Unicode if your terminal supports it
export GIRA_FORCE_UNICODE=1
gira board
For container environments, Gira automatically detects and adjusts output. If auto-detection fails, use the environment variables above.
📄 License
Gira is released under the MIT License. See LICENSE file for details.
About GoatBytes.IO
At GoatBytes.IO, our mission is to develop secure software solutions that empower businesses to transform the world. With a focus on innovation and excellence, we strive to deliver cutting-edge products that meet the evolving needs of businesses across various industries.
Metadata
Release files for gira 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gira-0.2.2.tar.gz | 598.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gira-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.3 MB
Release files / gira-0.2.2.tar.gz
| Download URL | gira-0.2.2.tar.gz |
|---|---|
| Size | 598.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
060fc8280760645311ffe4795025a81a6c6f0b79638e6402067a085f4ae9281c
|
|
BLAKE2b-256 checksum How to use checksums |
bcf502f9bf907d5df5d6e7a111826d0f1e7a2412c7a0d0dbce6f56ad73867d93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.12
|
Release files / gira-0.2.2-py3-none-any.whl
| Download URL | gira-0.2.2-py3-none-any.whl |
|---|---|
| Size | 745.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d57a31febf8d44c5fa110a5fc25f4ca12acfc34ae4122512711de8f85398649
|
|
BLAKE2b-256 checksum How to use checksums |
9da9efadbb055052a5f59ee8bee7923926dbcc0ad78eb3792d0f13623a29bca3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.12
|