name: chatto-platform label: Chatto kind: platform version: 1.0.0 description: > Chatto gateway adapter for Hermes Agent. Connects to a Chatto server (cloud-hosted or self-hosted team chat) and relays messages between rooms/DMs and the Hermes agent. Uses the Chatto ConnectRPC API (JSON over HTTP) for outbound messages and the Chatto realtime WebSocket protocol (binary protobuf) for inbound events. Nothing to install: chattolib[realtime] and its dependencies are vendored into the plugin. author: Paul Klumpp requires_env: - name: CHATTO_BASE_URL description: "Base URL of the Chatto server (e.g. https://chat.example.com) leave blank for ChattoHQ (https://chat.chatto.run)" prompt: "Chatto server Base URL" password: false - name: CHATTO_LOGIN description: "Chatto login (username); leave blank only when you authenticate with CHATTO_TOKEN instead" prompt: "Chatto login" password: false - name: CHATTO_PASSWORD description: "Chatto password; leave blank only when you authenticate with CHATTO_TOKEN instead" prompt: "Chatto password" password: true optional_env: - name: CHATTO_TOKEN description: "Existing bearer token — alternative to CHATTO_LOGIN + CHATTO_PASSWORD (default: none)" prompt: "Existing bearer token (or empty)" password: true - name: CHATTO_HOME_CHANNEL description: "Room ID for cron / notification delivery (default: none — context-less deliveries are not sent without it)" prompt: "Home room ID (or empty)" password: false # Asked before CHATTO_ALLOWED_USERS: a "yes" here makes the user list moot, # and the two are mutually exclusive (hermes_validate_config rejects both). - name: CHATTO_ALLOW_ALL_USERS description: "Allow any Chatto user to talk to the agent (default: false)" prompt: "Allow all users? (true/false)" password: false - name: CHATTO_ALLOWED_USERS description: "Comma-separated Chatto logins allowed to talk to the agent (default: none — denies everyone unless CHATTO_ALLOW_ALL_USERS=true)" prompt: "Allowed users (comma-separated)" password: false - name: CHATTO_REQUIRE_MENTION_ROOMS description: "Comma-separated room IDs where the bot answers only when addressed (@name, @all or @here); rooms on neither this nor CHATTO_OPTIONAL_MENTION_ROOMS stay silent — read-only, never seeded into context, never answered. DMs always get a response. (default: none — the listed rooms answer only mentions)" prompt: "Mention-required room IDs (comma-separated)" password: false - name: CHATTO_AUTO_THREAD description: "Auto-create threads for replies in rooms (default: true). Set false to reply in the room timeline." prompt: "Auto-thread replies? (true/false)" password: false - name: CHATTO_OPTIONAL_MENTION_ROOMS description: "Comma-separated room IDs where the bot answers every message, addressed or not; rooms on neither this nor CHATTO_REQUIRE_MENTION_ROOMS stay silent — read-only, never seeded into context, never answered. (default: none — the listed rooms answer everything)" prompt: "Free-response room IDs (comma-separated)" password: false - name: CHATTO_REACTIONS description: "Add 👀/✅/❌/🚫 reactions to messages during processing (default: true)" prompt: "Enable message reactions? (true/false)" password: false - name: CHATTO_EDIT_DISPATCH description: "Treat edits of chat messages as corrections: a message being processed is restarted with the edited text, a message the bot ignored (e.g. missing @mention) is re-checked against its new text. Already-answered messages stay answered, and edits older than CHATTO_EDIT_WINDOW are ignored. (default: true)" prompt: "Process message edits as corrections? (true/false)" password: false - name: CHATTO_EDIT_WINDOW description: "How long after posting an edit may still land, in seconds; older edits are ignored (default: 300)" prompt: "Edit window in seconds (or empty for 300)" password: false