Skip to main content

Power Tools

These tools transform your Matrix experience from basic chat to a powerful communication platform.

Admin & Server Tools

synadm - CLI Admin Swiss Army Knife

synadm is a command-line admin tool for Synapse that makes server administration effortless.

Note: synadm has migrated to Codeberg. GitHub repo will be archived.

Installation:

pipx install synadm

# First-time setup
synadm config
# Enter: homeserver URL, admin access token

User Management:

# List and search users
synadm user list # All users
synadm user list --name "john" # Search by name
synadm user details @user:server # Full user info

# Modify users
synadm user modify @user:server --admin # Grant admin
synadm user modify @user:server --deactivate # Deactivate
synadm user password @user:server # Reset password

# Get access token to act as user (24h expiry)
synadm user login @user:server

# Shadow-ban (user won't know they're banned)
synadm user shadow-ban @spammer:server

# Redact all messages from a user (NEW 2025)
synadm user redact @spammer:server --rooms '!room1:server' '!room2:server'

Room Management:

# List rooms with filters
synadm room list # All rooms
synadm room list --empty # Empty rooms only (NEW)
synadm room list --not-empty # Non-empty rooms
synadm room list --name "general" # Search by name

# Room details and members
synadm room details !roomid:server
synadm room members !roomid:server

# Cleanup
synadm room delete !roomid:server # Delete room
synadm room purge-empty # Purge all empty rooms

Media Management:

# List media
synadm media list @user:server # User's uploads
synadm media list-remote # Cached remote media

# Cleanup
synadm media purge-remote 30 # Purge remote media >30 days
synadm media delete mxc://server/id # Delete specific media

# Quarantine (NEW)
synadm media quarantine -U mxc://server/media-id
synadm media unquarantine -U mxc://server/media-id

Server Info:

synadm version                        # Synapse version
synadm server-notice send @user:server "Important message"

Why It's Powerful: Direct API access without web interfaces. Script server maintenance, automate cleanups, manage users in bulk. Works over SSH, perfect for headless servers.

Support: #synadm:peek-a-boo.at

Synapse Admin UI

synapse-admin provides a web-based admin interface.

Features:

  • User management with search and bulk operations
  • Room administration and purging
  • Media management
  • Registration token creation
  • Server statistics

Quick Deploy:

# docker-compose.yml
synapse-admin:
image: ghcr.io/awesome-technologies/synapse-admin:latest
ports:
- "8080:80"

Moderation Tools

Draupnir - Next-Gen Moderation

Draupnir is the modern successor to Mjolnir with significant improvements.

Why Upgrade from Mjolnir:

  • No commands needed - Ban a user in any protected room, Draupnir prompts to add to policy list
  • Instant response - No waiting for homeserver data before applying bans
  • Room state caching - Fast startup even on slow connections
  • Active development - v2.3.0 (May 2025) added major features

New in v2.3.0:

✓ Takedowns - Stronger than bans for illegal content
✓ Auto-suspension - Automatically suspend matching users
✓ Block invitations - Preemptively block bad actors
✓ synapse-http-antispam support

Quick Setup:

# Create control room (private, unencrypted)
# Invite @draupnir:yourserver.com
# Run initial setup
!draupnir list create my-coc code-of-conduct-ban-list

Distributed Moderation: Subscribe to community-curated ban lists:

!draupnir watch #matrix-org-coc-bl:matrix.org

Support: #draupnir:matrix.org


Automation & Bots

Maubot - Plugin-Based Bot System

Maubot lets you run multiple bot functions from a single instance. No coding required for most plugins.

Requirements: Linux, Python 3.10+, a Matrix account for the bot

Must-Have Plugins:

PluginFunctionPower Level
reminderReminders, recurring events, agendas⭐⭐⭐
githubGitHub webhooks + commands⭐⭐⭐
rssRSS/Atom feed subscriptions⭐⭐⭐
ntfyPush notifications via ntfy⭐⭐⭐
translateGoogle/DeepL translation⭐⭐
supportportalSupport ticket system⭐⭐⭐
gladiaVoice message transcription⭐⭐
diceDice roller + calculator⭐⭐
mediaGiphy/Tenor GIF search⭐⭐
reactbotAuto-reactions & responses⭐⭐
seds/typo/fix/ corrections

AI/LLM Plugins:

# LLM plugin capabilities:
- OpenAI (GPT-4, GPT-4o)
- Anthropic (Claude)
- Text-to-speech
- Speech-to-text (Whisper)
- Image generation (DALL-E)

Example commands:

!ai summarize the last 50 messages
!ai explain this error: [paste]
!ai translate to Spanish: Hello world

Admin Plugins:

PluginPurpose
space-adminManage Spaces, bulk user operations
registration-tokensCreate/manage Synapse registration tokens
thread-redactAuto-delete thread replies
welcomeWelcome messages for new room members

Social Media:

  • Reddit/Instagram/YouTube link previews
  • Twitch live notifications
  • Fediverse feed forwarding
  • Spotify link conversion

