#[delete-me]
1 messages Β· Page 1 of 1 (latest)
hetzner clawdbot - both gateway and client
Your setup sounds correct! Here's the deal for a headless VPS setup:
API Keys for MiniMax
Two options work:
-
Via env vars (simplest for headless):
# In ~/.clawdbot/.env or export before gateway start MINIMAX_API_KEY="sk-your-key-here" -
Via
clawdbot configure:clawdbot configure --section models.minimaxThis writes to
~/.clawdbot/clawdbot.jsonunder the models section.
Either approach works. The env var route is cleaner for Docker β just pass it in via -e MINIMAX_API_KEY=... or set it in your container's environment.
The Telegram Flow (headless)
Once your Gateway + Telegram channel are up:
- You β text the Telegram bot
- Telegram β sends webhook to Gateway
- Gateway β routes to your default agent
- Agent β calls MiniMax (or configured model), thinks, responds
- Gateway β sends reply back to Telegram
- You β see the response on your phone
No laptop, no UI needed. The Gateway handles everything. Just make sure:
channels.telegram.allowFromhas your Telegram user ID (not bot username)- Gateway is reachable by Telegram (webhook needs public IP/URL, or use polling)
Quick check
# Verify MiniMax is recognized
clawdbot models list | grep minimax
# Check gateway sees Telegram
clawdbot health
Docs: https://docs.clawd.bot/providers/minimax, https://docs.clawd.bot/concepts/models
Hey! π¦ Your headless VPS setup is exactly how it's meant to work β you're on the right track!
API Keys (MiniMax) β Best Approach for Docker
Env vars are the cleanest way for Docker:
# Option A: Pass to Docker
docker run -e MINIMAX_API_KEY="sk-..." ...
# Option B: Set in ~/.clawdbot/.env on the VPS
MINIMAX_API_KEY="sk-your-key"
Or use the CLI (also works headlessly):
clawdbot configure --section models.minimax
Both end up doing the same thing. The env approach is simpler for Docker since you can manage secrets outside the container.
The Flow (works headless)
Once Gateway + Telegram are configured:
- You β message Telegram bot
- Gateway β receives via webhook (or polling)
- Agent β gets routed the message, calls MiniMax
- Response β comes back through Gateway β Telegram
No laptop needed at all. The whole thing runs server-side.
Quick Headless Checklist
# Verify MiniMax is recognized
clawdbot models list | grep minimax
# Check your Telegram config
clawdbot configure --section channels.telegram
# Make sure allowFrom has YOUR Telegram user ID (numeric)
Important Note on Telegram Webhooks
Since you're headless on a VPS:
- Webhooks need a public URL (Telegram calls back to it)
- Polling works without a public URL but uses more resources
For webhooks, you might need a reverse proxy (Caddy, nginx) or use Tailscale Serve to expose 127.0.0.1:18789 to Telegram.
Happy to help troubleshoot the Telegram setup once you get there! π¦
https://docs.clawd.bot/providers/minimax Β· https://docs.clawd.bot/concepts/models
how do i test - telegram send me msg? how do i test if minimax works?
Test Telegram
Option A: Send a message to your bot
- Open Telegram, find your bot, send
/start - The bot should reply (if properly configured)
Option B: Check via CLI
# Check Telegram channel status
clawdbot status --channels
# Tail logs to see incoming messages
clawdbot logs --follow
Test MiniMax
# List available models (should show MiniMax)
clawdbot models list | grep minimax
# Quick model probe
clawdbot models status --verbose
# Test a simple completion (from the VPS CLI)
clawdbot eval --model minimax/MiniMax-M2.1 "Say hi in exactly 3 words"
End-to-End Test (headless)
- Message your Telegram bot:
test - Check logs:
clawdbot logs --follow - You should see:
- Incoming message from Telegram
- Agent routing
- MiniMax API call
- Response sent back
If MiniMax fails, check:
# Verify API key is set
echo $MINIMAX_API_KEY
# Or check agent auth profiles
cat ~/.clawdbot/agents/*/agent/auth-profiles.json
i dont know. nothing works - telegram does not work, minimax does not wrok - i'm confused about what's running in docker and what's a clawdbot command that's seperate;
Hereβs a clean, paste-ready condensed version that keeps the most useful diagnostic info and stays well under 2,000 chars. I focused on status, errors, and actionable signals and removed UI tables + repetition.
Clawdbot status summary (condensed)
- Version: 2026.1.16-2
- OS: Linux 6.8.0-90-generic (x64)
- Node: 22.22.0
- Config: /root/.clawdbot/clawdbot.json
- Gateway: ws://127.0.0.1:18789 (local, reachable ~31ms)
- Dashboard: http://127.0.0.1:18789
- Tailscale: OFF (tailscale binary missing: ENOENT)
- Daemon: systemd not installed
Agents
- 1 agent (
main) β BOOTSTRAP: PENDING - 1 session (last active ~17m ago)
- 0 active agents
Channels
- Telegram: OK (1/1 account configured)
- WhatsApp: WARN (missing credentials file)
- Discord / Slack / Signal / iMessage: SETUP (not configured)
Telegram
- default account OK (token configured, allowlist set)
Critical Diagnosis
-
β Port 18789 already in use
- pid 14918: docker-proxy listening on 127.0.0.1:18789
- Container: clawdbot-clawdbot-gateway-1
-
Gateway bound to loopback only
-
No channel runtime errors detected
Logs (recent)
- Gateway received SIGUSR1 β restarting
- Gmail watcher stopped
- Cron started (0 jobs)
CLI issue
clawdbot evalβ unknown command
Docker
- clawdbot container running
- Port mapping: 127.0.0.1:18789 β 18789/tcp
Got it β the confusion is common! Let me untangle it:
The Setup (Simplified)
[VPS]
βββ Docker container (clawdbot-gateway) β running the actual Gateway
β βββ Gateway listens on: 127.0.0.1:18789 (inside container)
βββ clawdbot CLI (on VPS) β connects TO the gateway as a client
The CLI is not a separate gateway β it's a client that talks to the Docker gateway.
Your Problems
1. Port Conflict
Port 18789 already in use: docker-proxy (pid 14918) β container
The gateway inside Docker and the docker-proxy are fighting. Fix:
# Remove the existing container and recreate without host port binding
docker rm -f clawdbot-clawdbot-gateway-1
# Recreate with proper networking - don't map port 18789 to host
docker run -d --name clawdbot-gateway \
-v /root/.clawdbot:/root/.clawdbot \
-v /root/clawd:/root/clawd \
clawdbot/clawdbot:latest
2. Agent BOOTSTRAP: PENDING
Your main agent hasn't been initialized. Fix:
# Run the onboarding wizard inside Docker
docker exec -it clawdbot-clawdbot-gateway-1 pnpm clawdbot onboard
Or manually create the required files in ~/.clawdbot/agents/main/.
3. Test Commands
# Check if gateway is actually reachable
curl http://127.0.0.1:18789/health
# List models (inside container)
docker exec clawdbot-clawdbot-gateway-1 pnpm clawdbot models list
# Check agent status
docker exec clawdbot-clawdbot-gateway-1 pnpm clawdbot status
4. Telegram Test
# Inside container, check Telegram
docker exec clawdbot-clawdbot-gateway-1 pnpm clawdbot status --channels
Quick Fix Sequence
# 1. Stop the broken container
docker rm -f clawdbot-clawdbot-gateway-1
# 2. Check what's on port 18789
ss -tlnp | grep 18789
# 3. Start fresh (let Docker handle internal port, don't map to host)
docker run -d --name clawdbot-gateway \
-v /root/.clawdbot:/root/.clawdbot \
-v /root/clawd:/root/clawd \
-e MINIMAX_API_KEY="sk-your-key" \
clawdbot/clawdbot:latest
# 4. Check it's running
docker ps | grep clawdbot
# 5. Initialize agent
docker exec -it clawdbot-gateway pnpm clawdbot onboard
# 6. Check logs
docker logs -f clawdbot-gateway
What does docker ps | grep clawdbot show right now?