Redmine integration
The Redmine integration connects Speedwave to self-hosted or managed Redmine instances. Claude can inspect issue hierarchies, register time logs, manage journal entries, link issue dependencies, and coordinate project planning workflows.
Configuration architecture and ID mapping
Section titled “Configuration architecture and ID mapping”Redmine runs in an isolated worker container. Credentials and instance mappings reside in ~/.speedwave/tokens/<project>/redmine/:
Directory~/.speedwave/tokens/<project>/redmine/
- api_key
- config.json
The integration uses an API access key rather than user passwords. Because Redmine instances assign dynamic numerical identifiers to issue trackers, statuses, priorities, and time activities, config.json stores deterministic semantic mappings (e.g. status_in_progress -> 2, tracker_bug -> 1).
Descriptions, notes, and journal entries are formatted in Textile syntax. Speedwave sanitizes markup inputs prior to dispatch, stripping insecure HTML elements.
Failed requests execute automatic retries up to 3 times with exponential backoff delays (2s, 4s, 8s).
Semantic mapping keys
Section titled “Semantic mapping keys”| Category | Canonical identifier keys |
|---|---|
| Status | status_new, status_in_progress, status_resolved, status_feedback, status_closed, status_rejected |
| Priority | priority_low, priority_normal, priority_high, priority_urgent, priority_immediate |
| Tracker | tracker_bug, tracker_feature, tracker_task, tracker_support |
| Activity | activity_design, activity_development, activity_testing, activity_documentation, activity_support, activity_management, activity_devops, activity_review |
Tool reference
Section titled “Tool reference”The Redmine worker exposes 23 specialized tools:
| Tool name | Description |
|---|---|
listIssueIds | Query issue identifiers with filters for project, status, tracker, priority, and assignee. |
getIssueFull | Retrieve comprehensive issue metadata including custom fields, relations, and history. |
searchIssueIds | Search issues using text keywords. |
createIssue | Author new issues specifying tracker, status, priority, assignee, and parent IDs. |
updateIssue | Modify issue attributes and append journal notes in a single atomic call. |
commentIssue | Append discussion notes (journal entries) to an issue. |
listJournals | Retrieve history logs and comments for an issue. |
updateJournal | Edit existing journal note text. |
deleteJournal | Permanently remove journal entries. |
listTimeEntries | Query logged work hours by issue, user, project, or date interval. |
createTimeEntry | Log billable or non-billable work hours against issues or projects. |
updateTimeEntry | Update logged hours, activity classifications, or comments. |
listUsers | List Redmine users or project membership rosters. |
resolveUser | Resolve usernames or me shortcuts to canonical user IDs. |
getCurrentUser | Retrieve authenticated user account profile metadata. |
listProjectIds | Enumerate accessible project identifiers. |
getProjectFull | Retrieve full project configuration (trackers, categories, modules). |
searchProjectIds | Search projects by name or slug. |
listRelations | Enumerate issue dependency relations. |
createRelation | Create issue relations (blocks, precedes, relates, duplicates, etc.). |
deleteRelation | Permanently remove an issue relation link. |
getMappings | Retrieve active status, tracker, and activity mapping tables. |
getConfig | Retrieve active Redmine host URL and project bindings. |
Configuration workflow
Section titled “Configuration workflow”- In Redmine, navigate to My account and copy the API access key.
- Open the Redmine integration card in the Desktop application and enter your Redmine URL and API Key. Click Validate.
- Confirm mapped project scope and review detected ID mappings for statuses and trackers.
- Save the configuration to initialize the worker container.
Security boundaries
Section titled “Security boundaries”The Redmine worker mounts only its dedicated token directory in read-only mode. All API calls pass through the stateless Tool Gateway. If a project identifier is fixed in config.json, the worker rejects mutations outside that scope. See Credentials management for details.