Full Plugin List: plugins.mau.bot

Setup Guide: coffeebank.github.io/coffee-maubot

Hookshot - Developer Integrations

Hookshot connects Matrix to development tools.

Supported Services:

  • GitHub (issues, PRs, commits, actions, workflows)
  • GitLab (issues, MRs, pipelines)
  • JIRA (issues, transitions)
  • RSS/Atom feeds
  • Generic webhooks
  • NEW: OpenProject support

GitHub Commands (prefix: !gh):

# Issue management
!gh create "Bug: Login fails" # Create issue
!gh close 123 # Close issue
!gh assign 123 @developer # Assign issue

# Workflows
!gh workflow run deploy.yml # Trigger workflow
!gh workflow run build.yml --input env=prod

# PRs and commits
!gh prs # List open PRs
!gh pr 456 # View PR details
!gh commits # Recent commits

GitLab Commands (prefix: !gitlab):

!gitlab issue new "Fix database"        # Create issue
!gitlab issue close 42 # Close issue
!gitlab mrs list # List merge requests
!gitlab pipeline status # Check CI status

RSS Feeds:

!hookshot feed https://blog.example.com/rss

Webhook Templates: Write custom JavaScript templates for rich message formatting:

({
body: `**${data.event}**: ${data.message}`,
msgtype: data.level === "error" ? "m.notice" : "m.text"
})

2025 Updates:

  • E2E encryption stable in production
  • Secure JIRA Cloud webhooks
  • Node 24 support
  • Matrix v12 room support
  • Follows room upgrades automatically

📖 Full Hookshot Guide →


Git & CI/CD Integration

GitHub Actions → Matrix

Send workflow notifications directly from GitHub Actions:

Matrix Notify Action (Recommended):

