Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,12 @@ BRAVE_API_KEY=BSA-your-brave-api-key-here

# Your Telegram numeric user ID (get from @userinfobot)
# Grants privileged commands like /model in Telegram chat
TELEGRAM_OWNER_ID=your-telegram-user-id
TELEGRAM_OWNER_ID=your-telegram-user-id

# Slack App-Level Token for Socket Mode (from Slack App settings → Basic Information → App-Level Tokens)
# Must start with "xapp-". Leave empty to disable Slack plugin
SLACK_APP_TOKEN=

# Slack Bot User OAuth Token (from Slack App settings → OAuth & Permissions)
# Must start with "xoxb-". Leave empty to disable Slack plugin
SLACK_BOT_TOKEN=
19 changes: 7 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@
[![OpenRouter](https://img.shields.io/badge/OpenRouter-Free%20Tier-ff6b35?logoColor=white)](https://openrouter.ai)
[![OpenClaw](https://img.shields.io/badge/OpenClaw-2026-00e5cc?logoColor=white)](https://openclaw.bot)
[![Telegram](https://img.shields.io/badge/Telegram-Bot-26a5e4?logo=telegram&logoColor=white)](https://telegram.org)
[![Slack](https://img.shields.io/badge/Slack-Bot-4a154b?logo=slack&logoColor=white)](https://slack.com)

One-command deployment of an [OpenClaw](https://openclaw.bot) AI agent as a Telegram bot on DigitalOcean. After `terraform apply`, the bot is fully operational with no manual SSH steps required.
One-command deployment of an [OpenClaw](https://openclaw.bot) AI agent on DigitalOcean with Telegram support and Slack support. After `terraform apply`, the bot is fully operational with no manual SSH steps required.

## Features

- Telegram bot with DM and group chat support
- Slack bot support (Socket Mode)
- Web search via Brave Search (falls back to DuckDuckGo)
- 8 switchable free LLM models via `/model <alias>`
- Secrets managed via `.env` — never committed
Comment on lines 19 to 21
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README claims "8 switchable free LLM models", but the bootstrap config now defines many more models and the primary model is openrouter/openai/gpt-4o-mini (not marked :free). Please update the README to match the actual configured models/free-tier expectations, or adjust the config to keep the README statement true.

Copilot uses AI. Check for mistakes.
Expand All @@ -26,6 +28,8 @@ One-command deployment of an [OpenClaw](https://openclaw.bot) AI agent as a Tele
- DigitalOcean account + API token
- OpenRouter API key
- Telegram bot token (from [@BotFather](https://t.me/BotFather))
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slack tokens are listed under "Prerequisites", but the Terraform variables default to empty strings and the bootstrap only enables Slack when both tokens are set. Consider marking these as optional prerequisites (or move them into an optional section) to avoid implying Slack is required for a Telegram-only deployment.

Suggested change
- Telegram bot token (from [@BotFather](https://t.me/BotFather))
- Telegram bot token (from [@BotFather](https://t.me/BotFather))
### Optional (for Slack support)
Only required if you want to enable Slack in addition to Telegram:

Copilot uses AI. Check for mistakes.
- Slack App-Level token (starts with `xapp-`)
- Slack Bot User OAuth token (starts with `xoxb-`)

## Setup

Expand All @@ -44,6 +48,8 @@ Edit `.env` and fill in your values:
| `OPENCLAW_GATEWAY_TOKEN` | Any strong random string |
| `BRAVE_API_KEY` | From [api.search.brave.com](https://api.search.brave.com) — optional, falls back to DuckDuckGo |
| `TELEGRAM_OWNER_ID` | Your Telegram user ID from [@userinfobot](https://t.me/userinfobot) — grants `/model` and other privileged commands |
| `SLACK_APP_TOKEN` | Slack App-Level token (starts with `xapp-`) |
| `SLACK_BOT_TOKEN` | Slack Bot User OAuth token (starts with `xoxb-`) |

### 2. Configure infrastructure

Expand Down Expand Up @@ -90,17 +96,6 @@ Send a message to your bot on Telegram to confirm it's working.

In Telegram, use `/model <alias>`:

Comment on lines 97 to 98
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Switching Models" section now ends with In Telegram, use /model <alias>: but no longer includes the alias/model list or any guidance, leaving the instructions incomplete. Either restore the table/list (updated to the new aliases) or revise the section so it's actionable.

Suggested change
In Telegram, use `/model <alias>`:
In Telegram, use `/model <alias>` to switch the active model for your chat.
Replace `<alias>` with one of the model aliases configured for your bot deployment. For example:
- `/model llama`
- `/model mistral`
If an alias is not recognized, check the model alias configuration used by your deployment and then retry with a valid alias.

Copilot uses AI. Check for mistakes.
| Alias | Model |
|---|---|
| `llama` | Llama 3.3 70B (default) |
| `gemma` | Gemma 4 31B |
| `hermes` | Hermes 3 Llama 405B |
| `nemotron` | Nemotron Super 120B |
| `gpt` | GPT-OSS 120B |
| `coder` | Qwen3 Coder |
| `uncensored` | Dolphin Mistral 24B |
| `auto` | OpenRouter auto-select |

All models are free tier on OpenRouter (rate limits apply).

## Security Notes
Expand Down
2 changes: 2 additions & 0 deletions terraform/digitalOcean/.envrc
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ export TF_VAR_telegram_bot_token="$TELEGRAM_BOT_TOKEN"
export TF_VAR_openclaw_gateway_token="$OPENCLAW_GATEWAY_TOKEN"
export TF_VAR_brave_api_key="${BRAVE_API_KEY:-}"
export TF_VAR_telegram_owner_id="${TELEGRAM_OWNER_ID:-}"
export TF_VAR_slack_app_token="${SLACK_APP_TOKEN:-}"
export TF_VAR_slack_bot_token="${SLACK_BOT_TOKEN:-}"
Loading
Loading