A small terminal CLI for managing Redmine issues from the command line.
Bootstrap the toolchain (one-time, installs the Python and uv versions pinned in mise.toml):
mise installInstall rmk globally:
uv tool install .Or for development (uses the local virtualenv):
uv sync --all-extras --group dev
uv run rmk --helpCopy .env.example to .env and fill in your Redmine API key:
cp .env.example .env
$EDITOR .env| Variable | Required | Default |
|---|---|---|
REDMINE_API_KEY |
yes | — |
REDMINE_BASE_URL |
no | https://redmine.myapp.com |
REDMINE_PROJECT_ID |
no | 211 |
You can find your API key in Redmine under Account → API access key.
List issues assigned to you (open / in-progress / reopened, most recent first).
rmk list
rmk list --limit 50
rmk list --status 1,2,4,5Show full issue details. If the issue has image attachments, you'll be prompted to download and open them in your default image viewer.
rmk show 1234Downloaded images are saved to ./images/<issue_id>_<filename>.
Assign an issue to yourself. Status unchanged.
Set an issue to In Progress. Assignee unchanged.
Set an issue to Open. Assignee unchanged.
Mark an issue Resolved and reassign it back to its original author.
Mark an issue Rejected and reassign it back to its original author.
| Code | Meaning |
|---|---|
| 0 | success |
| 1 | unexpected error (re-run with --verbose for traceback) |
| 2 | configuration error (e.g., missing REDMINE_API_KEY) |
| 4 | issue not found |
| 5 | authentication failed |
| 6 | network error |
| 7 | Redmine API error |
mise install # tool versions (one-time)
uv sync --all-extras --group dev # python deps
uv run pytest # tests
uv run ruff check . # lint
uv run black --check . # format check
uv run isort --check-only . # import order checkCI runs all of the above on every push and pull request.