.github/workflows/ci.yml
notify:
if: always()
runs-on: ubuntu-latest
needs: [build, test, lint]
steps:
- uses: Cadair/matrix-notify-action@main
with:
matrix_token: ${{ secrets.MATRIX_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
homeserver: 'https://matrix.org'
roomid: '!roomId:matrix.org'
summarise_success: true

Features:

  • Overall workflow status with emoji
  • Per-job status reactions
  • Configurable job filtering
  • Link to workflow run

Simple Message Action:

- uses: s3krit/matrix-message-action@v1
with:
homeserver: matrix.org
token: ${{ secrets.MATRIX_TOKEN }}
channel: '!roomId:matrix.org'
message: "Build ${{ job.status }} on ${{ github.ref_name }}"

GitLab CI → Matrix

.gitlab-ci.yml
notify_matrix:
stage: .post
script:
- |
curl -X POST "https://matrix.server/_matrix/client/r0/rooms/$ROOM/send/m.room.message" \
-H "Authorization: Bearer $MATRIX_TOKEN" \
-d "{\"msgtype\":\"m.text\",\"body\":\"Pipeline $CI_PIPELINE_STATUS for $CI_PROJECT_NAME\"}"
when: always

ChatOps Workflow

With Hookshot, manage your entire dev workflow from Matrix:

┌─────────────────────────────────────────────────────────┐
│ Developer workflow from Matrix │
├─────────────────────────────────────────────────────────┤
│ 1. !gh create "Bug: API timeout" → Issue #123 created │
│ 2. !gh assign 123 @alice → Assigned │
│ 3. (Alice pushes fix, opens PR) │
│ 4. [Hookshot]: PR #456 opened by alice │
│ 5. !gh approve 456 → PR approved │
│ 6. [Hookshot]: PR #456 merged │
│ 7. !gh workflow run deploy.yml → Deploy triggered │
│ 8. [Hookshot]: Workflow succeeded ✅ │
└─────────────────────────────────────────────────────────┘

Room Strategy

#dev-commits:server    - Push notifications (high volume)
#dev-prs:server - PR activity
#dev-issues:server - Issue tracking
#ci-alerts:server - Build failures only
#deployments:server - Production deploys

Terminal & CLI Tools

gomuks - Terminal Matrix Client

gomuks is a powerful terminal Matrix client.

Features:

  • Full E2EE support with verification
  • Media upload and inline links
  • Power level management (/powerlevel)
  • Graphical file picker (requires zenity)
  • Light and dark terminal themes

New Architecture (2025):

  • Backend + separate frontends (terminal, web)
  • WebSocket RPC API for custom clients
  • archivemuks - Export room history to JSON

Installation:

# Go install
go install maunium.net/go/gomuks@latest

# Or download binary from releases

Key Commands:

/join #room:server     - Join room
/powerlevel @user 50 - Set power level
/upload - Upload file (opens picker)
/copy - Copy message content
/toggle inlineurls - Enable clickable links

matrix-commander - Scripting CLI

matrix-commander is perfect for scripting and automation. E2EE is enabled by default and cannot be disabled.

Latest: v8.0.5 (2025-06-17)

Basic Usage:

# Send message
matrix-commander -m "Build complete!" -r '!roomid:server'

# Send to multiple rooms
matrix-commander -m "Alert!" -r '!room1:server' -r '!room2:server'

# Send file
matrix-commander --file ./report.pdf -r '!roomid:server'

# Send image with caption
matrix-commander --image ./screenshot.png -m "Bug reproduction"

Scripting Integration:

#!/bin/bash
# CI notification script

STATUS=$1
REPO=$2

if [ "$STATUS" = "success" ]; then
MSG="✅ Build passed for $REPO"
else
MSG="❌ Build FAILED for $REPO"
fi

matrix-commander -m "$MSG" -r '!builds:server'

Monitoring & Listening:

# Listen forever and pipe to script
matrix-commander --listen forever --room '!room:server' | ./process.sh

# Listen once (single message)
matrix-commander --listen once --room '!room:server'

# Tail mode (like tail -f)
matrix-commander --listen tail --room '!room:server'

Admin Features:

# Invite user to room
matrix-commander --room-invite '!room:server' --user '@user:server'

# Kick user
matrix-commander --room-kick '!room:server' --user '@user:server'

# Set room name
matrix-commander --room-set-name '!room:server' "New Room Name"

# Create room
matrix-commander --room-create --name "My Room" --alias "#myroom:server"

Cron Examples:

# /etc/cron.d/matrix-notifications

# Morning standup reminder
0 9 * * 1-5 user matrix-commander -m "☕ Standup in 15 minutes" -r '!team:server'

# Daily backup status
0 6 * * * user /scripts/backup.sh && matrix-commander -m "✅ Backup complete"

# Disk space alert
*/30 * * * * user [ $(df / --output=pcent | tail -1 | tr -d ' %') -gt 90 ] && \
matrix-commander -m "⚠️ Disk usage over 90%!" -r '!alerts:server'

TUI Mode:

# Interactive terminal interface
matrix-commander-tui

Rust Version: There's also matrix-commander-rs for Rust enthusiasts (minimal features currently).


Client Power Features

Element Web Shortcuts

Press Ctrl/Cmd + / to see all shortcuts. Key ones:

ShortcutAction
Ctrl + KJump to room (quick switcher)
Ctrl + Shift + UUpload file
Shift + Page UpJump to last unread
Ctrl + DMute mic (in call)
Ctrl + EMute camera (in call)
Edit last message

Slash Commands

/me <action>          - Emote action
/shrug - Append ¯\_(ツ)_/¯
/tableflip - Append (╯°□°)╯︵ ┻━┻
/lenny - Append ( ͡° ͜ʖ ͡°)

/invite @user:server - Invite user
/kick @user - Kick user
/ban @user - Ban user
/op @user 50 - Set power level

/topic New topic - Change room topic
/nick New Name - Change display name
/myroomavatar url - Set room-specific avatar

/markdown on|off - Toggle markdown
/devtools - Open developer tools

SchildiChat Exclusive Features

SchildiChat adds features Element lacks:

  • Mark as unread - MSC2867 support
  • Unread count for muted chats - Different color display
  • URL previews in E2EE - Optional setting
  • Open at first unread - Jump to unread on room open
  • Swipe between spaces - Gesture navigation
  • Don't auto-mark as read - Privacy feature
  • Power level colors - Visual user hierarchy

FluffyChat Unique Features

FluffyChat offers:

  • Voice messages - Record and send audio
  • Location sharing - Send your position
  • Material You design - Modern Android styling
  • Custom emotes/stickers - Full pack support
  • Polls and threads - Full support since v2.3.0
  • Text reactions - Long press → /react command

Performance Power-Ups

Sliding Sync

Enable for instant app launch and sync:

# homeserver.yaml (Synapse 1.90+)
experimental_features:
msc3575_enabled: true

Benefits:

  • Instant login (no initial sync wait)
  • Fast room switching
  • Efficient on mobile data
  • Required for Element X

Local DNS Caching

Synapse makes many DNS queries. Speed up with local caching:

# Install dnsmasq
sudo apt install dnsmasq

# /etc/dnsmasq.conf
cache-size=10000

PostgreSQL Tuning

# postgresql.conf for Matrix
shared_buffers = 256MB
effective_cache_size = 768MB
work_mem = 16MB
maintenance_work_mem = 128MB
random_page_cost = 1.1
effective_io_concurrency = 200

Prometheus + Grafana Monitoring

# homeserver.yaml
enable_metrics: true

Import the Synapse Grafana dashboard for real-time insights.


Quick Reference

NeedTool
CLI server adminsynadm
Web server adminsynapse-admin
ModerationDraupnir
Automation botsMaubot
Developer webhooksHookshot
Terminal clientgomuks
Scriptingmatrix-commander
Classic IM feelSchildiChat
Mobile-friendlyFluffyChat
Next-gen mobileElement X

Install these tools and unlock your Matrix superpowers!