Merge the redmine-cli work from the EnableAI repo into KNEL-AIMiddleware as the canonical home for AI middleware. This is a standalone CLI (python-redmine 2.5.0) that lists, shows, creates, updates, and closes Redmine issues via docker run. Complements the existing mcp-redmine MCP server (protocol-native) with a direct-invocation tool for interactive use. Verified end-to-end against projects.knownelement.com: whoami, projects, statuses, list, show, create, update, and close all tested successfully. Also records host-cleanliness conventions (docker/tea only on host; custom images to Gitea registry) in AGENTS.md, and adds a CLI Tools section to STATUS.md.
3.5 KiB
3.5 KiB
redmine-cli
A Docker container that lets an AI agent (or a human) access, edit, and close
Redmine issues through the Redmine REST API. Built on the
python-redmine library with a small command-line
wrapper.
Requirements
- Docker on the host.
- A Redmine instance with REST web services enabled (Administration → Settings → API → Enable REST API).
- A Redmine API key for the user the agent will act as (My account → API access key → Show / Reset).
Configuration
Copy the env template and fill in real values (the .env is gitignored):
cp .env.example .env
# then edit .env:
# REDMINE_URL=https://your-redmine.example.com
# REDMINE_API_KEY=abc123...
Build
docker build -t kneldevstack-aimiddleware-redmine-cli .
A prebuilt image is also available in the Gitea registry:
git.knownelement.com/reachableceo/redmine-cli:latest
Usage
Via the repo wrapper (loads .env automatically)
bin/redmine whoami
bin/redmine list --assigned-to-me
bin/redmine show 123
bin/redmine close 123 --notes "work complete"
Via docker directly (from the repo root)
docker run --rm --env-file .env kneldevstack-aimiddleware-redmine-cli whoami
docker run --rm --env-file .env kneldevstack-aimiddleware-redmine-cli list --assigned-to-me
Commands
| Command | Description |
|---|---|
whoami |
Show the authenticated user (also a connection test). |
projects |
List projects (id, identifier, name). |
statuses |
List issue statuses and which are "closed". |
list (ls) |
List issues. Filters below. |
show <id> |
Show full issue detail incl. note history. |
create |
Create an issue (--project, --subject, ...). |
update <id> |
Update an issue (status, notes, assignee, done, ...). |
close <id> |
Close an issue (first closed status, done ratio 100%). |
list filters
-m, --assigned-to-me— only issues assigned to the current user-a, --assigned-to <id>— filter by assignee user id-p, --project <id|identifier>— filter by project-s, --status <name|id|open|closed>— filter by status-l, --limit <n>— max results (default 50)--sort <spec>— Redmine sort spec (defaultpriority:desc,updated_on:desc)
update / create options
--status <name|id>— status name (case-insensitive) or numeric id-n, --notes <text>— add a journal note-a, --assigned-to <id>— assignee user id--done-ratio <0-100>— percent complete--subject <text>— change the subject (update/create)--priority <id>— priority id-d, --description <text>— description (createonly)-t, --tracker <id>— tracker id (createonly)
Environment variables
| Variable | Required | Description |
|---|---|---|
REDMINE_URL |
yes | Base URL of the Redmine instance. |
REDMINE_API_KEY |
yes | API key of the acting user. |
REDMINE_CLI_IMAGE |
no | Override the image tag used by bin/redmine (default git.knownelement.com/reachableceo/redmine-cli:latest). |