ops-jrz1/docs/worklogs/2026-01-20-musiclink-matrix-pivot.org

3.2 KiB

MusicLink Integration - Matrix Pivot and Testing

Session Summary

Date: 2026-01-20

Focus Area: Integration of MusicLink bot into ops-jrz1 infrastructure

Accomplishments

  • Pivoted from direct Slack connection (Matterbridge RTM) to Matrix-mediated bridging due to Slack App Socket Mode requirement.
  • Configured `musiclink-matterbridge` to connect to Matrix as `@musiclink:clarun.xyz` via `[matrix]` protocol.
  • Registered `@musiclink:clarun.xyz` and granted Server Admin privileges via Conduwuit console to bypass invite-only restrictions (temporarily/workaround).
  • Successfully joined Matterbridge to the bot testing room `!whU7Geg7JPrBL5wHcW:clarun.xyz`.
  • Verified bot connectivity: MusicLink binary is connected to Matterbridge WebSocket.
  • Enabled outbound posting (`gateway.inout`) for the testing room.
  • Verified posting capability by sending messages (text and image events) to the room via Matrix API using the bot's token.

Key Decisions

Decision 1: Use Matrix as Universal Bus

  • Context: Matterbridge (stable) does not support Slack Socket Mode, which our Slack App requires. `mautrix-slack` (already running) handles Slack <-> Matrix bridging perfectly.
  • Rationale: Instead of fighting Matterbridge's Slack limitations, we connect MusicLink to Matrix. The flow becomes: `Slack User` -> `mautrix-slack` -> `Matrix Room` -> `Matterbridge` -> `MusicLink`.
  • Impact: Solves the connectivity issue without code changes to MusicLink or custom Matterbridge builds.

Decision 2: Admin Privileges for Bot Join

  • Context: The portal room bridging Slack is invite-only. We lacked an easy way to issue an invite from the bridge bot.
  • Rationale: Granted `@musiclink` server admin rights (`user make-admin`) to allow it to join any room, bypassing the need for an explicit invite from the bridge.
  • Impact: Bot successfully joined the room. (Note: Admin rights should be revoked later for least-privilege).

Problems & Solutions

Problem Solution Learning
`not_allowed_token_type` on Slack connection Abandoned direct Slack connection in Matterbridge; switched to Matrix Matterbridge's Slack RTM is incompatible with modern Socket Mode-only apps.
Bot couldn't join invite-only portal room Used `conduwuit` admin console to make bot an admin, then joined via API Admin privileges can bypass join restrictions on some homeservers/configurations.
Posted image links unfurled but didn't load Attempted to upload to Media Repo, but source URLs were flaky (403/404) Content hosting matters; direct uploads to Matrix Media Repo are reliable if the source download works.

Next Steps

  • Verify `MusicLink` logic: Does it correctly process music links sent in the room?

    • Note: Infrastructure works (bot sees message), but bot's external API dependency (idonthavespotify) returned 500.
  • Revoke admin privileges from `@musiclink:clarun.xyz` once it is stably in the required rooms.
  • Resolve git access for `musiclink` flake input (currently using local path).
  • Close related beads tasks.