beeper-api-cliRead and send messages via Beeper CLI. Supports WhatsApp, Telegram, Signal, Instagram, Twitter/X, LinkedIn, Facebook Messenger and more.
Install via ClawdBot CLI:
clawdbot install nerveband/beeper-api-cliLLM-friendly wrapper around the Beeper CLI for reading and sending messages across all connected chat networks.
šØ NEVER SEND ANY MESSAGE WITHOUT EXPLICIT USER APPROVAL šØ
MANDATORY PROTOCOL FOR ALL MESSAGING:
This rule is NON-NEGOTIABLE and applies to ALL beeper send commands.
1. Open Beeper Desktop
2. Settings ā Advanced ā API
3. Enable API access
4. Copy the Bearer token
# REQUIRED: Set your token
export BEEPER_TOKEN="paste-your-token-here"
# OPTIONAL: Override default localhost URL
export BEEPER_API_URL="http://[::1]:23373" # Default
# Use the skill wrapper (recommended)
~/clawd/skills/beeper-api-cli/beeper.sh chats list --output json
# Or use the binary directly
/Users/ashrafali/clawd/beeper-api-cli/beeper chats list --output json
ā ļø Important: Without setting BEEPER_TOKEN, all commands will fail with "Unauthorized" errors.
The CLI connects to Beeper Desktop's local API server.
ā ļø REQUIRED: You must configure the API token in Beeper Desktop first!
localhost (127.0.0.1 / ::1) is allowedYou must set the token before the CLI will work:
# REQUIRED: Set your token from Beeper Desktop
export BEEPER_TOKEN="your-token-from-beeper-settings"
# OPTIONAL: Override API URL (default: http://[::1]:23373)
export BEEPER_API_URL="http://[::1]:23373"
Where to get the token:
Important:
BEEPER_TOKENlocalhost (http://[::1]:23373)1. Add that machine's IP in Beeper Desktop API settings
2. Update BEEPER_API_URL to use the correct host IP
# JSON output (LLM-friendly)
~/clawd/skills/beeper-api-cli/beeper.sh chats list --output json
# Human-readable text
~/clawd/skills/beeper-api-cli/beeper.sh chats list --output text
# Markdown format
~/clawd/skills/beeper-api-cli/beeper.sh chats list --output markdown
Example JSON output:
[
{
"id": "!wcn4YMCOtKUEtxYXYAq1:beeper.local",
"title": "beeper-api-cli - Lion Bot",
"type": "group",
"network": "Telegram",
"unreadCount": 15
}
]
~/clawd/skills/beeper-api-cli/beeper.sh chats get <chat-id> --output json
# Get last 50 messages (default)
~/clawd/skills/beeper-api-cli/beeper.sh messages list --chat-id <chat-id>
# Get specific number of messages
~/clawd/skills/beeper-api-cli/beeper.sh messages list --chat-id <chat-id> --limit 20 --output json
Example JSON output:
[
{
"id": "42113",
"chatID": "!wcn4YMCOtKUEtxYXYAq1:beeper.local",
"senderName": "ClawdBot",
"text": "Hello world!",
"timestamp": "2026-01-19T22:17:38.000Z",
"isSender": true
}
]
# ā ļø REQUIRES USER APPROVAL FIRST - see Message Sending Policy above
~/clawd/skills/beeper-api-cli/beeper.sh send --chat-id <chat-id> --message "Your message here"
Example output:
{
"success": true,
"message_id": "msg_123",
"chat_id": "!wcn4YMCOtKUEtxYXYAq1:beeper.local"
}
# Search across all chats
~/clawd/skills/beeper-api-cli/beeper.sh search --query "keyword" --limit 10 --output json
~/clawd/skills/beeper-api-cli/beeper.sh discover
# 1. List chats to find the right one
CHATS=$(~/clawd/skills/beeper-api-cli/beeper.sh chats list --output json)
# 2. Extract chat ID (using jq)
CHAT_ID=$(echo "$CHATS" | jq -r '.[] | select(.title | contains("Project")) | .id')
# 3. Send message
~/clawd/skills/beeper-api-cli/beeper.sh send --chat-id "$CHAT_ID" --message "Update ready!"
# Get recent messages for context
~/clawd/skills/beeper-api-cli/beeper.sh messages list --chat-id <chat-id> --limit 20 --output json | jq
# Get all chats with unread count
~/clawd/skills/beeper-api-cli/beeper.sh chats list --output json | jq '.[] | select(.unreadCount > 0) | {title, network, unread: .unreadCount}'
jq for filteringID: !wcn4YMCOtKUEtxYXYAq1:beeper.local
Title: beeper-api-cli - Lion Bot
Type: group
Network: Telegram
Unread: 15
## beeper-api-cli - Lion Bot
- **ID**: !wcn4YMCOtKUEtxYXYAq1:beeper.local
- **Type**: group
- **Network**: Telegram
- **Unread**: 15
Different networks use different ID formats:
!wcn4YMCOtKUEtxYXYAq1:beeper.local15551234567@s.whatsapp.net)+15551234567)Use chats list to discover the exact format for your chats.
You MUST set these environment variables before using the CLI:
export BEEPER_TOKEN="your-bearer-token-from-beeper-desktop"
How to get your token:
Without this token, the CLI will return "Unauthorized" errors.
export BEEPER_API_URL="http://[::1]:23373" # Default value
Default behavior:
http://[::1]:23373 (localhost on IPv6)When to change:
If running remotely:
BEEPER_API_URL to: http://:23373 Example for remote access:
export BEEPER_API_URL="http://192.168.1.100:23373"
export BEEPER_TOKEN="your-token-here"
The skill wrapper (beeper.sh) will:
$BEEPER_TOKEN from environment (you must set this!)$BEEPER_API_URL to http://[::1]:23373 if not setBEEPER_TOKEN is not set# Check if Beeper Desktop is running
ps aux | grep -i beeper
# Start Beeper Desktop
open -a "Beeper Desktop" # macOS
This means you haven't set BEEPER_TOKEN or it's invalid.
Fix:
# 1. Check if token is set
echo $BEEPER_TOKEN
# If empty or wrong, get a new token from Beeper Desktop:
# - Open Beeper Desktop
# - Settings ā Advanced ā API
# - Enable API if not already enabled
# - Copy the Bearer token shown
# - Set it in your environment:
export BEEPER_TOKEN="paste-the-token-here"
# Test it works:
~/clawd/skills/beeper-api-cli/beeper.sh chats list
Important Notes:
# List all chats to find correct ID
~/clawd/skills/beeper-api-cli/beeper.sh chats list --output text | grep -i "search-term"
If you want to run the CLI from a different computer:
1. Configure Beeper Desktop to allow remote access:
- Open Beeper Desktop (on the machine running Beeper)
- Settings ā Advanced ā API
- Find the "Allowed IP Addresses" section
- Add the IP address of the machine running the CLI
- Example: 192.168.1.50
2. Set BEEPER_API_URL to point to the remote machine:
# On the machine running the CLI:
export BEEPER_API_URL="http://<beeper-desktop-ip>:23373"
export BEEPER_TOKEN="your-token"
# Example:
export BEEPER_API_URL="http://192.168.1.100:23373"
Default behavior (localhost only):
http://[::1]:23373 (IPv6 localhost)#!/bin/bash
BEEPER="$HOME/clawd/skills/beeper-api-cli/beeper.sh"
# Get chats with unread messages
$BEEPER chats list --output json | \
jq -r '.[] | select(.unreadCount > 0) | "\(.title) (\(.network)): \(.unreadCount) unread"'
#!/bin/bash
BEEPER="$HOME/clawd/skills/beeper-api-cli/beeper.sh"
CHAT_ID="!wcn4YMCOtKUEtxYXYAq1:beeper.local"
# Get last 10 messages in readable format
$BEEPER messages list --chat-id "$CHAT_ID" --limit 10 --output text
#!/bin/bash
BEEPER="$HOME/clawd/skills/beeper-api-cli/beeper.sh"
# Search for mentions
RESULTS=$($BEEPER search --query "@clawdbot" --limit 5 --output json)
# Process results and respond (LLM integration point)
echo "$RESULTS" | jq
When using from Clawdbot tools, the environment variables are already configured:
# Direct usage from exec tool
~/clawd/skills/beeper-api-cli/beeper.sh chats list --output json
The skill wrapper handles:
BEEPER_API_URL and BEEPER_TOKEN~/clawd/skills/beeper-api-cli/beeper.sh/Users/ashrafali/clawd/beeper-api-cli/beeperā Read-only and write operations (unlike other tools)
ā LLM-optimized JSON output
ā Human-readable text and markdown formats
ā Auto-discovery of Beeper Desktop API
ā Cross-platform binaries (macOS, Linux, Windows)
ā Environment variable configuration
ā Comprehensive error messages
ā Unix pipeline friendly
Latest (dev build from source)
Generated Mar 1, 2026
Businesses can use this skill to monitor and respond to customer inquiries across multiple messaging platforms like WhatsApp and Telegram. Agents can fetch unread messages, draft responses, and send them after approval, ensuring timely support while maintaining oversight.
Teams can integrate this skill to send automated alerts or updates to group chats on platforms such as Signal or Facebook Messenger. For example, it can notify team members about project milestones or system outages, with all messages requiring explicit user approval to prevent spam.
Marketing professionals can leverage this skill to search for keywords across connected networks like Twitter/X and Instagram, gathering insights on brand mentions or trends. It allows for drafting and sending engagement messages after approval, enhancing community management.
Individuals can use this skill to manage personal communications by listing chats, reading messages, and sending replies across platforms such as WhatsApp and Telegram. It helps organize conversations and automate routine responses, with strict approval protocols to ensure control.
Event organizers can employ this skill to send reminders or updates to participants via platforms like LinkedIn or Telegram. It enables fetching chat lists, drafting messages for approval, and ensuring consistent communication for events like webinars or meetups.
Offer basic messaging and reading features for free, with premium tiers providing advanced analytics, higher message limits, and priority support. Revenue is generated through subscription fees from businesses needing scalable communication tools.
License the skill as a customizable white-label product for companies to integrate into their own customer service or internal communication systems. Revenue comes from one-time licensing fees or ongoing maintenance contracts.
Provide consulting services to help businesses set up and optimize the skill for specific use cases, such as automating support workflows or integrating with existing CRM systems. Revenue is earned through project-based fees or hourly rates.
š¬ Integration Tip
Ensure Beeper Desktop is running and API access is enabled with the token set in environment variables; use JSON output for easy parsing in automated workflows.
iMessage/SMS CLI for listing chats, history, watch, and sending.
Use when you need to control Discord from Clawdbot via the discord tool: send messages, react, post or upload stickers, upload emojis, run polls, manage threads/pins/search, fetch permissions or member/role/channel info, or handle moderation actions in Discord DMs or channels.
Use when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Send WhatsApp messages to other people or search/sync WhatsApp history via the wacli CLI (not for normal user chats).
Build or update the BlueBubbles external channel plugin for Clawdbot (extension package, REST send/probe, webhook inbound).
OpenClaw skill for designing Telegram Bot API workflows and command-driven conversations using direct HTTPS requests (no SDKs).