Traul Message Search
dandaka/traul
Drives the traul CLI to sync, search and monitor messages from Slack, Telegram, Discord, Linear, Gmail, WhatsApp, Claude Code sessions and Markdown files.
Set up and run LettaBot - a multi-channel AI assistant for Telegram, Slack, Discord, WhatsApp, and Signal.
$ npx skills add letta-ai/lettabot --skill lettabot -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install letta-ai/lettabot lettabot --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "lettabot" agent skill from https://github.com/letta-ai/lettabot/tree/main into .claude/skills/lettabot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lettabot", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add letta-ai/lettabot --skill lettabot -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install letta-ai/lettabot lettabot --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "lettabot" agent skill from https://github.com/letta-ai/lettabot/tree/main into .agents/skills/lettabot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lettabot", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add letta-ai/lettabot --skill lettabot -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install letta-ai/lettabot lettabot --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "lettabot" agent skill from https://github.com/letta-ai/lettabot/tree/main into .cursor/skills/lettabot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lettabot", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add letta-ai/lettabot --skill lettabot -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install letta-ai/lettabot lettabot --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "lettabot" agent skill from https://github.com/letta-ai/lettabot/tree/main into .gemini/skills/lettabot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lettabot", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install letta-ai/lettabot lettabotInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add letta-ai/lettabot --skill lettabot -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "lettabot" agent skill from https://github.com/letta-ai/lettabot/tree/main into .github/skills/lettabot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lettabot", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add letta-ai/lettabot --skill lettabot -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install letta-ai/lettabot lettabot --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "lettabot" agent skill from https://github.com/letta-ai/lettabot/tree/main into .opencode/skills/lettabot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lettabot", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
lettabotSet up and run LettaBot - a multi-channel AI assistant for Telegram, Slack, Discord, WhatsApp, and Signal.
Lettabot is an agent skill from letta-ai/lettabot. Set up and run LettaBot - a multi-channel AI assistant for Telegram, Slack, Discord, WhatsApp, and Signal. Supports both interactive wizard and non-interactive (agent-friendly) configuration.
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 303 other files, including scripts and assets (for example `.github/dependabot.yml`, `.github/workflows/letta.yml` and `.github/workflows/release.yml`).
It sits in Productivity & Automation. It works with Telegram, Slack, WhatsApp and Discord. The repository describes itself as: Archived - has been replaced by Letta Code channels/schedules! The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 99c3b5d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
npmgitdockernpxcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.letta.comapi.telegram.orgAlso links to:
github.comt.meapi.slack.comclawdhub.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
LETTA_API_KEYTELEGRAM_BOT_TOKENSLACK_BOT_TOKENSLACK_APP_TOKENDISCORD_BOT_TOKENOPENAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Lettabot loads about 3.4k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 1,064 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from letta-ai/lettabot at commit 99c3b5d, republished under its Apache-2.0 licence (© letta-ai). 1,064 words, ~3,423 tokens.
.claude/skills/lettabot/SKILL.md (or your agent's skills folder). This skill also uses 299 other files; get the full folder from GitHub.Multi-channel AI assistant with persistent memory across Telegram, Slack, Discord, WhatsApp, and Signal.
For non-interactive setup (ideal for coding agents):
# 1. Clone and install
git clone https://github.com/letta-ai/lettabot.git
cd lettabot
npm install
npm run build
npm link
# 2. Configure required variables
export LETTA_API_KEY="letta_..." # From app.letta.com
# 3. Configure channel (example: Telegram)
export TELEGRAM_BOT_TOKEN="123456:ABC-DEF..." # From @BotFather
# 4. Run non-interactive setup
lettabot onboard --non-interactive
# 5. Start the bot
lettabot serverSafe defaults used if not set:
LETTA_BASE_URL: https://api.letta.comLETTA_AGENT_NAME: "lettabot"lettabot onboard or changed with lettabot model set <handle>*_DM_POLICY: "pairing" (requires approval before messaging)WHATSAPP_SELF_CHAT_MODE: true (only "Message Yourself" chat)SIGNAL_SELF_CHAT_MODE: true (only "Note to Self")The setup will show which defaults are being used and validate safety-critical settings.
For human-friendly setup with wizard:
lettabot onboardThe wizard will guide you through:
| Variable | Description | Default |
|---|---|---|
LETTA_API_KEY | API key from app.letta.com | Required (unless using a Docker server) |
LETTA_BASE_URL | API endpoint | https://api.letta.com |
| Variable | Description | Default |
|---|---|---|
LETTA_AGENT_ID | Use existing agent (skip agent creation) | Creates new agent |
LETTA_AGENT_NAME | Name for new agent | "lettabot" |
LETTA_MODEL | Removed - model is set on the agent server-side. Use lettabot model set <handle>. | - |
| Variable | Description | Required | Default |
|---|---|---|---|
TELEGRAM_BOT_TOKEN | Bot token from @BotFather | ✅ | - |
TELEGRAM_DM_POLICY | Access control: pairing | allowlist | open | ❌ | pairing |
TELEGRAM_ALLOWED_USERS | Comma-separated user IDs (if dmPolicy=allowlist) | ❌ | - |
| Variable | Description | Required | Default |
|---|---|---|---|
SLACK_BOT_TOKEN | Bot User OAuth Token (xoxb-...) | ✅ | - |
SLACK_APP_TOKEN | App-Level Token (xapp-...) for Socket Mode | ✅ | - |
SLACK_APP_NAME | Custom app name | ❌ | LETTA_AGENT_NAME or "LettaBot" |
SLACK_DM_POLICY | Access control: pairing | allowlist | open | ❌ | pairing |
SLACK_ALLOWED_USERS | Comma-separated Slack user IDs (if dmPolicy=allowlist) | ❌ | - |
Setup Slack app: See Slack Setup Wizard or run lettabot onboard for guided setup.
| Variable | Description | Required | Default |
|---|---|---|---|
DISCORD_BOT_TOKEN | Bot token from discord.com/developers/applications | ✅ | - |
DISCORD_DM_POLICY | Access control: pairing | allowlist | open | ❌ | pairing |
DISCORD_ALLOWED_USERS | Comma-separated Discord user IDs (if dmPolicy=allowlist) | ❌ | - |
Setup Discord bot: See docs/discord-setup.md
| Variable | Description | Required | Default |
|---|---|---|---|
WHATSAPP_ENABLED | Enable WhatsApp: true | false | ✅ | - |
WHATSAPP_SELF_CHAT_MODE | Self-chat mode: true (personal) | false (dedicated) | ✅ | true (safe) |
WHATSAPP_DM_POLICY | Access control: pairing | allowlist | open | ❌ | pairing |
WHATSAPP_ALLOWED_USERS | Comma-separated phone numbers with + (if dmPolicy=allowlist) | ❌ | - |
CRITICAL - Read Before Enabling:
WHATSAPP_SELF_CHAT_MODE=true (personal number): Only responds to "Message Yourself" chat ✅ SAFEWHATSAPP_SELF_CHAT_MODE=false (dedicated bot number): Responds to ALL incoming messages ⚠️ USE WITH CAUTIONtrue for safety - bot will NOT message your contacts unless you explicitly set to falseFirst-Time Setup - QR Code Warning:
lettabot server runs for the first timelettabot server yourself in a terminal| Variable | Description | Required | Default |
|---|---|---|---|
SIGNAL_PHONE_NUMBER | Your phone number (with +) | ✅ | - |
SIGNAL_DM_POLICY | Access control: pairing | allowlist | open | ❌ | pairing |
SIGNAL_ALLOWED_USERS | Comma-separated phone numbers with + (if dmPolicy=allowlist) | ❌ | - |
Setup: Requires Signal CLI - see signal-cli documentation.
/newbot and follow prompts123456:ABC-DEF...)TELEGRAM_BOT_TOKEN environment variableFor Socket Mode (required for real-time messages):
lettabot onboard
# Select "Slack" → "Guided setup"This uses a manifest to pre-configure:
src/setup/slack-wizard.ts for manifest YAML)xoxb-...)xapp-...)Each channel supports three DM policies:
pairing (recommended): Users get a code, you approve via CLI (lettabot pairing approve <channel> <code>) or API (POST /api/v1/pairing/<channel>/approve)allowlist: Only specified user IDs can messageopen: Anyone can message (not recommended)By default, all channels share one conversation. You can switch to per-channel conversation histories.
Single-agent config (top-level):
conversations:
mode: shared # "shared" (default) or "per-channel"
heartbeat: last-active # "dedicated" | "last-active" | "<channel>"Multi-agent config (per agent):
agents:
- name: MyAgent
conversations:
mode: per-channel
heartbeat: dedicatedNotes:
per-channel means one conversation per channel adapter (telegram/slack/discord/etc), not per chat/user.heartbeat controls which conversation background triggers use: a dedicated stream, the last active channel, or an explicit channel name.Group settings apply to Telegram, Slack, Discord, WhatsApp, and Signal.
YAML fields (per channel under channels.<name>):
groupDebounceSec: Debounce seconds for group batching (default: 5)groups: Map of group IDs to config (use * as the default)mode: open | listen | mention-only | disabledallowedUsers: Restrict who can trigger the bot in that groupreceiveBotMessages: Allow bot/bot messages (default: false)mentionPatterns: Extra regex patterns for mention detection (Telegram/WhatsApp/Signal)instantGroups: Group IDs that bypass batching (legacy)groupPollIntervalMin: Deprecated (minutes)listeningGroups: Deprecated (use groups.<id>.mode: listen)Environment variables (non-interactive onboarding):
Only legacy group options are supported here; prefer editing lettabot.yaml for groups config.
<CHANNEL>_GROUP_DEBOUNCE_SEC (seconds, e.g. 5)<CHANNEL>_GROUP_POLL_INTERVAL_MIN (deprecated, use _GROUP_DEBOUNCE_SEC instead)<CHANNEL>_INSTANT_GROUPS (comma-separated, legacy)<CHANNEL>_LISTENING_GROUPS (comma-separated, legacy)Example:
channels:
slack:
enabled: true
botToken: xoxb-...
appToken: xapp-...
groupDebounceSec: 5
mentionPatterns: ["@mybot", "hey bot"]
groups:
"*": { mode: mention-only }
"C0987654321": { mode: listen }
"C0123456789": { mode: open, allowedUsers: ["U123"] }After onboarding, config is saved to ~/.lettabot/config.yaml:
server:
baseUrl: https://api.letta.com
apiKey: letta_...
agentId: agent-...
conversations:
mode: shared
heartbeat: last-active
channels:
telegram:
enabled: true
botToken: 123456:ABC-DEF...
dmPolicy: pairing
slack:
enabled: true
botToken: xoxb-...
appToken: xapp-...
dmPolicy: pairingEdit this file directly or re-run lettabot onboard to reconfigure.
# Setup
lettabot onboard # Interactive wizard
lettabot onboard --non-interactive # Env-based setup (agent-friendly)
# Run
lettabot server # Start bot server
# Manage
lettabot pairing list # List pending pairing requests
lettabot pairing approve <channel> <code> # Approve user
lettabot skills # Enable/disable skills
# Scheduling
lettabot cron list # List scheduled tasks
lettabot cron add "Daily standup at 9am" "0 9 * * *" # Add cron jobMake sure you've run npm run build after installing or pulling updates.
curl https://api.telegram.org/bot<TOKEN>/getMelettabot server should show "Connected to Telegram"SLACK_BOT_TOKEN and SLACK_APP_TOKEN~/.wwebjs_auth if previously used different libraryFor coding agents helping users set up LettaBot:
# 1. Clone and build
git clone https://github.com/letta-ai/lettabot.git
cd lettabot
npm install && npm run build && npm link
# 2. Get Letta API key
# Guide user to app.letta.com → API Keys → Create Key
# 3. Get Telegram bot token
# Guide user to @BotFather → /newbot → follow prompts
# 4. Set environment variables
export LETTA_API_KEY="letta_..."
export TELEGRAM_BOT_TOKEN="123456:ABC-DEF..."
# Defaults will be used for LETTA_BASE_URL, agent name, and DM policy
# 5. Run non-interactive setup
lettabot onboard --non-interactive
# 6. Instruct user to start server
# DON'T start server automatically - user must see output
echo "Setup complete! Run 'lettabot server' to start the bot."For WhatsApp (QR code required on first run):
export LETTA_API_KEY="letta_..."
export WHATSAPP_ENABLED="true"
export WHATSAPP_SELF_CHAT_MODE="true" # REQUIRED: true=personal number, false=dedicated bot
lettabot onboard --non-interactive
# CRITICAL: Do NOT auto-start the server!
# Tell user: "WhatsApp setup complete. Please run 'lettabot server' in your terminal."
# User must see QR code in console output to scan it.
# After first pairing, server can be managed normally.Agent Instructions: If an AI agent is helping with setup and WhatsApp is configured:
lettabot onboard --non-interactivelettabot server automaticallylettabot server in a terminal to see the WhatsApp QR code"The agent can verify success by checking:
lettabot server output shows "Connected to Telegram" (or other channel)~/.lettabot/config.yamlTo use a Letta Docker server:
# Run Letta Docker
docker run -v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
-p 8283:8283 \
-e OPENAI_API_KEY="your_openai_api_key" \
letta/letta:latest
# Configure LettaBot
export LETTA_BASE_URL="http://localhost:8283"
export LETTA_API_KEY="sk-..." # From Letta admin panel
lettabot onboard --non-interactiveLettaBot supports loading skills from:
.skills/ directory# Install skill from Clawdhub
npx molthub@latest install sonoscli
# Connect to LettaBot
lettabot skills
# Space to toggle, Enter to confirm
# Skills will be available to agent© letta-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 299 other files (scripts, assets) in the repository root of letta-ai/lettabot.
Open the folder on GitHubat commit 99c3b5d
Lettabot next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Lettabot this skillletta-ai/lettabot | 327 | — | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Traul Message Searchdandaka/traul | 112 | — | ~3.9k | Automated safety check: Notes | AGPL-3.0 | |
| Creating Letta Code Channelsletta-ai/skills | 149 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Wire First NanoClaw Agentnanocoai/nanoclaw | 31k | — | ~2.5k | Automated safety check: Notes | MIT | |
| Add Channel Connect Buttonnovuhq/novu | 40k | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Channel Debug Corevercel-labs/vercel-openclaw-archived | 117 | — | ~2k | Automated safety check: Notes | MIT |
dandaka/traul
Drives the traul CLI to sync, search and monitor messages from Slack, Telegram, Discord, Linear, Gmail, WhatsApp, Claude Code sessions and Markdown files.
letta-ai/skills
Builds and debugs Letta Code channels, including first-party channel adapters and dynamic user channel plugins under ~/.letta/channels.
nanocoai/nanoclaw
Connects the first NanoClaw agent to a chat channel and proves delivery by having it send the operator a welcome direct message.
novuhq/novu
Build a new channel Connect button (e.g. An agent skill from novuhq/novu.
vercel-labs/vercel-openclaw-archived
Channel webhook triage for vercel-openclaw Slack/Telegram/Discord/WhatsApp issues: prove deployment state, collect admin readiness endpoints, build evidence-first handoff before fixes.
agentfront/frontmcp
A skill your agent uses when pushing real-time notifications or events into Claude Code (or another MCP client) sessions, or building two-way chat bridges.
letta-ai/lettabot
Manage Linear issues via GraphQL API. An agent skill from letta-ai/lettabot.
letta-ai/lettabot
Create scheduled tasks and one-off reminders. An agent skill from letta-ai/lettabot.
letta-ai/lettabot
Reply with voice memos using text-to-speech. An agent skill from letta-ai/lettabot.
letta-ai/lettabot
Post, reply, like, and repost on Bluesky using the lettabot-bluesky CLI.
letta-ai/lettabot
Create and manage scheduled tasks (cron jobs) that send you messages at specified times.
letta-ai/lettabot
Google Workspace CLI (gog) for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Categories
Set up and run LettaBot - a multi-channel AI assistant for Telegram, Slack, Discord, WhatsApp, and Signal. Lettabot is an agent skill from letta-ai/lettabot. Set up and run LettaBot - a multi-channel AI assistant for Telegram, Slack, Discord, WhatsApp, and Signal.
Lettabot fits situations like: productivity & Automation work in your project.
Run `npx skills add letta-ai/lettabot --skill lettabot -a claude-code`. Or copy the skill folder (the letta-ai/lettabot repository) into .claude/skills/lettabot in your project. Claude Code loads it when a task matches its description.
Run `npx skills add letta-ai/lettabot --skill lettabot -a codex`. Or copy the skill folder (the letta-ai/lettabot repository) into .agents/skills/lettabot in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add letta-ai/lettabot --skill lettabot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lettabot, .gemini/skills/lettabot, .github/skills/lettabot and .opencode/skills/lettabot in your project.
Going by SKILL.md and its folder, Lettabot needs the command-line tools its instructions call (npm, git, docker, npx and curl) and credentials named LETTA_API_KEY, TELEGRAM_BOT_TOKEN, SLACK_BOT_TOKEN and SLACK_APP_TOKEN. Our summary lists: Node.js; Docker; A credential in LETTA_API_KEY; A credential in TELEGRAM_BOT_TOKEN.
SKILL.md names 6 domains. In commands or code: api.letta.com and api.telegram.org; the agent is likely to contact these when it follows the instructions. As links in the text: github.com, t.me, api.slack.com and clawdhub.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Lettabot is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Lettabot: Traul Message Search (dandaka/traul, 112 stars), Creating Letta Code Channels (letta-ai/skills, 149 stars), Wire First NanoClaw Agent (nanocoai/nanoclaw, 31k stars) and Add Channel Connect Button (novuhq/novu, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
letta-ai (a GitHub organization) maintains it in letta-ai/lettabot, which has 327 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on May 25, 2026.
Source: letta-ai/lettabot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.