GitHub - justinmklam/tira: A blazing fast terminal interface for Jira, written in Go.

3 min read Original article ↗

Go Version Go Report Card License

A terminal interface for Jira. Fast, keyboard-driven, and built for people who find the web UI insufferable.

backlog

kanban

Demo:

demo.mov

Features

  • Create and edit issues
  • Organize issues across sprints
  • Set issue status, assignee, story points, epics, and more
  • Fuzzy search picker for setting assignees and parent issues
  • Copy issue links to clipboard, or open them directly in your browser
  • Vim-inspired keybindings
  • Optimized for speed and responsiveness - no more fighting with the Jira web ui!

Getting Started

Installation

Install the tool with curl:

curl -fsSL https://raw.githubusercontent.com/justinmklam/tira/main/bin/install.sh | bash

Or with go:

go install github.com/justinmklam/tira/cmd/tira@latest

Then create ~/.config/tira/config.yaml and add a default profile:

profiles:
  default:
    jira_url: https://yourorg.atlassian.net
    email: you@example.com
    # token can also be set via JIRA_TOKEN or JIRA_API_TOKEN env vars (recommended)
    token: your_api_token_here
    project: MYPROJ
    board_id: 42
    classic_project: true   # Optional, set to true for company-managed (classic) projects

Alternatively, set values via environment variables (takes precedence over the config file):

export JIRA_TOKEN="your_api_token_here"
# or
export JIRA_API_TOKEN="your_api_token_here"
# Full overrides:
export TIRA_JIRA_URL="https://myorg.atlassian.net"
export TIRA_EMAIL="me@myorg.com"
export TIRA_TOKEN="my-token"
export TIRA_PROJECT="MYPROJ"

For clipboard support, install xclip (e.g. sudo apt install xclip) for Linux. macOS uses pbcopy, which is built in to the OS.

Usage

Board TUI

Launch the interactive board TUI:

# Start in backlog view
tira backlog

# Start in kanban view
tira kanban

Common keybindings:

Key Action
Tab Toggle between backlog and kanban
j/k Move cursor to next/prev issue
J/K Move cursor to next/prev sprint
Enter Open issue detail in fullscreen / Toggle sprint collapse
e Edit issue
c Add comment
s Set status
A Set assignee
S Set story points
P Set parent
f<num> Jump to issue by number
/<keyword> Filter issues by keyword
F Open parent issue picker to filter issues by parent
Space Select issue
v Visual mode (multi-select)
x / p Cut / Paste selected issue(s)
< / > Move selected issue(s) to prev/next sprint
R Refresh from Jira
? Show help
q Quit

See Keybindings for the complete reference.

CLI Commands

View an issue:

Edit an issue in your editor:

Create a new issue:

# Interactive with defaults
tira create

# Specify project and type
tira create --project DEV --type Bug

Build & Development

Clone the repository and build the CLI:

make check        # Run all checks (fmt, vet, lint, test)
make build        # Compile the binary
make run          # Run the tui using your default profile

For development, a second dev profile can be added to your ~/.config/tira.yaml:

profiles:
  ...
  dev:
    jira_url: https://dev-domain.atlassian.net
    email: dev@example.com
    token: dev_token_here
    project: DEVPROJ
    board_id: 43

Other useful commands:

make run-dev      # Run the tui using your dev profile, with debug enabled
make test         # Run all tests
make test-race    # Run tests with race detector
make fmt          # Format code in-place
make vet          # Run go vet
make lint         # Run golangci-lint (requires golangci-lint installation)

Documentation

Document Description
Architecture System architecture and package structure
CLI Commands Detailed CLI command documentation
Configuration Configuration system details
TUI Architecture TUI model architecture
API Client API client implementation
Keybindings Complete keybinding reference
Glossary Glossary and key types

Acknowledgements

This project was built with the excellent bubbletea framework by Charm.

Inspiration for this tool was taken from:

Developed with the help of Claude and Qwen. Thanks pals.

License

MIT