Skip to main content

Git-based project management for developers and AI agents

Project description

Gira - Git-based Issue Tracking and Project Management

Python 3.8+ Test Coverage Documentation MCP Tests Style Guide-Python License

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[mcp]"    # For AI agent integration (Claude, etc.)
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[all]"    # All features (MCP + all storage backends)

# 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 project
  • gira --version - Show version information

Ticket Operations

  • gira ticket create <title> - Create a new ticket
  • gira ticket list - List tickets with filtering (--search, --labels, --assignee)
  • gira ticket show <id> - Display ticket details
  • gira ticket update <id> - Update ticket fields
  • gira ticket move <id> <status> - Move ticket between statuses

Epic Management

  • gira epic create <title> - Create a new epic
  • gira epic list - List all epics
  • gira epic show <id> - Display epic details
  • gira 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 details
  • gira sprint update <id> - Update sprint fields

Comments & Search

  • gira comment add <ticket-id> - Add comment to ticket
  • gira comment list <ticket-id> - List ticket comments
  • gira query <expression> - Advanced search with filters

Export & Integration

  • gira export json - Export project data to JSON
  • gira export csv - Export to CSV format
  • gira export md - Export to Markdown format
  • gira 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 board
  • gira board --compact - Compact board view
  • gira board --assignee <email> - Filter by assignee

Backlog Management

  • gira backlog - View backlog tickets with smart filters
  • gira backlog --ready - Show tickets ready to work on
  • gira backlog --unassigned - Show unassigned tickets
  • gira backlog --priority high - Filter by priority
  • gira 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

๐Ÿ“ก 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:

  1. Simplicity: Plain JSON files, no database required
  2. Transparency: All data is human-readable and Git-friendly
  3. Flexibility: Extensible design for custom workflows
  4. Performance: Fast operations even with thousands of tickets
  5. 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

GoatBytesLogo

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.

GitHub Twitter LinkedIn Instagram

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gira-0.2.0.tar.gz (599.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gira-0.2.0-py3-none-any.whl (745.7 kB view details)

Uploaded Python 3

File details

Details for the file gira-0.2.0.tar.gz.

File metadata

  • Download URL: gira-0.2.0.tar.gz
  • Upload date:
  • Size: 599.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for gira-0.2.0.tar.gz
Algorithm Hash digest
SHA256 583f1df0a6a3dbc71fb14a42fcdc5296bb28d828fa512346100d04d6efa103c1
MD5 cf5870bc3c829a707a29f9a6e8191065
BLAKE2b-256 e7e603e45663319d17926afaa2bbfa73ba1fb6025d0bf6234311671e05cc776f

See more details on using hashes here.

File details

Details for the file gira-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: gira-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 745.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for gira-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aecec1d4dcbf288bea05bada4beebe59a1a529ded2e2e4d1695e6838d1cf3123
MD5 b2674c66366048ef3cf22ce184417b0e
BLAKE2b-256 0c253c858d829001a1956d715d3dc9cee81e0f039e1a7c0062440a85b6661925

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page