Skip to content

Connectors

dEXploarer edited this page Mar 27, 2026 · 3 revisions

Connectors

Connectors are messaging platform integrations. They are configured under the connectors key in ~/.milady/milady.json (the legacy channels key is still accepted but deprecated). Each connector entry is keyed by a connector ID (e.g. "telegram", "discord") and accepts a ConnectorConfig object. Common fields are documented below.

Telegram

Requires @elizaos/plugin-telegram (included by default).

{
  "connectors": {
    "telegram": {
      "botToken": "123456:ABC-...",
      "dmPolicy": "pairing"
    }
  }
}

You can also set TELEGRAM_BOT_TOKEN in ~/.milady/.env.

Discord

Requires @elizaos/plugin-discord (included by default).

{
  "connectors": {
    "discord": {
      "token": "Bot TOKEN_HERE",
      "dmPolicy": "pairing"
    }
  }
}

WhatsApp (Baileys)

Uses @whiskeysockets/baileys. WhatsApp credentials are flushed on agent stop and re-established on restart via QR code pairing.

{
  "connectors": {
    "whatsapp": {
      "enabled": true
    }
  }
}

Twitch

{
  "connectors": {
    "twitch": {
      "enabled": true
    }
  }
}

Common connector fields

Field Description
enabled Set false to disable without removing config
dmPolicy DM access: "open" (all), "pairing" (paired users), "closed" (no DMs)
configWrites Allow connector to write config on events

Message queue and debounce

The messages.queue config controls how rapid inbound messages are handled:

{
  "messages": {
    "queue": {
      "mode": "steer",
      "debounceMs": 500,
      "cap": 10,
      "drop": "old",
      "byChannel": {
        "telegram": "steer",
        "discord": "queue"
      }
    }
  }
}

Queue modes (QueueMode): steer, followup, collect, steer-backlog, steer+backlog, queue, interrupt. Drop policies (QueueDropPolicy): old, new, summarize.

Inbound debounce

Debounce rapid inbound messages per sender:

{
  "messages": {
    "inbound": {
      "debounceMs": 300,
      "byChannel": {
        "telegram": 500
      }
    }
  }
}

Acknowledge reactions

{
  "messages": {
    "ackReaction": "eyes",
    "ackReactionScope": "all",
    "removeAckAfterReply": true
  }
}

Valid ackReactionScope values: "group-mentions" (default), "group-all", "direct", "all".

Response prefix

Prefix auto-added to all outbound replies. Supports template variables:

{
  "messages": {
    "responsePrefix": "[{model} | think:{thinkingLevel}]"
  }
}

Supported variables: {model}, {modelFull}, {provider}, {thinkingLevel}/{think}, {identity.name}/{identityName}.

Text-to-speech

TTS for outbound replies. Providers: elevenlabs, openai, edge.

{
  "messages": {
    "tts": {
      "auto": "always",
      "provider": "elevenlabs",
      "elevenlabs": {
        "apiKey": "...",
        "voiceId": "...",
        "modelId": "eleven_monolingual_v1"
      }
    }
  }
}

Auto-TTS modes (TtsAutoMode): off, always, inbound, tagged.

Edge TTS

Edge TTS requires no API key, but calls Microsoft's cloud by default. To disable it entirely, set:

MILADY_DISABLE_EDGE_TTS=1
{
  "messages": {
    "tts": {
      "provider": "edge",
      "edge": {
        "enabled": true,
        "voice": "en-US-JennyNeural"
      }
    }
  }
}

Agent bindings

Route messages from a specific channel/peer to a specific agent:

{
  "bindings": [
    {
      "agentId": "my-agent",
      "match": {
        "channel": "telegram",
        "peer": {
          "kind": "group",
          "id": "-1001234567890"
        }
      }
    }
  ]
}

Broadcast

Route a peer's messages to multiple agents simultaneously:

{
  "broadcast": {
    "my-peer-id": ["agent-a", "agent-b"],
    "strategy": "parallel"
  }
}

Strategies: "parallel" (default) or "sequential".

Clone this wiki locally