Skip to main content
Claudio uses environment variables to configure its behavior across all channels (Telegram, Slack, CLI). Set these in your .env file at the root of the project.

Quick setup

  1. Copy the example file:
    cp .env.example .env
    
  2. Edit .env with your values
  3. Restart the bot to apply changes

Core configuration

WORKSPACE_PATH
string
required
The directory where Claudio executes commands and reads project context.
WORKSPACE_PATH=/path/to/claudio
This should point to your Claudio project root so it can read CLAUDE.md and access MCPs.
CLAUDE_CLI_PATH
string
default:"claude"
Path to the Claude Code CLI executable.
CLAUDE_CLI_PATH=claude
By default, Claudio searches for claude in your PATH. Specify a full path if needed:
CLAUDE_CLI_PATH=/usr/local/bin/claude

MCP and permissions

ALLOWED_TOOLS
string
default:"*"
Controls which tools Claude can use automatically.
ALLOWED_TOOLS=*
  • * - Allow all tools (recommended for MCPs)
  • Comma-separated list - Only allow specific tools: Read,Edit,Bash
When using MCPs, set this to * to avoid permission prompts that can’t be answered in non-interactive mode.
SKIP_PERMISSIONS
boolean
default:"true"
Bypass all permission checks for tools and MCPs.
SKIP_PERMISSIONS=true
This is required for Telegram and Slack bots because they run in non-interactive mode. When enabled, Claudio uses the --dangerously-skip-permissions flag.
Only enable this in trusted environments. It allows Claudio to execute any tool without confirmation.

Performance and limits

COMMAND_TIMEOUT
number
default:"1800"
Maximum execution time for commands in seconds.
COMMAND_TIMEOUT=1800
Default is 1800 seconds (30 minutes). Prevents long-running or stuck commands from blocking the bot.
MAX_INPUT_LENGTH
number
default:"10000"
Maximum length of user input in characters.
MAX_INPUT_LENGTH=10000
Protects against DoS attacks from extremely long messages that could consume excessive resources.
BUFFER_TIMEOUT
number
default:"1.5"
Time in seconds to accumulate output before sending (Telegram only).
BUFFER_TIMEOUT=1.5
Claudio buffers output to avoid flooding users with many small messages. Lower values send updates faster but create more messages.

Voice transcription (optional)

OPENAI_API_KEY
string
OpenAI API key for voice message transcription using Whisper.
OPENAI_API_KEY=sk-proj-...
Get your API key at platform.openai.com/api-keys.If not set, voice messages will not work in Telegram and Slack.
USE_WHISPER_API
boolean
default:"true"
Use OpenAI’s Whisper API for transcription.
USE_WHISPER_API=true
Set to false to use a local Whisper model instead (requires additional setup).
WHISPER_LANGUAGE
string
default:"es"
Language code for Whisper transcription.
WHISPER_LANGUAGE=es
Use en for English, es for Spanish, etc. Set to empty string for auto-detection.

Channel-specific variables

Telegram

TELEGRAM_BOT_TOKEN
string
required
Your Telegram bot token from @BotFather.
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
Get this by creating a bot with @BotFather on Telegram.

Slack

SLACK_BOT_TOKEN
string
required
Your Slack bot token (starts with xoxb-).
SLACK_BOT_TOKEN=xoxb-...
Get this from your Slack App’s “OAuth & Permissions” page.
SLACK_APP_TOKEN
string
required
Your Slack app-level token for Socket Mode (starts with xapp-).
SLACK_APP_TOKEN=xapp-...
Generate this in your Slack App’s “Basic Information” under “App-Level Tokens”.

Example configuration

.env
# Core
WORKSPACE_PATH=/Users/you/Dev/claudio
CLAUDE_CLI_PATH=claude

# Permissions (required for bots)
ALLOWED_TOOLS=*
SKIP_PERMISSIONS=true

# Security
COMMAND_TIMEOUT=1800
MAX_INPUT_LENGTH=10000
ALLOWED_USER_IDS=123456789

# Telegram
TELEGRAM_BOT_TOKEN=1234567890:ABC...

# Voice (optional)
OPENAI_API_KEY=sk-proj-...
WHISPER_LANGUAGE=es

Next steps

Security settings

Configure rate limiting and user authorization

MCP setup

Set up Model Context Protocol servers

Build docs developers (and LLMs) love