packages/docs/plugin-setup-guide.md
Comprehensive setup instructions for all connector, AI provider, and streaming plugins. When users ask how to set up a plugin, use this guide: give them the exact env var names, where to get the credentials, minimum required fields, and tips for optional fields.
Get credentials: https://platform.openai.com/api-keys
Minimum required: OPENAI_API_KEY (starts with sk-)
Variables:
OPENAI_API_KEY — Your secret API key from platform.openai.comOPENAI_BASE_URL — Leave blank for OpenAI default; set to a proxy URL if using a custom endpointOPENAI_SMALL_MODEL — e.g. gpt-5-mini (used for fast/cheap tasks)OPENAI_LARGE_MODEL — e.g. gpt-5 (used for complex reasoning)OPENAI_EMBEDDING_MODEL — e.g. text-embedding-3-small (for semantic search)OPENAI_TTS_MODEL / OPENAI_TTS_VOICE — e.g. tts-1 / alloy (for voice synthesis)OPENAI_IMAGE_DESCRIPTION_MODEL — e.g. gpt-5 (for image understanding)
Tips: OpenAI is the default fallback for most features. If you have credits, set this first. Use gpt-5-mini as small model to save costs.Get credentials: https://console.anthropic.com/settings/keys
Minimum required: ANTHROPIC_API_KEY (starts with sk-ant-) or CLAUDE_API_KEY
Variables:
ANTHROPIC_API_KEY / CLAUDE_API_KEY — Your secret key from console.anthropic.com (either works for auto-enable)ANTHROPIC_SMALL_MODEL — e.g. claude-haiku-4-5-20251001ANTHROPIC_LARGE_MODEL — e.g. claude-sonnet-4-6ANTHROPIC_BROWSER_BASE_URL — (Advanced) Proxy URL for browser-side requests
Tips: Best for complex reasoning and long context. Claude Haiku is very fast for the small model slot.Get credentials: https://aistudio.google.com/app/apikey
Minimum required: GOOGLE_GENERATIVE_AI_API_KEY or GOOGLE_API_KEY
Variables:
GOOGLE_GENERATIVE_AI_API_KEY / GOOGLE_API_KEY — From AI Studio or Google Cloud (either works for auto-enable)GOOGLE_SMALL_MODEL — e.g. gemini-2.5-flashGOOGLE_LARGE_MODEL — e.g. gemini-2.5-proGOOGLE_EMBEDDING_MODEL — e.g. text-embedding-004GOOGLE_IMAGE_MODEL — e.g. gemini-2.0-flash-001
Tips: Gemini Flash is fast and cheap; great for small model. The free tier is generous.Get credentials: https://console.groq.com/keys
Minimum required: GROQ_API_KEY
Variables:
GROQ_API_KEY — From console.groq.comGROQ_SMALL_MODEL — e.g. openai/gpt-oss-120bGROQ_LARGE_MODEL — e.g. openai/gpt-oss-120bGROQ_TTS_MODEL / GROQ_TTS_VOICE — e.g. canopylabs/orpheus-v1-english / troyGROQ_TTS_RESPONSE_FORMAT — Audio response format (default: wav)
Tips: Groq is extremely fast inference — great for latency-sensitive use cases. Free tier available.Get credentials: https://openrouter.ai/keys
Minimum required: OPENROUTER_API_KEY
Variables:
OPENROUTER_API_KEY — From openrouter.ai/keysOPENROUTER_SMALL_MODEL — e.g. openai/gpt-5-mini or openai/gpt-oss-120bOPENROUTER_LARGE_MODEL — e.g. anthropic/claude-sonnet-4-6OPENROUTER_IMAGE_MODEL — e.g. openai/gpt-5 (for vision tasks)OPENROUTER_IMAGE_GENERATION_MODEL — e.g. openai/dall-e-3OPENROUTER_EMBEDDING_MODEL — e.g. openai/text-embedding-3-smallOPENROUTER_TOOL_EXECUTION_MAX_STEPS — Max tool call steps per turn (default: 15)
Tips: OpenRouter gives you access to 200+ models through one API key. Great if you want to switch models without managing multiple accounts. Use model IDs in provider/model-name format.Get credentials: https://console.x.ai/
Minimum required: XAI_API_KEY or GROK_API_KEY
Variables:
XAI_API_KEY / GROK_API_KEY — From console.x.ai (either works for auto-enable)XAI_MODEL — e.g. grok-3 (overrides small/large)XAI_SMALL_MODEL / XAI_LARGE_MODEL — Specific model slotsXAI_EMBEDDING_MODEL — e.g. grok-embeddingX_AUTH_MODE — env (default) or oauthX_API_KEY, X_API_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET — Twitter OAuth keys (for the X connector side of xAI)X_ENABLE_POST, X_ENABLE_REPLIES, X_ENABLE_ACTIONS — Toggle X/Twitter behaviors
Tips: xAI = Grok models. The X_* vars are for the Twitter integration bundled with xAI. Keep auth mode as api_key unless you need OAuth. For a standalone Twitter connector (without Grok), see the Twitter/X connector section below — it uses TWITTER_* env vars and connectors.twitter config instead.Get credentials: No API key needed — install Ollama locally
Setup: https://ollama.com — create the Eliza-1 Ollama models from packages/training/cloud/ollama/
Minimum required: OLLAMA_BASE_URL = http://localhost:11434 (auto-enable trigger) or OLLAMA_API_ENDPOINT = http://localhost:11434/api
Variables:
OLLAMA_BASE_URL — Auto-enable trigger. Default: http://localhost:11434OLLAMA_API_ENDPOINT — Plugin endpoint. Default: http://localhost:11434/apiOLLAMA_SMALL_MODEL — e.g. eliza-1-2bOLLAMA_MEDIUM_MODEL — e.g. eliza-1-9bOLLAMA_LARGE_MODEL — e.g. eliza-1-9bOLLAMA_EMBEDDING_MODEL — e.g. nomic-embed-text
Tips: Completely free and private. Requires Ollama running on your machine or a server. Build Eliza-1 models with ollama create eliza-1-9b -f packages/training/cloud/ollama/Modelfile.eliza-1-9b-q4_k_m.Get credentials: No API key — uses local model files Variables:
MODELS_DIR — Path to your local model files (e.g. /Users/you/models)CACHE_DIR — Path for caching (e.g. /tmp/ai-cache)LOCAL_SMALL_MODEL / LOCAL_LARGE_MODEL — Model filenames in MODELS_DIRLOCAL_EMBEDDING_MODEL / LOCAL_EMBEDDING_DIMENSIONS — Embedding model and its dimension countCUDA_VISIBLE_DEVICES — GPU selection, e.g. 0 for first GPU
Tips: Use when you have .gguf or similar model files and want full offline operation.Get credentials: https://vercel.com/docs/ai/ai-gateway
Minimum required: AI_GATEWAY_API_KEY and AI_GATEWAY_BASE_URL
Variables:
AI_GATEWAY_API_KEY / AIGATEWAY_API_KEY — Your gateway key (either works)VERCEL_OIDC_TOKEN — For Vercel-hosted deployments onlyAI_GATEWAY_BASE_URL — Your gateway endpoint URLAI_GATEWAY_SMALL_MODEL / AI_GATEWAY_LARGE_MODEL / AI_GATEWAY_EMBEDDING_MODEL — Model IDsAI_GATEWAY_IMAGE_MODEL — For image generationAI_GATEWAY_TIMEOUT_MS — Request timeout, default 60000ms
Tips: Routes model calls through Vercel's AI gateway for caching, rate limiting, and observability. Useful if you're already on Vercel.Get credentials: From the elizaOS Cloud service
Minimum required: ELIZAOS_CLOUD_API_KEY or ELIZAOS_CLOUD_ENABLED=true
Variables:
ELIZAOS_CLOUD_API_KEY — Your Eliza Cloud API keyELIZAOS_CLOUD_ENABLED — Set to true to enable cloud features
Tips: Eliza Cloud provides hosted infrastructure for running Eliza agents with managed scaling and monitoring.Get credentials: https://discord.com/developers/applications → New Application → Bot → Reset Token
Minimum required: DISCORD_API_TOKEN
Variables:
DISCORD_API_TOKEN — Bot token (from Bot section, click Reset Token)DISCORD_APPLICATION_ID — Application ID (from General Information, optional if runtime auto-resolve succeeds)CHANNEL_IDS — Comma-separated channel IDs to listen inDISCORD_VOICE_CHANNEL_ID — For voice channel supportDISCORD_SHOULD_IGNORE_BOT_MESSAGES — true to prevent bot-to-bot loopsDISCORD_SHOULD_IGNORE_DIRECT_MESSAGES — true to disable DM responsesDISCORD_SHOULD_RESPOND_ONLY_TO_MENTIONS — true to only respond when @mentionedDISCORD_LISTEN_CHANNEL_IDS — Channel IDs to listen but not post unsolicited
Setup steps:Get credentials: Message @BotFather on Telegram
Minimum required: TELEGRAM_BOT_TOKEN
Variables:
TELEGRAM_BOT_TOKEN — From @BotFather after /newbotTELEGRAM_ALLOWED_CHATS — JSON array of allowed chat IDs, e.g. ["123456789", "-100987654321"]TELEGRAM_API_ROOT — Leave blank for default; set if using a Telegram proxyTELEGRAM_TEST_CHAT_ID — For testing (advanced)
Setup steps:/newbotTELEGRAM_ALLOWED_CHATS to restrict who can talk to the bot for safety.Twitter/X integration is bundled with the xAI provider plugin (@elizaos/plugin-xai). There is no separate @elizaos/plugin-x.
Get credentials: https://developer.twitter.com/en/portal/dashboard
Minimum required: xAI plugin enabled + Twitter OAuth keys in connector config or env vars.
Variables (xAI plugin X_* convention):
X_API_KEY — Twitter API consumer keyX_API_SECRET — Twitter API consumer secretX_ACCESS_TOKEN — OAuth access tokenX_ACCESS_TOKEN_SECRET — OAuth access token secretX_AUTH_MODE — api_key (default) or oauthX_ENABLE_POST — true to enable autonomous postingX_ENABLE_REPLIES — true to reply to @mentionsX_ENABLE_ACTIONS — true to enable like/retweet/quote actionsConnector config alternative — set these under connectors.twitter in eliza.json:
apiKey, apiSecretKey, accessToken, accessTokenSecret — OAuth credentialspostEnable, postIntervalMin, postIntervalMax, dryRun — posting behaviorsearchEnable, autoRespondMentions, pollInterval — engagement settingsSetup steps:
TWITTER_DRY_RUN=true to verify without posting. Free API tier has very limited write access — check X developer docs for current limits. You need ALL 4 OAuth keys — missing any one will cause auth failure.Get credentials: https://api.slack.com/apps → Create New App
Minimum required: SLACK_BOT_TOKEN + SLACK_APP_TOKEN
Variables:
SLACK_BOT_TOKEN — Starts with xoxb- (from OAuth & Permissions → Bot Token)SLACK_APP_TOKEN — Starts with xapp- (from Basic Information → App-Level Tokens; scope: connections:write)SLACK_SIGNING_SECRET — From Basic Information (for webhook verification)SLACK_USER_TOKEN — Starts with xoxp- (optional, for user-level actions)SLACK_CHANNEL_IDS — Comma-separated channel IDs, e.g. C01ABCDEF,C02GHIJKLSLACK_SHOULD_IGNORE_BOT_MESSAGES — Prevent bot loopsSLACK_SHOULD_RESPOND_ONLY_TO_MENTIONS — Only reply when @mentioned
Setup steps:connections:write scopechat:write, channels:read, channels:history, groups:history, im:history, app_mentions:readmessage.channels, message.im, app_mention
Tips: Socket Mode means you DON'T need a public webhook URL. Both Bot Token (xoxb-) AND App Token (xapp-) are required for Socket Mode. To get channel IDs: right-click channel in Slack → Copy link, the ID is in the URL.Two modes — choose one:
Mode 1: Cloud API (Business, recommended) Get credentials: https://developers.facebook.com/apps → WhatsApp → API Setup
WHATSAPP_ACCESS_TOKEN — Permanent system user token from Meta BusinessWHATSAPP_PHONE_NUMBER_ID — From WhatsApp → API SetupWHATSAPP_BUSINESS_ACCOUNT_ID — From WhatsApp Business settingsWHATSAPP_WEBHOOK_VERIFY_TOKEN — Any string you choose (used to verify webhook)WHATSAPP_API_VERSION — e.g. v18.0 (use latest)
Setup: Need Meta Business account, verified phone number, approved WhatsApp Business AppMode 2: Baileys (Personal, QR code)
WHATSAPP_AUTH_DIR — Directory to store session files, e.g. /data/whatsapp-authGet credentials: Use your Instagram account credentials
Minimum required: INSTAGRAM_USERNAME + INSTAGRAM_PASSWORD
Variables:
INSTAGRAM_USERNAME — Your Instagram usernameINSTAGRAM_PASSWORD — Your Instagram passwordINSTAGRAM_VERIFICATION_CODE — Your 2FA code if enabledINSTAGRAM_PROXY — Proxy URL if rate limited or blocked
Tips: ⚠️ Uses unofficial API. Instagram frequently blocks automated access. Use a dedicated account, not your personal one. A proxy reduces bans. 2FA users must supply the code on startup.Get credentials: https://bsky.app → Settings → App Passwords
Minimum required: BLUESKY_HANDLE + BLUESKY_PASSWORD (app password, not your real password)
Variables:
BLUESKY_HANDLE — Your handle e.g. yourname.bsky.socialBLUESKY_PASSWORD — App password (not your login password — create one in Settings)BLUESKY_ENABLED — true to enableBLUESKY_SERVICE — Default: https://bsky.social (only change for self-hosted PDS)BLUESKY_ENABLE_POSTING — true for autonomous postsBLUESKY_POST_INTERVAL_MIN / BLUESKY_POST_INTERVAL_MAX — Seconds between postsBLUESKY_MAX_POST_LENGTH — Max characters per post (default: 300)BLUESKY_POLL_INTERVAL — Seconds between checking mentions/DMsBLUESKY_ENABLE_DMS — true to respond to direct messages
Tips: Create an App Password at bsky.app → Settings → App Passwords. Never use your main login password.Get credentials: https://warpcast.com → Settings, then https://neynar.com for API
Minimum required: FARCASTER_FID + FARCASTER_SIGNER_UUID + FARCASTER_NEYNAR_API_KEY
Variables:
FARCASTER_FID — Your Farcaster ID (number shown in profile URL)FARCASTER_SIGNER_UUID — Signer UUID from Neynar dashboardFARCASTER_NEYNAR_API_KEY — From neynar.com (needed for read/write)ENABLE_CAST — true to enable autonomous castingCAST_INTERVAL_MIN / CAST_INTERVAL_MAX — Minutes between castsMAX_CAST_LENGTH — Default 320 charactersFARCASTER_POLL_INTERVAL — Seconds between notification checksFARCASTER_HUB_URL — Custom Farcaster hub (advanced, leave blank for default)
Setup steps:Not yet available: The
@elizaos/plugin-wechatpackage is not currently in the plugin registry. The configuration below is for reference when the plugin becomes available.
Get credentials: From your WeChat proxy service provider
Minimum required: WECHAT_API_KEY + proxy URL in config
Variables:
WECHAT_API_KEY — Proxy service API key
Config-only fields (set in connectors.wechat, not env vars):proxyUrl — Required — Your WeChat proxy service URLwebhookPort — Webhook listener port (default: 18790)deviceType — Device emulation: ipad (default) or macfeatures.images — Enable image send/receive (default: false)features.groups — Enable group chat support (default: false)
Setup steps:connectors.wechat in eliza.json with apiKey and proxyUrlaccounts map. Package: @elizaos/plugin-wechat.Get credentials: https://github.com/settings/tokens → Fine-grained or Classic
Minimum required: GITHUB_API_TOKEN
Variables:
GITHUB_API_TOKEN — Personal access token or GitHub App tokenGITHUB_OWNER — Repository owner (username or org)GITHUB_REPO — Repository nameGITHUB_BRANCH — Default branch (e.g. main)GITHUB_WEBHOOK_SECRET — For GitHub App webhook verificationGITHUB_APP_ID / GITHUB_APP_PRIVATE_KEY / GITHUB_INSTALLATION_ID — For GitHub Apps
Tips: Fine-grained tokens are more secure — scope only to the repos you need. For org repos, you may need to request access from the org.Get credentials: https://dev.twitch.tv/console/apps → Register Your Application
Minimum required: TWITCH_USERNAME + TWITCH_CLIENT_ID + TWITCH_ACCESS_TOKEN + TWITCH_CLIENT_SECRET
Variables:
TWITCH_USERNAME — Your Twitch bot usernameTWITCH_CLIENT_ID — From Twitch Developer ConsoleTWITCH_CLIENT_SECRET — From Twitch Developer ConsoleTWITCH_ACCESS_TOKEN — OAuth token (get via https://twitchapps.com/tmi/ or Twitch OAuth flow)TWITCH_REFRESH_TOKEN — For long-lived sessionsTWITCH_CHANNEL — Primary channel to join (e.g. mychannel)TWITCH_CHANNELS — Additional channels (comma-separated)TWITCH_REQUIRE_MENTION — true to only respond when bot username is mentionedTWITCH_ALLOWED_ROLES — broadcaster, moderator, vip, subscriber, viewer
Tips: Create a separate Twitch account for the bot. Use https://twitchapps.com/tmi/ to get an access token for chat bots quickly.Get credentials: https://console.twilio.com
Minimum required: TWILIO_ACCOUNT_SID + TWILIO_AUTH_TOKEN + TWILIO_PHONE_NUMBER
Variables:
TWILIO_ACCOUNT_SID — From Twilio Console dashboard (starts with AC)TWILIO_AUTH_TOKEN — From Twilio Console dashboardTWILIO_PHONE_NUMBER — Your Twilio number in E.164 format (e.g. +15551234567)TWILIO_WEBHOOK_URL — Your publicly accessible URL for incoming messagesTWILIO_WEBHOOK_PORT — Port to listen on (if self-hosting, default 3000)VOICE_CALL_PROVIDER — e.g. twilioVOICE_CALL_FROM_NUMBER — Outbound caller IDVOICE_CALL_TO_NUMBER — Default number to callVOICE_CALL_PUBLIC_URL — Publicly accessible URL for voice webhooksVOICE_CALL_MAX_DURATION_SECONDS — Max call length (default 3600)VOICE_CALL_INBOUND_POLICY — allow-all, allow-from, or deny-allVOICE_CALL_INBOUND_GREETING — Text spoken when call is answered
Tips: For webhooks to work, Twilio needs a public URL. Use ngrok during development. Get a phone number in Console → Phone Numbers → Buy a Number. Free trial gives ~$15 credit.Get credentials: Your Matrix homeserver account
Minimum required: MATRIX_HOMESERVER + MATRIX_USER_ID + MATRIX_ACCESS_TOKEN
Variables:
MATRIX_HOMESERVER — e.g. https://matrix.org or your own homeserverMATRIX_USER_ID — e.g. @yourbot:matrix.orgMATRIX_ACCESS_TOKEN — From Element: Settings → Help & About → Advanced → Access TokenMATRIX_DEVICE_ID — Leave blank to auto-assignMATRIX_ROOMS — Comma-separated room IDs (e.g. !abc123:matrix.org)MATRIX_AUTO_JOIN — true to auto-join invite roomsMATRIX_ENCRYPTION — true to enable E2E encryption (requires more setup)MATRIX_REQUIRE_MENTION — true to only respond when @mentioned
Tips: Get your access token in Element → Settings → Help & About → Advanced. Matrix IDs use format @user:server.Get credentials: https://portal.azure.com → Azure Active Directory → App Registrations
Minimum required: MSTEAMS_APP_ID + MSTEAMS_APP_PASSWORD + MSTEAMS_TENANT_ID
Variables:
MSTEAMS_APP_ID — Application (client) ID from Azure portalMSTEAMS_APP_PASSWORD — Client secret value from Azure portalMSTEAMS_TENANT_ID — Your Azure AD tenant IDMSTEAMS_WEBHOOK_PORT / MSTEAMS_WEBHOOK_PATH — Where Bot Framework sends messagesMSTEAMS_ALLOWED_TENANTS — Restrict to specific tenants (comma-separated)MSTEAMS_SHAREPOINT_SITE_ID — For SharePoint integration (advanced)MSTEAMS_MEDIA_MAX_MB — Max file upload size (default 25MB)
Setup steps:Get credentials: https://console.cloud.google.com → APIs → Google Chat API
Minimum required: Service account JSON or GOOGLE_APPLICATION_CREDENTIALS path
Variables:
GOOGLE_CHAT_SERVICE_ACCOUNT_KEY — Full service account JSON (paste the entire JSON)GOOGLE_CHAT_SERVICE_ACCOUNT_FILE — Alternative: path to service account JSON fileGOOGLE_APPLICATION_CREDENTIALS — Alternative: path to credentials fileGOOGLE_CHAT_SPACES — Comma-separated space names (e.g. spaces/AAAA_space_id)GOOGLE_CHAT_AUDIENCE_TYPE — PUBLISHED or DOMAIN_INSTALLGOOGLE_CHAT_AUDIENCE — Your app's audience URLGOOGLE_CHAT_WEBHOOK_PATH — Webhook path for incoming messagesGOOGLE_CHAT_REQUIRE_MENTION — true to require @mentionGOOGLE_CHAT_BOT_USER — Bot user ID
Tips: Enable Google Chat API in Cloud Console. Create a service account with Chat-scope permissions. Workspace admin must approve the Chat app.Get credentials: Your own phone number + signal-cli or signal-api-rest-api
Minimum required: SIGNAL_ACCOUNT_NUMBER + SIGNAL_HTTP_URL
Variables:
SIGNAL_ACCOUNT_NUMBER — Your phone number in E.164 format (e.g. +15551234567)SIGNAL_HTTP_URL — REST API URL, e.g. http://localhost:8080SIGNAL_CLI_PATH — Path to signal-cli binary (optional, for direct CLI mode)SIGNAL_SHOULD_IGNORE_GROUP_MESSAGES — true to ignore group chats
Setup: Run signal-api-rest-api server: https://github.com/bbernhard/signal-cli-rest-api
Tips: Signal doesn't have an official API. Use bbernhard/signal-cli-rest-api Docker image — it handles the signal-cli connection and exposes a REST API.Get credentials: macOS only — no credentials needed, uses local Messages.app Variables:
IMESSAGE_CLI_PATH — Path to imessage-reader CLI (install from GitHub)IMESSAGE_DB_PATH — Path to Messages chat.db (default: ~/Library/Messages/chat.db)IMESSAGE_POLL_INTERVAL_MS — How often to check for new messages (default: 5000ms)IMESSAGE_DM_POLICY — allow-all or allow-fromIMESSAGE_GROUP_POLICY — allow-all, allow-from, or deny-allIMESSAGE_ALLOW_FROM — Comma-separated allowed sendersIMESSAGE_ENABLED — true to enable
Tips: macOS only. Requires Full Disk Access permission for the app to read the Messages database. Only works on the machine that has iMessage configured.Get credentials: Install BlueBubbles server on a Mac with iMessage
Minimum required: BLUEBUBBLES_PASSWORD
Variables:
BLUEBUBBLES_PASSWORD — Password set in the BlueBubbles server appBLUEBUBBLES_SERVER_URL — BlueBubbles server URL (e.g. http://192.168.1.50:1234)BLUEBUBBLES_WEBHOOK_PATH — Custom webhook endpoint pathBLUEBUBBLES_DM_POLICY — allow, deny, or allowlistBLUEBUBBLES_ALLOW_FROM — Comma-separated allowed sendersBLUEBUBBLES_GROUP_POLICY — Group message policyBLUEBUBBLES_GROUP_ALLOW_FROM — Comma-separated allowed groupsBLUEBUBBLES_SEND_READ_RECEIPTS — true to send read receiptsBLUEBUBBLES_ENABLED — true to enable
Tips: Unlike direct iMessage, BlueBubbles works over the network — the agent doesn't need to run on the same Mac. Supports rich actions: tapbacks, edit/unsend, effects, attachments, and group management.Get credentials: https://bloo.io
Minimum required: BLOOIO_API_KEY
Variables:
BLOOIO_API_KEY — From bloo.io dashboardBLOOIO_WEBHOOK_URL — Your public URL for incoming SMS webhooksBLOOIO_WEBHOOK_SECRET — Secret for webhook signature verificationBLOOIO_BASE_URL — bloo.io API base URL (leave as default)BLOOIO_FROM_NUMBER — Phone number to send fromBLOOIO_WEBHOOK_PORT — Port for webhook listener
Tips: Blooio bridges iMessage/SMS. Requires a Mac running the Blooio app.Get credentials: Generate your own keypair using any Nostr client
Minimum required: NOSTR_PRIVATE_KEY
Variables:
NOSTR_PRIVATE_KEY — Your nsec private key (hex format)NOSTR_RELAYS — Comma-separated relay URLs, e.g. wss://relay.damus.io,wss://relay.nostr.bandNOSTR_DM_POLICY — allow-all or allow-fromNOSTR_ALLOW_FROM — Allowed public keys (npub format)NOSTR_ENABLED — true to enable
Tips: Generate keys with any Nostr app (Damus, Primal, Amethyst). Keep private key secret — it's your identity. Use multiple relays for reliability.Get credentials: https://developers.line.biz/console
Minimum required: LINE_CHANNEL_ACCESS_TOKEN + LINE_CHANNEL_SECRET
Variables:
LINE_CHANNEL_ACCESS_TOKEN — From LINE Developers console → Messaging API → Channel Access TokenLINE_CHANNEL_SECRET — From Basic Settings tabLINE_WEBHOOK_PATH — Webhook URL path (configure in LINE console too)LINE_DM_POLICY / LINE_GROUP_POLICY — allow-all or allow-fromLINE_ALLOW_FROM — Allowed user IDsLINE_ENABLED — true to enable
Setup steps:Get credentials: https://open.feishu.cn (or open.larksuite.com for Lark)
Minimum required: FEISHU_APP_ID + FEISHU_APP_SECRET
Variables:
FEISHU_APP_ID — From Feishu/Lark Developer Console → App CredentialsFEISHU_APP_SECRET — From App Credentials sectionFEISHU_DOMAIN — feishu.cn (default) or larksuite.comFEISHU_ALLOWED_CHATS — Allowed chat IDs (comma-separated)FEISHU_TEST_CHAT_ID — For testingGet credentials: Your Mattermost instance → System Console → Integrations → Bot Accounts
Minimum required: MATTERMOST_SERVER_URL + MATTERMOST_BOT_TOKEN
Variables:
MATTERMOST_SERVER_URL — e.g. https://mattermost.yourcompany.comMATTERMOST_BOT_TOKEN — From System Console → Bot Accounts → Add Bot AccountMATTERMOST_TEAM_ID — Your team ID (from team URL or API)MATTERMOST_DM_POLICY / MATTERMOST_GROUP_POLICY — allow-all or allow-fromMATTERMOST_ALLOWED_USERS / MATTERMOST_ALLOWED_CHANNELS — Restrict accessMATTERMOST_REQUIRE_MENTION — true to require @mention
Tips: Enable Bot Accounts in System Console → Authentication → Bot Accounts. Self-hosted Mattermost is free.Get credentials: Your Nextcloud instance → Settings → Security → App Passwords
Minimum required: NEXTCLOUD_URL + NEXTCLOUD_BOT_SECRET
Variables:
NEXTCLOUD_URL — Your Nextcloud URL (e.g. https://cloud.yourserver.com)NEXTCLOUD_BOT_SECRET — Set when registering bot via Nextcloud Talk APINEXTCLOUD_WEBHOOK_PUBLIC_URL — Publicly accessible URL for Talk webhooksNEXTCLOUD_WEBHOOK_PORT / NEXTCLOUD_WEBHOOK_PATH — Webhook server settingsNEXTCLOUD_ALLOWED_ROOMS — Room tokens to allowGet credentials: Your Urbit ship access
Minimum required: TLON_SHIP + TLON_URL + TLON_CODE
Variables:
TLON_SHIP — Your ship name (e.g. ~sampel-palnet)TLON_URL — URL to your ship (e.g. http://localhost:8080)TLON_CODE — Your ship's access code (from +code in Dojo)TLON_GROUP_CHANNELS — Channels to listen in (group path format)TLON_DM_ALLOWLIST — Allowed DM sendersTLON_AUTO_DISCOVER_CHANNELS — Auto-join channelsGet credentials: https://developers.zalo.me
Minimum required: ZALO_APP_ID + ZALO_SECRET_KEY + ZALO_ACCESS_TOKEN
Variables:
ZALO_APP_ID / ZALO_SECRET_KEY — From Zalo Developer portalZALO_ACCESS_TOKEN / ZALO_REFRESH_TOKEN — OAuth tokens from ZaloZALO_WEBHOOK_URL / ZALO_WEBHOOK_PATH / ZALO_WEBHOOK_PORT — Webhook configPersonal Zalo account connector (unofficial, no API key needed). Variables:
ZALOUSER_COOKIE_PATH — Path to exported Zalo session cookiesZALOUSER_IMEI — Device IMEI for session (from official Zalo app)ZALOUSER_USER_AGENT — Browser user agent stringZALOUSER_PROFILES — Multiple account profiles (JSON)ZALOUSER_ALLOWED_THREADS — Allowed conversation threadsZALOUSER_DM_POLICY / ZALOUSER_GROUP_POLICY — Message policiesInternal agent-to-agent protocol for connecting multiple AI agents. Variables:
ACP_GATEWAY_URL — Gateway URL for the ACP hubACP_GATEWAY_TOKEN / ACP_GATEWAY_PASSWORD — Authentication credentialsACP_DEFAULT_SESSION_KEY / ACP_DEFAULT_SESSION_LABEL — Session identificationACP_CLIENT_NAME / ACP_CLIENT_DISPLAY_NAME — This agent's identityACP_AGENT_ID — Unique agent IDACP_PERSIST_SESSIONS — true to save sessions across restartsACP_SESSION_STORE_PATH — Where to save sessionsConnect to any MCP server for extended tool capabilities. Variables:
mcp — JSON configuration object for MCP servers
Tips: MCP servers can provide tools (web search, code execution, file access, databases, etc.) directly to the AI. See https://modelcontextprotocol.io for available servers.Note: The IQ plugin is an upstream elizaOS connector not included in the bundled
plugins.jsonregistry. Install from the remote registry if needed.
On-chain chat via Solana blockchain.
Minimum required: SOLANA_PRIVATE_KEY + IQ_GATEWAY_URL
Variables:
SOLANA_PRIVATE_KEY — Solana wallet private key (base58 encoded)SOLANA_KEYPAIR_PATH — Alternative: path to keypair JSON fileSOLANA_RPC_URL — e.g. https://api.mainnet-beta.solana.comIQ_GATEWAY_URL — IQ protocol gateway URLIQ_AGENT_NAME — Display name for your agentIQ_DEFAULT_CHATROOM — Default chatroom to joinIQ_CHATROOMS — Additional chatrooms (comma-separated)Monitors Gmail via Google Pub/Sub push notifications.
Setup: Requires Google Cloud service account with Gmail API access.
Tips: Uses gog gmail watch serve internally. Requires Google Cloud project with Gmail API enabled and Pub/Sub configured.
Enable @elizaos/plugin-streaming once. It covers Twitch, YouTube, X, pump.fun, custom RTMP, and optional multiple named ingests via streaming.rtmpSources in config.
streaming)Adds the Stream tab to the UI with RTMP destination management when the plugin is enabled.
Get credentials: https://dashboard.twitch.tv → Settings → Stream
Variable: TWITCH_STREAM_KEY — Your stream key (keep secret!)
Tips: Never share your stream key — it lets anyone stream to your channel. Regenerate if leaked.
Get credentials: https://studio.youtube.com → Go Live → Stream settings Variables:
YOUTUBE_STREAM_KEY — From YouTube Studio → Stream keyYOUTUBE_RTMP_URL — Default: rtmp://a.rtmp.youtube.com/live2 (rarely needs changing)
Tips: You need a YouTube channel with Live streaming enabled (may require phone verification).Live stream to X using RTMP credentials generated for the active broadcast. Get credentials: From X Live Producer / Media Studio when you create a live stream Variables:
X_STREAM_KEY — Stream key for the broadcastX_RTMP_URL — RTMP ingest URL for the broadcast session
Tips: X RTMP credentials are often per-broadcast. Create the stream first, then copy both values directly into the plugin.Stream to pump.fun using the platform's RTMP ingest credentials. Get credentials: From the pump.fun live streaming flow when you create a stream Variables:
PUMPFUN_STREAM_KEY — Stream key for pump.fun ingestPUMPFUN_RTMP_URL — RTMP ingest URL for the current stream
Tips: Treat both values as session credentials. If the stream refuses to start, re-create the broadcast and paste fresh values.Stream to any platform (Facebook, TikTok, Kick, self-hosted RTMP, etc.) Variables:
CUSTOM_RTMP_URL — RTMP endpoint URL, e.g. rtmp://live.kick.com/appCUSTOM_RTMP_KEY — Stream key from the platform
Common RTMP URLs:rtmps://live-api-s.facebook.com:443/rtmp/rtmp://push.tiktokcdn.com/third/ (need TikTok Live access)rtmp://ingest.global-contribute.live-video.net/appRequired vs Optional: Every plugin has minimum required fields. Start with just those — you can add optional settings later.
Testing before going live: Most connectors have a "dry run" mode (e.g. TWITTER_DRY_RUN=true, FARCASTER_DRY_RUN=true, BLUESKY_DRY_RUN=true) — use this to verify setup without posting.
Policy fields: Most connectors have DM_POLICY and GROUP_POLICY fields:
allow-all — respond to everyoneallow-from — only respond to accounts in the ALLOW_FROM listdeny-all — never respond (effectively disables that channel type)Webhook vs Polling: Connectors like LINE, Twilio, WhatsApp Cloud API, and Google Chat use webhooks (they push messages to your server). You need a publicly accessible URL. Use ngrok for local development: ngrok http 3000.
Rate limits: Most platforms enforce rate limits. For Twitter especially, use conservative post intervals (90-180 minutes minimum).