Homebrew (macOS & Linux)
brew tap aarondpn/tap
brew install redmine
This also installs shell completions for bash, zsh, and fish.
Quick Install Script
curl -fsSL https://raw.githubusercontent.com/aarondpn/redmine-cli/main/install.sh | bash
Auto-detects your OS and architecture, downloads the latest release with checksum verification, and installs to ~/.local/bin. If a recent GitHub CLI is installed and logged in, it also verifies the release's build attestation with gh attestation verify and refuses to install if that fails. Without such a gh, it installs after the checksum check only and prints a warning with the command to verify the release yourself. Set REDMINE_CLI_VERSION=<tag> to install a specific release; releases older than v2.11.2 have no attestations, so pinning one of them with a logged-in gh also needs REDMINE_CLI_SKIP_ATTESTATION=1. See the installation docs for details.
Install with Go
go install github.com/aarondpn/redmine-cli/v2/cmd/redmine@latest
Manual Download
Grab the latest release for your platform from GitHub Releases:
Updating
redmine update
Downloads the latest release and verifies its SHA256 checksum and its GitHub artifact attestation (SLSA provenance from this repository's release workflow, verified via Sigstore) before replacing the binary. The update is refused if either check fails; --skip-attestation falls back to checksum-only verification with a warning.
Getting Started
# Configure your Redmine server and API key
redmine auth login
# List issues
redmine issues list
# View a specific issue
redmine issues view 123
# Log time
redmine time log
# Script it: JSON output filtered with the built-in --jq
redmine issues list --project myproject --jq '.[].id'
redmine issues get 123 --jq '.status.name'
Run redmine --help to see all available commands.
-o json prints machine-readable JSON, and -q/--jq <expression> filters it (strings are printed raw, everything else as JSON). Errors always go to stderr; in JSON mode they are a single-line {"error": {...}} envelope on the last line of stderr, stdout stays empty and the exit code is non-zero. See Output formats.
Using with AI Agents
redmine-cli ships an Agent Skill (the open SKILL.md standard, supported by 35+ agents) and a built-in MCP server. Both are vendor-neutral - pick the one-liner that matches your tool:
The skill teaches the agent the non-obvious parts of the CLI (output formats, name resolution, pagination, common workflows). The MCP server exposes the same operations as typed tool calls, read-only by default, with per-group / per-tool allow- and deny-lists.
Full configuration, host-specific snippets (Claude Desktop, Cursor, Zed, VS Code), and write-tool gating: see the AI Agent Integration guide.
Development
Local E2E testing against a real Redmine instance (Docker, supported on Redmine 4.2, 5.1, 6.1, 7.0): see e2e/README.md.