Release Date: 2026-02-05
Rig runs everywhere.
This release eliminates the "must be in directory" constraint. With the new Project Discovery Engine, you can run rig work or rig hack from anywhere on your system. If you aren't in a project, Rig will present a lightning-fast, fuzzy-searchable list of your projects (powered by fzf) and transport you there instantly.
Additionally, we've added support for the Gemini CLI as an AI provider and simplified rig clone with shorthand syntax.
brew upgrade rigThis release requires fzf for the interactive project picker:
brew install fzfRig now scans your configured source directories (default ~/src) to build a map of your projects.
- Auto-Discovery: Finds both standard and bare git repositories.
- Interactive Picker: Select your target project instantly with a fuzzy finder.
- Seamless Context Switch:
rig worktransparently switches execution to the selected project root.
You can now use the Google Gemini CLI as your AI backend.
Configure it in config.toml:
[ai]
provider = "gemini"
gemini_command = "gemini" # Optional, defaults to "gemini"Cloning is faster with GitHub shorthand support:
rig clone thoreinstein/rig # Same as git@github.com:thoreinstein/rig.gitNew [discovery] section available for customizing the project scanner:
[discovery]
search_paths = ["~/src", "~/work"] # Directories to scan
max_depth = 3 # How deep to search
cache_path = "~/.cache/rig/projects.json"- Performance: Optimized configuration loading with caching.
- Stability: Fixed error wrapping in workflow logic.
- Cleanup: Enhanced repo detection logic for edge cases.
Release Date: 2026-01-22
This release brings significant enhancements to the PR workflow with pagination support, a powerful new timeline formatter for history analysis, and improvements to configuration management including repository-local config support.
brew upgrade rigDownload the appropriate binary from the releases page.
- Pagination support for PR listing - handle repositories with many PRs efficiently
- Typed errors throughout PR commands for better error handling
- Improved testability with refactored global flags
- Timeline markdown formatter - generate beautiful markdown timelines from history data
- Worktree path auto-detection - timeline automatically filters to current worktree context
- New query filters - filter history by
--ticketflag for focused analysis - Enhanced SQL query builder with support for new filter parameters
- Repository-local config support - override global config per-repository
- Per-provider AI model defaults - sensible defaults for each AI provider
- Config validation and security warnings - proactive warnings for insecure configurations
- Fixed
rig workcommand - now correctly detects existing notes and displays "Opened existing note" instead of always showing "Note created" (rig-qf2) - Fixed golangci-lint issues in PR commands
- Removed unused import in timeline.go
- Bumped modernc.org/sqlite from 1.43.0 to 1.44.1
All release artifacts are signed with Sigstore. Verify with:
cosign verify-blob --signature rig-darwin-arm64.sig rig-darwin-arm64If issues occur, rollback to v0.9.0:
brew install rig@0.9.0
# or download v0.9.0 from releases pageThis release introduces beads as a first-class local issue tracking alternative to JIRA. The new pkg/beads package provides a full client for interacting with beads-tracked issues, while the TicketRouter intelligently routes ticket operations to either beads or JIRA based on identifier format. All existing JIRA workflows continue to work unchanged.
Release date: 2026-01-15
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.9.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionBeads is a lightweight, git-native issue tracker that stores issues in a local JSONL file (.beads/beads.jsonl). This release adds full beads support across rig's workflow commands.
A complete beads client implementation:
- BeadsClient interface — Abstracts beads operations for testability
- CLIClient implementation — Executes the
bdCLI under the hood - Project detection — Automatically detects beads projects via
.beads/beads.jsonl - Type definitions — Full Go types for issues, statuses, and types
The new TicketRouter automatically determines whether a ticket belongs to beads or JIRA:
| Identifier Pattern | Example | Routes To |
|---|---|---|
| Alphanumeric suffix | rig-abc123, beads-2o1 |
Beads |
| Numeric suffix | PROJ-123, JIRA-456 |
JIRA |
This routing is transparent—commands like rig work and rig pr merge automatically use the correct backend.
When starting work on a beads ticket, the issue status is automatically updated to in_progress:
# Beads ticket — updates status in .beads/beads.jsonl
rig work rig-abc123
# JIRA ticket — unchanged behavior
rig work PROJ-123The AI provider is now wired into the workflow engine, enabling AI-powered debrief sessions during rig pr merge. This completes the integration started in v0.7.0.
Branch cleanup after PR merge now uses the GitHub API directly instead of local git operations. This avoids conflicts when deleting branches that are checked out in other worktrees.
Symptom: Beads projects were not detected even when .beads/ directory existed.
Root Cause: Detection logic looked for the wrong filename.
Fix: Now correctly checks for .beads/beads.jsonl. (7e54767)
Several fixes to make preflight checks more robust and helpful:
| Commit | Fix |
|---|---|
a4a75f5 |
Handle TicketSourceUnknown in preflight switch statement |
4e2eec4 |
Fix empty FailureReason when JIRA is unavailable |
4696bd9 |
Context-aware error guidance based on ticket source |
| Commit | Fix |
|---|---|
7d5cf7f |
Fix undefined cmd variable in runPRMerge |
d971bcd |
Improve JIRA client initialization error message |
f0d94ee |
Skip JIRA fetch for beads tickets during merge |
73dfeb1 |
General PR merge cleanup |
Beads requires no configuration—project detection is automatic. If a .beads/beads.jsonl file exists in your repository (or any parent directory), rig will use beads for alphanumeric ticket identifiers.
Requirements:
- The
bdCLI must be installed and available in your PATH - Initialize a beads project with
bd init <prefix>if one doesn't exist
All new functionality has sensible defaults:
- JIRA workflows continue to work exactly as before
- Ticket routing is automatic based on identifier format
- No configuration changes required for existing users
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.9.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.9.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.9.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.9.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.8.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.8.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.8.0/rig_0.8.0_darwin_arm64.tar.gz
tar -xzf rig_0.8.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/After rollback:
- Beads tickets (
rig-abc123style) will still be parsed but won't update beads issue status - JIRA workflows are unaffected
- The
--no-notesflag introduced in v0.8.0 remains available
This release inverts the notes flag behavior for hack and work commands—notes are now created by default, with --no-notes available to opt out. This release also fixes rig pr create which was broken in non-interactive mode.
Release date: 2026-01-14
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.8.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionThe notes flag has been inverted for consistency and improved workflow:
| Before (v0.7.1) | After (v0.8.0) |
|---|---|
rig hack foo → No note created |
rig hack foo → Note created |
rig hack foo --notes → Note created |
(flag removed) |
rig work PROJ-123 → Note created |
rig work PROJ-123 → Note created |
| (no opt-out available) | --no-notes → Skip note creation |
Additional change: The hack command now updates daily notes, matching work command behavior.
Migration:
# Before (v0.7.1) - explicitly request notes
rig hack experiment --notes
# After (v0.8.0) - notes by default, opt out if needed
rig hack experiment # Notes created automatically
rig hack experiment --no-notes # Opt out of note creationImpact on scripts: Scripts using rig hack that expected no notes will now get notes created. Add --no-notes to preserve old behavior.
Symptom: All rig pr create invocations failed when not running in an interactive terminal (e.g., from automation, agents, or scripts).
Root Cause: The gh CLI requires both --title and --body flags when running non-interactively. Previously, --body was only passed when non-empty.
Fix: --body is now always passed to gh pr create, even when empty.
Affected issues: rig-cge, rig-a6t
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.8.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.8.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.8.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.8.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.7.1:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.7.1
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.1/rig_0.7.1_darwin_arm64.tar.gz
tar -xzf rig_0.7.1_darwin_arm64.tar.gz
mv rig /usr/local/bin/After rollback:
- Remove
--no-notesflags from any updated scripts - The
--notesflag will be required again to create notes withhack rig pr createwill fail in non-interactive mode
This patch release extends ticket identifier parsing to accept alphanumeric suffixes, enabling compatibility with beads-style identifiers like rig-abc123 alongside traditional numeric formats like PROJ-123. All existing workflows continue unchanged.
Release date: 2026-01-14
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.7.1_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionTicket parsing now accepts alphanumeric suffixes in addition to numeric-only suffixes:
| Format | Example | Status |
|---|---|---|
| Numeric (existing) | PROJ-123 |
Supported |
| Alphanumeric (new) | rig-2o1, beads-xyz |
Supported |
Affected Commands:
rig work— Creates worktrees using ticket identifier as branch namerig sync— Extracts ticket from branch name for commit messages
Usage Examples:
# Numeric ticket (unchanged)
rig work PROJ-1234
# Beads-style alphanumeric ticket (new)
rig work rig-abc123
rig work beads-2o1Edge Case: Branch names like feature-branch now match the ticket pattern since branch is alphanumeric. This is expected behavior when supporting beads-style identifiers.
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.1/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.1/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.1/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.7.1' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.7.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.7.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.0/rig_0.7.0_darwin_arm64.tar.gz
tar -xzf rig_0.7.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/After rollback: Alphanumeric ticket identifiers like rig-abc123 will no longer be recognized. Use numeric-only formats (PROJ-123) or specify branch names explicitly.
This release introduces comprehensive GitHub PR workflows and local AI inference capabilities. The new rig pr command family provides a full pull request lifecycle—create, view, list, and merge PRs—powered by a native GitHub API client with multi-layer authentication. The merge workflow includes an AI-powered debrief session for post-merge retrospectives. A new Ollama provider enables offline AI inference without cloud dependencies.
Release date: 2026-01-14
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.7.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionFull pull request lifecycle management without leaving your terminal:
| Command | Description |
|---|---|
rig pr create |
Create a PR from the current branch |
rig pr view [number] |
View PR details (defaults to current branch's PR) |
rig pr list |
List PRs with filtering options |
rig pr merge [number] |
Full merge workflow with AI debrief |
Usage Examples:
# Create PR from current branch
rig pr create
# View PR for current branch
rig pr view
# List open PRs
rig pr list
# Merge with AI debrief session
rig pr mergeReplaces the previous gh CLI wrapper with a native Go implementation using google/go-github/v68:
Multi-Layer Authentication:
| Priority | Method | Description |
|---|---|---|
| 1 | RIG_GITHUB_TOKEN |
Environment variable (highest priority) |
| 2 | GITHUB_TOKEN |
Standard GitHub token environment variable |
| 3 | Config file | Token stored in config.toml |
| 4 | OAuth device flow | Interactive browser-based authentication |
| 5 | gh CLI fallback |
Uses existing gh auth if available |
Secure Token Caching:
Tokens obtained via OAuth device flow are cached securely using native OS credential storage:
| Platform | Storage Backend |
|---|---|
| macOS | Keychain |
| Linux | libsecret |
| Windows | Credential Manager |
The rig pr merge command executes a structured 5-step workflow:
- Preflight — Validates PR is mergeable (no conflicts, CI passing, approvals)
- Gather — Collects PR metadata, commits, reviews, and comments
- Debrief — AI-powered Q&A session for post-merge retrospective
- Merge — Performs the actual merge operation
- Closeout — Updates related issues and cleans up branches
Checkpoint System:
Interrupted workflows can be resumed—progress is saved after each step:
# Resume an interrupted merge workflow
rig pr merge --resumeSkip Approval Flag:
For self-authored PRs where you want to skip the pre-merge approval prompt:
rig pr merge --skip-approvalThe merge workflow includes an interactive AI debrief session:
- Summarizes changes, decisions, and trade-offs made in the PR
- Answers questions about the implementation
- Captures lessons learned for future reference
- Generates documentation snippets from the discussion
New AI provider for fully offline operation using Ollama:
Key Benefits:
- No API key required — Works entirely offline
- Data privacy — Code never leaves your machine
- Cost-free — No API usage charges
Supported Models:
Any model available in Ollama, including:
llama3.2codellamamistraldeepseek-coder
[github]
# Optional: set token directly (prefer environment variables)
token = ""
# OAuth app client ID for device flow (optional, uses built-in default)
oauth_client_id = ""[ai]
# Provider: "openai", "anthropic", or "ollama"
provider = "ollama"
# Ollama-specific settings
[ai.ollama]
# Ollama server URL (default: http://localhost:11434)
base_url = "http://localhost:11434"
# Model to use
model = "llama3.2"[workflow]
# Enable AI debrief during merge
debrief_enabled = true
# Skip approval prompt for self-authored PRs
auto_approve_self = false
# Checkpoint directory for workflow state
checkpoint_dir = "~/.local/state/rig/workflows"| Variable | Description |
|---|---|
RIG_GITHUB_TOKEN |
GitHub personal access token (highest priority) |
GITHUB_TOKEN |
Standard GitHub token (fallback) |
OLLAMA_HOST |
Override Ollama server URL |
Symptom: Viewing PR details with reviews would fail with JSON unmarshaling errors.
Root Cause: Struct field mismatch between the GitHub API response and the internal type definition.
Fix: Corrected struct tags to match GitHub API v3 response format.
Symptom: Pre-commit hooks failed with build errors when running in git worktrees.
Root Cause: The Go build attempted to embed VCS information, which fails in worktrees where .git is a file (gitdir reference) rather than a directory.
Fix: Added -buildvcs=false flag to pre-commit hook configuration.
Various code quality improvements based on automated review feedback.
The ListPRs method now accepts an additional author filter parameter:
Before (v0.6.x):
func (c *Client) ListPRs(ctx context.Context, state string) ([]*PR, error)After (v0.7.0):
func (c *Client) ListPRs(ctx context.Context, state, author string) ([]*PR, error)Migration: Pass empty string "" for author to maintain previous behavior (list all authors).
anchore/sbom-action: 0.21.0 → 0.21.1modernc.org/sqlite: 1.42.2 → 1.43.0
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.7.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.7.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.6.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.6.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.6.0/rig_0.6.0_darwin_arm64.tar.gz
tar -xzf rig_0.6.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/After rollback: The rig pr commands will not be available. Use gh CLI directly for PR operations. Remove any [github], [ai], or [workflow] configuration sections if they cause errors on the older version.
This release introduces direct Jira REST API integration, enabling native communication with Jira Cloud without requiring external CLI tools. The new API client supports rate limiting, automatic retries, and custom field display while maintaining full backward compatibility with existing CLI-based configurations.
Release date: 2026-01-12
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.6.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionThe new APIClient provides native Jira Cloud REST API v3 support without requiring external CLI dependencies:
- Authentication: Basic auth via email and API token (supports
JIRA_TOKENenvironment variable) - Rate Limiting: Exponential backoff with configurable retries (max 3 retries, ±20% jitter)
- Retry-After Support: Automatically respects Jira's rate limit headers
- ADF Parsing: Native Atlassian Document Format parsing for issue descriptions
A factory pattern allows seamless selection between implementations:
| Mode | Implementation | Use Case |
|---|---|---|
api |
New APIClient | Direct REST API access, no CLI required |
acli |
Existing CLIClient | Legacy Atlassian CLI integration |
"" (empty) |
CLIClient | Backward compatible default |
Display custom Jira fields in your notes with configurable field mappings:
- Map friendly names to Jira field IDs
- Supports strings, numbers, objects, and arrays
- Configure via
jira.custom_fieldsin your config file
jira:
enabled: true
mode: "api" # "api" or "acli" (default: acli)
base_url: "https://your-domain.atlassian.net" # Required for API mode
email: "user@example.com" # Required for API mode
token: "" # Or use JIRA_TOKEN env var
custom_fields: # Map friendly names to field IDs
story_points: "customfield_10016"
team: "customfield_10001"| Variable | Description |
|---|---|
JIRA_TOKEN |
Jira API token (alternative to config file) |
Existing configurations continue to work unchanged:
- Empty or unset
modedefaults toacli - All existing CLI-based configurations are fully supported
- No migration required for current users
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.6.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.6.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.6.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.6.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.5.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.5.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.5.0/rig_0.5.0_darwin_arm64.tar.gz
tar -xzf rig_0.5.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/The "Identity Release" completes the rename from sre to rig. This release updates the Go module path, binary name, and configuration directory to use the rig identity throughout. The name captures what the tool does: it rigs up your development environment—wiring together git worktrees, tmux sessions, and documentation into a cohesive workflow.
Release date: 2026-01-08
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.5.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionThe Go module has been renamed from thoreinstein.com/sre to thoreinstein.com/rig.
| Before (v0.4.x) | After (v0.5.0) |
|---|---|
thoreinstein.com/sre |
thoreinstein.com/rig |
Impact: Users who import this module in Go code must update their import paths.
The CLI binary has been renamed from sre to rig.
| Before (v0.4.x) | After (v0.5.0) |
|---|---|
sre |
rig |
Impact: Scripts, shell aliases, and PATH references that invoke sre will break.
The configuration directory has moved to match the new identity.
| Before (v0.4.x) | After (v0.5.0) |
|---|---|
~/.config/sre/ |
~/.config/rig/ |
Impact: Existing configuration files must be migrated to the new location.
Note: Environment variables already use the RIG_* prefix (changed in v0.4.0), so no environment variable changes are required for this release.
# Move config to new location
mv ~/.config/sre ~/.config/rig
# Verify configuration is recognized
rig config listReplace references to sre with rig in your shell configuration:
# Check for affected aliases
grep -E '\bsre\b' ~/.bashrc ~/.zshrc ~/.config/fish/config.fish 2>/dev/null
# Example: Update alias
# Before:
alias sw="sre work"
# After:
alias sw="rig work"Replace sre with rig in any automation scripts:
# Find scripts referencing sre
grep -r '\bsre\b' ~/bin ~/.local/bin /usr/local/bin 2>/dev/null
# Update references
sed -i 's/\bsre\b/rig/g' ~/bin/my-workflow.shIf you import this module in Go code:
// Before
import "thoreinstein.com/sre/pkg/git"
// After
import "thoreinstein.com/rig/pkg/git"- Code style improvements — Cosmetic lint fixes across 13 command files for consistent formatting
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.5.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.5.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.5.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.5.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.4.1:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.4.1
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.1/rig_0.4.1_darwin_arm64.tar.gz
tar -xzf rig_0.4.1_darwin_arm64.tar.gz
mv rig /usr/local/bin/After rollback: Move your configuration back to the old location:
mv ~/.config/rig ~/.config/sreRevert any alias or script changes (rig → sre) if you updated them for v0.5.0.
This patch release fixes tmux window creation on systems using the default base-index=0 setting. Previously, window indices were hardcoded to start at 1, causing session creation failures when tmux's default 0-based indexing was in effect. The fix queries and respects the user's configured base-index value.
Release date: 2026-01-08
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.4.1_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionSymptom: Running rig work or rig hack failed to create tmux sessions on systems using the default base-index=0 configuration.
Root Cause: Window indices were hardcoded to start at 1, but tmux defaults to 0-based indexing. Users who hadn't set base-index=1 in their tmux configuration experienced session creation failures.
Fix: Added getBaseIndex() method that queries tmux show-options -g base-index to respect the user's configured value. The result is cached with sync.Once (queried once per SessionManager lifetime) and falls back to 0 (tmux default) on any failure.
Impact: Transparent improvement—existing configurations continue to work, and systems using the tmux default now work correctly.
- Added tmux installation to CI workflow to enable tmux integration tests
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.1/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.1/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.1/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.4.1' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.4.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.4.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.0/rig_0.4.0_darwin_arm64.tar.gz
tar -xzf rig_0.4.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/Note: After rollback, tmux session creation will fail on systems using base-index=0. As a workaround, add set-option -g base-index 1 to your ~/.tmux.conf.
This release fixes environment variable pollution that corrupted tmux configuration when running the CLI inside an existing tmux session. All environment variable bindings now require an RIG_ prefix, which is a breaking change for users who set configuration via environment variables.
Release date: 2026-01-07
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.4.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionEnvironment variables used to configure the CLI must now include an RIG_ prefix.
Rationale: The tmux program sets a TMUX environment variable (e.g., /private/tmp/tmux-502/default,12345,0) in all processes it spawns. Viper's automatic environment binding was mapping this to the tmux config key, overwriting tmux window configuration and causing unpredictable behavior when running rig commands inside a tmux session.
Adding SetEnvPrefix("SRE") ensures only explicitly-intended environment variables affect configuration.
Migration Table:
| Before (v0.3.x) | After (v0.4.0) |
|---|---|
NOTES_PATH |
RIG_NOTES_PATH |
CLONE_BASE_PATH |
RIG_CLONE_BASE_PATH |
VERBOSE |
RIG_VERBOSE |
Nested Configuration:
For nested config keys, use underscore separators after the RIG_ prefix:
| Config Key | Environment Variable |
|---|---|
notes.path |
RIG_NOTES_PATH |
clone.base_path |
RIG_CLONE_BASE_PATH |
tmux.session_prefix |
RIG_TMUX_SESSION_PREFIX |
tmux.windows |
RIG_TMUX_WINDOWS |
Impact: Shell profiles, CI/CD pipelines, and container configurations that set these environment variables will stop working until updated.
Migration Script:
# Check for affected environment variables in shell configs
grep -E '^\s*export\s+(NOTES_PATH|CLONE_BASE_PATH|VERBOSE)=' \
~/.bashrc ~/.zshrc ~/.profile ~/.bash_profile 2>/dev/null
# Example fix in .zshrc
# Before:
export NOTES_PATH=~/notes/work
# After:
export RIG_NOTES_PATH=~/notes/workSymptom: Running rig work or rig hack inside an existing tmux session would fail to create configured windows, or create sessions with wrong window layouts.
Root Cause: The TMUX environment variable (set by tmux itself) was being bound to Viper's tmux config key, overwriting the user's tmux window configuration with the socket path string.
Fix: Environment variables now require the RIG_ prefix, preventing pollution from unrelated environment variables like TMUX, TERM, PATH, etc.
- Clone URL parsing tests now call
git.ParseGitHubURLdirectly instead ofrunCloneCommand, eliminating network dependencies and improving reliability - New integration test
TestCreateSession_CreatesAllWindowsverifies tmux sessions are created with all configured windows, catching window creation regressions
- Removed
go-testhook from pre-commit configuration — tests no longer run on every commit, significantly speeding up local development iteration - Pre-commit still runs
go-vetandgo-buildto catch obvious issues - Full test suite runs in CI before merge
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.4.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.4.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.3.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.3.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.3.0/rig_0.3.0_darwin_arm64.tar.gz
tar -xzf rig_0.3.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/After rollback: Revert environment variable changes (RIG_NOTES_PATH → NOTES_PATH) if you updated them for v0.4.0. Note that the tmux configuration corruption bug will return if you run rig commands inside tmux sessions.
This release introduces the rig clone command, enabling structured repository management with automatic worktree workflow support. Repositories are cloned to a consistent ~/src/<owner>/<repo> layout, with SSH URLs automatically configured for bare clone + worktree workflows optimized for multi-branch development.
Release date: 2026-01-06
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.3.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionClone GitHub repositories into a structured directory layout that integrates seamlessly with rig hack and rig work commands.
Usage:
# SSH URL — creates bare repository with worktree workflow
rig clone git@github.com:owner/repo.git
# HTTPS URL — standard git clone
rig clone https://github.com/owner/repo.git
# Shorthand format
rig clone github.com/owner/repoDirectory Structure:
All repositories are cloned to ~/src/<owner>/<repo>:
~/src/
├── thoreinstein/
│ └── rig/ # Bare repo (SSH) or standard clone (HTTPS)
├── golang/
│ └── go/
└── kubernetes/
└── kubernetes/
SSH vs HTTPS Behavior:
| URL Type | Clone Method | Workflow |
|---|---|---|
SSH (git@github.com:...) |
Bare clone | Worktree-based development via rig hack/rig work |
HTTPS (https://github.com/...) |
Standard clone | Traditional branch-based development |
Configuration:
Customize the base path via configuration:
# Set custom base path
rig config set clone.base_path ~/code
# View current setting
rig config get clone.base_pathKey Behaviors:
- Idempotent — Existing repositories are detected and skipped
- SSH optimization — Bare clone + worktree workflow ready for multi-branch development
- Natural integration — Cloned repos work immediately with
rig hackandrig work
# Clone a repository
rig clone git@github.com:thoreinstein/rig.git
# Start work on a ticket (creates worktree)
cd ~/src/thoreinstein/rig
rig work PROJ-1234
# Or start a hack session
rig hack feature-branchAll releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.3.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.3.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.3.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.3.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.2.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.2.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.2.0/rig_0.2.0_darwin_arm64.tar.gz
tar -xzf rig_0.2.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/This release introduces a breaking CLI change and adds automatic repair for bare repository configurations. The init command has been renamed to work to better reflect its purpose—starting work on a ticket, not initializing infrastructure.
Release date: 2026-01-06
brew upgrade thoreinstein/tap/rig
# or for fresh install:
brew install thoreinstein/tap/rig- Download the appropriate archive from the releases page
- Extract and move to your PATH:
tar -xzf rig_0.2.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/- Verify installation:
rig versionThe init command has been renamed to work.
Rationale: "init" implies initialization or setup, but this command starts work on a ticket—creating a worktree, tmux session, and notes. "work" accurately describes the intent.
Before:
init PROJ-1234After:
rig work PROJ-1234Impact: Scripts, shell aliases, and muscle memory that reference init will break.
Bare repositories created with git clone --bare lack the fetch refspec needed for remote tracking. Previously, users had to manually configure this:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"The tool now detects missing fetch refspecs and adds them automatically. This repair is:
- Idempotent — Safe to run repeatedly; existing refspecs are preserved
- Non-fatal — Warns on failure and continues execution
- Transparent — No user action required
Internal changes to improve test reliability:
- Tests now run on an isolated tmux socket (
RIG_TEST_TMUX_SOCKETenvironment variable) TestMainpattern ensures cleanup of test sessions even on failures- Zero risk of test artifacts appearing in user workspace
- Fixed test cleanup by adding
TestMainto terminate tmux sessions after test runs
modernc.org/sqlite: 1.41.0 → 1.42.2
Replace all occurrences of init with rig work:
# One-liner for scripts
sed -i 's/init/rig work/g' ~/.local/bin/my-workflow.sh
# Check shell config files
grep -r "init" ~/.bashrc ~/.zshrc ~/.config/fish/If you have aliases defined:
# Before
alias si="init"
# After
alias sw="rig work"The command is now rig work <ticket>. Tab completion (if configured) will reflect the new command name after upgrade.
All releases are signed with keyless Sigstore. Verify the checksums file signature:
# Download checksums and signature
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.2.0/checksums.txt
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.2.0/checksums.txt.sig
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.2.0/checksums.txt.bundle
# Verify signature
cosign verify-blob \
--bundle checksums.txt.bundle \
--certificate-identity 'https://github.com/thoreinstein/rig/.github/workflows/release.yml@refs/tags/v0.2.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
checksums.txt
# Verify your download against checksums
sha256sum --check checksums.txt --ignore-missingIf you need to revert to v0.1.0:
# Homebrew
brew uninstall rig
brew install thoreinstein/tap/rig@0.1.0
# Manual
curl -LO https://github.com/thoreinstein/rig/releases/download/v0.1.0/rig_0.1.0_darwin_arm64.tar.gz
tar -xzf rig_0.1.0_darwin_arm64.tar.gz
mv rig /usr/local/bin/Remember to revert any script changes (rig work → init) if rolling back.