redmine-cli
redmine-cli is a command-line tool that automates the management of Redmine issues and tickets via the Redmine REST API. It allows users to quickly create, list, view, and edit issues, add comments, and manage issue relationships directly in the terminal. It also supports multi-instance configuration. This tool is suitable for developers and project managers to efficiently perform Redmine operations from the command line, eliminating the need to switch to the web interface.
git clone https://github.com/diskd-ai/redmine-cli.gitBefore / After Comparison
1 组Manually clicking and filling out forms in the web interface to create, view, and update Redmine issues is a cumbersome process, leading to low efficiency, especially when batch processing or quick queries are needed.
Using command-line tools, users can directly and quickly perform Redmine operations in the terminal, such as creating, editing, and commenting on issues, enabling automation scripts, and significantly improving issue management and daily work efficiency.
Redmine CLI
Use the bundled scripts/redmine_cli.py (no external dependencies) to interact with Redmine from the terminal. It reads auth/config from ~/.red/config.json (and optionally ./.red/config.json as an override).
Quick start
- Create a Redmine API key (Redmine UI: My account -> API access key).
- Create
~/.red/config.json(v1 / single-instance format):
{
"api-key": "YOUR_API_KEY",
"editor": "",
"pager": "",
"project": "",
"project-id": 0,
"server": "https://redmine.example.com",
"user-id": 0
}
- Verify connectivity:
python scripts/redmine_cli.py project list --json | head
Multi-instance (--rid) (optional)
If your ~/.red/config.json uses a v2 / multi-server structure (like the reference red-cli), select a server with --rid:
python scripts/redmine_cli.py issue list --rid prod
python scripts/redmine_cli.py issue list --rid 1
Common tasks
List projects (default output is TSV; use --json for automation):
python scripts/redmine_cli.py project list
python scripts/redmine_cli.py project list --json
List issues (uses project-id from config unless --all or issue list all):
python scripts/redmine_cli.py issue list
python scripts/redmine_cli.py issue list --json --limit 10 --page 1
python scripts/redmine_cli.py issue list --query "login fails" --status_id 1 --sort priority
python scripts/redmine_cli.py issue list --issue-urls
python scripts/redmine_cli.py issue list --project # include project column in output
List available projects, trackers, statuses, and priorities (useful before creating issues):
python scripts/redmine_cli.py issue meta
Create an issue (defaults to "Task" tracker; use --tracker to override by name):
python scripts/redmine_cli.py issue create --project-id 1 --subject "New feature request" --json
python scripts/redmine_cli.py issue create --subject "Bug fix" --description "Details here" --json
python scripts/redmine_cli.py issue create --subject "Subtask" --parent-id 123 --json
python scripts/redmine_cli.py issue create --subject "A bug" --tracker Bug --priority-id 3 --json
Get an issue:
python scripts/redmine_cli.py issue view 12345
python scripts/redmine_cli.py issue view 12345 --journals
List all issues across projects:
python scripts/redmine_cli.py issue list all
python scripts/redmine_cli.py issue list --all
List only issues assigned to the current user:
python scripts/redmine_cli.py issue list me
Add a journal note to an issue:
python scripts/redmine_cli.py issue note 12345 -m "Fixed in commit abc123"
python scripts/redmine_cli.py issue note 12345 -m "Customer-visible" --private
python scripts/redmine_cli.py issue note 12345 --message-file ./notes.md
python scripts/redmine_cli.py issue note 12345 --message-file - < ./notes.md
Edit issue fields (subject, description, status, priority, tracker, parent, assigned-to):
python scripts/redmine_cli.py issue edit 12345 --description "New description"
python scripts/redmine_cli.py issue edit 12345 --description-file ./description.md
python scripts/redmine_cli.py issue edit 12345 --subject "Renamed" --status-id 2
python scripts/redmine_cli.py issue edit 12345 --parent-id 100 # make it a subtask
python scripts/redmine_cli.py issue edit 12345 --assigned-to-id 5 --priority-id 3
Manage issue relations (relates, blocks, duplicates, precedes, follows):
python scripts/redmine_cli.py issue relate add 12345 67890 # relates (default)
python scripts/redmine_cli.py issue relate add 12345 67890 --type blocks # 12345 blocks 67890
python scripts/redmine_cli.py issue relate list 12345 # list relations
python scripts/redmine_cli.py issue relate list 12345 --json
python scripts/redmine_cli.py issue relate remove 42 # delete by relation id
Update/remove an existing comment (journal):
- Find the journal id in
issue view --journalsoutput:issue.journals[].id - Update or remove:
python scripts/redmine_cli.py issue comment update 5993 -m "Updated comment text"
python scripts/redmine_cli.py issue comment update 5993 --message-file ./comment.md
python scripts/redmine_cli.py issue comment remove 5993
Show current user info:
python scripts/redmine_cli.py user me
Troubleshooting
HTTP 401/403: API key missing/invalid, REST API disabled, or insufficient permissions.HTTP 404: wrong base URL (ensure it is the Redmine root, not a sub-path like/projects).- Config not found: ensure
~/.red/config.jsonexists and is valid JSON.
References
- Redmine REST API notes (endpoints, payloads, filters):
references/rest-api.md
User Reviews (0)
Write a Review
No reviews yet
Statistics
User Rating
Rate this Skill