BlogTutorialClaude Code Channels on a VPS: Control Your AI Agent from Telegram and Discord (2026)

Claude Code Channels on a VPS: Control Your AI Agent from Telegram and Discord (2026)

Adrian Silaghi
Adrian Silaghi
March 28, 2026
13 min read
2 views
#claude-code #ai-assistant #telegram #discord #vps #anthropic #channels #developer-tools

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

  1. Claude Code runs on your VPS with a channel plugin enabled
  2. You send a message via Telegram or Discord
  3. The channel plugin receives the message and injects it into the Claude Code session
  4. Claude reads the message, executes the requested task (with full filesystem, Git, and MCP access)
  5. 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

  1. Open Telegram and message @BotFather
  2. Send /newbot and follow the prompts
  3. 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

  1. Go to the Discord Developer Portal
  2. Create a new application and add a Bot
  3. Enable the Message Content Intent under Privileged Gateway Intents
  4. Copy the bot token
  5. Generate an invite link with Send Messages and Read Message History permissions
  6. 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:

  1. Receive the message via the channel
  2. Create the file on your VPS
  3. 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 WorkingDirectory in 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

Share this article

Ready to Get Started?

Deploy your infrastructure in minutes with DanubeData's managed services.