Chat Commands
MindRoom provides chat commands that users can type in any Matrix room where MindRoom agents are present.
Commands start with ! and are handled by the router agent.
Quick Reference
| Command | Description |
|---|---|
!help [topic] |
Get help on commands or a specific topic |
!hi |
Show the welcome message again |
!schedule <task> |
Schedule a task or reminder |
!list_schedules |
List pending scheduled tasks |
!cancel_schedule <id> |
Cancel a scheduled task |
!edit_schedule <id> <task> |
Edit an existing scheduled task |
!config <operation> |
View and modify configuration |
!skill <name> [args] |
Run a skill by name |
Who Handles Commands
The router handles all commands exclusively. Even in single-agent rooms, commands are always processed by the router, not the agent. Commands work in both main room messages and within threads.
Voice messages that contain commands (e.g., spoken !schedule) are recognized after transcription and processed the same way.
Permission Behavior
Commands are subject to the same authorization rules as normal messages.
The sender must be authorized to interact with agents in the room (via global_users, room_permissions, or default_room_access).
See Authorization for details.
For !config set, only the user who requested the change can confirm or cancel it via reactions.
Pending config changes expire after 24 hours.
Commands
!help
Display available commands or get detailed help on a specific topic.
Topics: schedule, skill, config, list_schedules, inspect_schedules, cancel, cancel_schedule, edit, edit_schedule
!hi
Show the welcome message for the current room, listing available agents, their roles and tools, and quick-start instructions.
!schedule
Schedule a one-time or recurring task using natural language. Tasks run in the thread where they were created.
One-time tasks:
Recurring tasks:
!schedule Every hour, @shell check server status
!schedule Daily at 9am, @finance market report
!schedule Weekly on Friday, @analyst prepare weekly summary
Conditional workflows (polling-based):
Conditional requests are converted to recurring cron-based polling schedules. These are periodic checks, not real event subscriptions.
!schedule If I get an email about "urgent", @phone_agent call me
!schedule When Bitcoin drops below $40k, @crypto_agent notify me
Include @agent_name in your schedule to target specific agents.
The scheduler validates that mentioned agents are available in the room before creating the task.
Schedules use the timezone from config.yaml (defaults to UTC).
See Scheduling for full details.
!list_schedules
List pending scheduled tasks in the current room or thread.
Aliases: !listschedules, !list-schedules, !list_schedule, !listschedule, !list-schedule, !inspect_schedules, !inspectschedules, !inspect-schedules, !inspect_schedule, !inspectschedule, !inspect-schedule
!cancel_schedule
Cancel a specific scheduled task or all tasks in the room.
Use !list_schedules to find task IDs.
Aliases: !cancelschedule, !cancel-schedule
!edit_schedule
Replace an existing scheduled task with new timing and content.
The task description is re-parsed to update timing and content. Schedule type cannot be changed (one-time to recurring or vice versa) -- cancel and recreate instead.
Aliases: !editschedule, !edit-schedule
!config
View and modify MindRoom configuration from chat. Changes are validated against the Pydantic config schema before applying.
View configuration:
Modify configuration:
!config set agents.analyst.display_name "Research Expert"
!config set models.default.id gpt-5.4
!config set defaults.markdown false
!config set timezone America/New_York
Path syntax:
- Use dot notation to navigate nested config (e.g.,
agents.analyst.role) - Arrays use indexes (e.g.,
agents.analyst.tools.0for first tool) - String values with spaces must be quoted
Confirmation flow
When you use !config set, MindRoom:
- Validates the proposed change against the config schema
- Shows a preview with the current and new values
- Adds reaction buttons to the preview message
- Waits for the requester to react with ✅ (confirm) or ❌ (cancel)
Only the user who requested the change can confirm or cancel it. Pending changes are persisted in Matrix room state and survive restarts. Unconfirmed changes expire after 24 hours.
Changes are saved to config.yaml immediately on confirmation and take effect for new agent interactions.
!skill
Run a user-invocable skill by name.
Examples:
Agent resolution:
- If the message includes a Matrix mention of an agent, that agent handles the skill. The message must still start with
!skill. - If only one agent in the room has the skill enabled, it handles the request.
- If multiple agents have the skill, you must mention one to disambiguate.
Rules:
- The skill must be in the agent's
skillsallowlist anduser-invocablemust betrue. - If
command-dispatch: toolis set in the skill's frontmatter, the tool runs directly. - If
disable-model-invocation: trueand no tool dispatch is configured, the command fails.
See Skills for skill configuration details.
Stop Button
MindRoom supports cancelling in-progress responses via a reaction-based stop button, not a chat command.
When defaults.show_stop_button is true (the default), MindRoom adds a 🛑 reaction to the agent's message while it is generating.
React with 🛑 on the message to cancel the response.
The agent finalizes the partial text with **[Response cancelled by user]**.
The stop button only works on messages currently being generated. Only non-agent users can trigger cancellation — agent reactions are ignored.
See Streaming — Cancellation for details on how cancelled responses are finalized.
Unknown Commands
Any message starting with ! that does not match a known command returns an error message suggesting !help.