On March 20, 2026, Anthropic shipped Claude Code Channels — a research preview feature that turns Claude Code into an always-on AI agent you can message from Telegram or Discord. Send a message from your phone, and Claude Code on your server picks it up, executes the work (writes code, runs tests, commits changes), and replies through the same chat.
It's Anthropic's answer to OpenClaw, but with the full power of Claude behind it and a polished, security-first design. The catch? Claude Code needs a machine to run on. Running it on your laptop means it stops when you close the lid. The solution: a VPS that's always on.
This guide walks you through setting up Claude Code Channels on a DanubeData VPS so you have a permanent AI coding assistant reachable from anywhere.
What Are Claude Code Channels?
Channels are a new capability in Claude Code that lets external messages, notifications, and webhooks flow directly into a running session. Claude can respond to events even when you're not at the terminal.
Under the hood, a Channel is an MCP (Model Context Protocol) server that declares the claude/channel capability and pushes events into a running Claude Code session. The pre-built channels for Telegram and Discord handle all the plumbing — you just configure and go.
How It Works
- Claude Code runs on your VPS with a channel plugin enabled
- You send a message via Telegram or Discord
- The channel plugin receives the message and injects it into the Claude Code session
- Claude reads the message, executes the requested task (with full filesystem, Git, and MCP access)
- Claude sends the response back through the same messaging app
Key Features
- Two-way communication: Not just notifications — full back-and-forth conversation
- Full Claude Code capabilities: File editing, Git operations, test execution, MCP tool access
- Security allowlist: Only paired/approved accounts can send messages to your instance
- Plugin architecture: Telegram and Discord are first, but the MCP-based design means more platforms can follow
- Session persistence: The Claude Code session maintains context between messages
Prerequisites
Before you start, make sure you have:
- A DanubeData VPS — The CX11 plan (1 vCPU, 2 GB RAM) at €4.49/month is sufficient since heavy processing happens on Anthropic's cloud. For running alongside other services, consider the CX21 plan (2 vCPUs, 4 GB RAM) at €5.99/month
- Ubuntu 24.04 or Debian 12
- A claude.ai account — Channels require claude.ai login (Console/API key auth is not supported)
- Claude Code v2.1.80 or later
- Bun runtime — The pre-built channel plugins are Bun scripts and won't run on Node.js or Deno
- A Telegram or Discord account
Step 1: Set Up Your VPS
Create a VPS from the DanubeData dashboard and SSH in:
# Update and secure the system
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git tmux ufw
# Configure firewall
sudo ufw allow OpenSSH
sudo ufw enable
Step 2: Install Node.js and Bun
Claude Code requires Node.js, and the channel plugins specifically need Bun:
# Install Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Install Bun
curl -fsSL https://bun.sh/install | bash
source ~/.bashrc
# Verify
node --version # v22.x+
bun --version # v1.x+
Step 3: Install Claude Code
# Install Claude Code globally
npm install -g @anthropic-ai/claude-code
# Verify installation
claude --version # Should be v2.1.80+
Step 4: Authenticate with claude.ai
Channels require claude.ai authentication (not API keys). Run the login flow:
# Start the authentication flow
claude login
# This will display a URL — open it in your browser,
# log in to claude.ai, and paste the code back into the terminal
Step 5: Set Up the Telegram Channel
Telegram is the fastest to set up (about 5 minutes, no server invite needed):
Create a Telegram Bot
- Open Telegram and message @BotFather
- Send
/newbotand follow the prompts - Copy the bot token — you'll need it next
Configure the Channel
# Create a project directory for Claude Code to work in
mkdir -p ~/projects && cd ~/projects
# Initialize a Claude Code session with the Telegram channel
claude --channel telegram
Claude Code will prompt you for:
- Bot token: Paste the token from @BotFather
- Pairing: It will display a pairing code — send this code to your bot on Telegram to link your account
Once paired, only your Telegram account can communicate with this Claude Code instance. Strangers DMing the bot will be silently ignored.
Step 5b: Set Up the Discord Channel (Alternative)
Choose Discord if you want message history, guild channels, or team collaboration:
Create a Discord Bot
- Go to the Discord Developer Portal
- Create a new application and add a Bot
- Enable the Message Content Intent under Privileged Gateway Intents
- Copy the bot token
- Generate an invite link with
Send MessagesandRead Message Historypermissions - Invite the bot to your server
Configure the Channel
claude --channel discord
Follow the same pairing flow as Telegram — Claude Code will guide you through it.
Step 6: Run Claude Code as a Persistent Service
The key to a VPS deployment is making Claude Code run continuously. You have two options:
Option A: tmux (Quick and Simple)
# Create a persistent tmux session
tmux new-session -d -s claude
# Start Claude Code with the Telegram channel inside it
tmux send-keys -t claude 'cd ~/projects && claude --channel telegram' Enter
# Detach and let it run
# You can reattach later with: tmux attach -t claude
Option B: systemd (Production-Grade)
sudo tee /etc/systemd/system/claude-code.service << 'EOF'
[Unit]
Description=Claude Code with Telegram Channel
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/home/your-username/projects
ExecStart=/usr/bin/claude --channel telegram
Restart=on-failure
RestartSec=10
Environment=HOME=/home/your-username
Environment=PATH=/home/your-username/.bun/bin:/usr/local/bin:/usr/bin:/bin
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable claude-code
sudo systemctl start claude-code
# Check status
sudo systemctl status claude-code
sudo journalctl -u claude-code -f
Step 7: Test It
Open Telegram (or Discord) on your phone and send your bot a message:
Create a new Python file called hello.py that prints "Hello from Claude Code Channels!"
Claude Code will:
- Receive the message via the channel
- Create the file on your VPS
- Reply in Telegram confirming the file was created
Try more complex tasks:
Clone https://github.com/your-user/your-repo, review the latest 3 commits, and summarise the changes
Run the test suite in ~/projects/my-app and tell me if anything failed
Security Considerations
Claude Code Channels is designed with security in mind, but running it on a VPS requires extra attention:
Access Control
- Allowlist is mandatory: Only paired accounts can interact with your bot. This is enforced at the channel level — unpaired users are silently ignored
- One session, one user: Each Claude Code session has its own channel configuration. For team access, run separate sessions
Filesystem Isolation
- Run Claude Code as a non-root user with limited permissions
- Use the
WorkingDirectoryin systemd to constrain where Claude operates - Consider running inside a Docker container for additional isolation
Network Security
# Ensure only SSH is open — Claude Code Channels
# uses outbound connections only (Telegram Bot API polling)
sudo ufw status
# Should show:
# OpenSSH ALLOW Anywhere
Audit Logging
Claude Code logs all actions. Review them periodically:
# View recent Claude Code activity
sudo journalctl -u claude-code --since "1 hour ago"
Claude Code Channels vs OpenClaw
Both tools let you message an AI agent from Telegram. Here's how they compare:
| Feature | Claude Code Channels | OpenClaw |
|---|---|---|
| LLM | Claude (Anthropic cloud) | Any (OpenAI, Anthropic, Ollama) |
| Local LLM support | No (cloud only) | Yes (via Ollama) |
| Cost | claude.ai subscription | Free + API keys or Ollama |
| Code quality | Claude Opus/Sonnet (best-in-class) | Depends on chosen model |
| Setup time | ~5 minutes | ~15 minutes |
| Open source | Partially (channel plugins are) | Fully open source |
| Messaging platforms | Telegram, Discord | Telegram, Discord, and more |
| VPS RAM needed | 1-2 GB (lightweight) | 2-4 GB (or 8+ GB with Ollama) |
| Best for | Developers who want the best AI | Privacy-first, model-agnostic users |
Our recommendation: If you're primarily a developer who wants the highest-quality code generation and don't mind a claude.ai subscription, Claude Code Channels is the better choice. If you want full control over the model, zero ongoing costs, or need to keep everything local for privacy reasons, go with OpenClaw.
The good news? Both run beautifully on a DanubeData VPS, and you can even run them side by side.
Advanced: Running Both on the Same VPS
Want the best of both worlds? You can run Claude Code Channels and OpenClaw on the same VPS. Claude Code is lightweight (~200 MB RAM), so it pairs well with an OpenClaw + Ollama stack:
# Claude Code Channels on systemd
sudo systemctl start claude-code
# OpenClaw via Docker Compose (separate directory)
cd ~/openclaw && docker compose up -d
# Total resource usage on a CX31 (8 GB RAM):
# Claude Code: ~200 MB
# OpenClaw: ~500 MB
# Ollama 8B: ~5 GB
# System: ~1 GB
# Free: ~1.3 GB headroom
Troubleshooting
Channel not receiving messages
- Verify Claude Code is running:
sudo systemctl status claude-code - Check that Bun is in the PATH:
which bun - Ensure you completed the pairing step in Telegram
Authentication errors
- Channels require claude.ai login, not API keys. Re-run
claude login - Check that your claude.ai subscription is active
Claude Code crashes on low memory
- Upgrade to a larger VPS plan (CX21 or higher)
- Add swap space:
sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
Conclusion
Claude Code Channels transforms Claude from a tool you use at your desk into an always-available AI coding partner you can reach from anywhere. Combined with a DanubeData VPS, you get a setup that's:
- Always on: No need to keep your laptop open
- Secure: Allowlist-based access, no open ports required
- Affordable: Starting at just €4.49/month for the VPS
- Powerful: Full Claude Opus/Sonnet capabilities with filesystem and Git access
Whether you're reviewing PRs from your phone on the train, kicking off test suites while away from your desk, or asking Claude to refactor a module while you focus on design — Channels makes it all possible.
Get started now: Create a DanubeData account, spin up a VPS, and have Claude Code Channels running in under 10 minutes.
Questions? Contact our team