Connect Telegram, Discord, Slack, WhatsApp, and Twilio to any LLM. 24 built-in tools, long-term memory, subagents, cron scheduling, and MCP support.
Telegram, Discord, Slack, WhatsApp, Twilio SMS/MMS. Each is a Cargo feature flag — compile only what you deploy.
Background indexing, automatic fact extraction from conversations, daily notes, and optional hybrid vector+keyword search via local ONNX embeddings.
Every tool has timeout protection, panic isolation via tokio::spawn, result caching, and truncation middleware. Plus MCP for external tool servers.
Semaphore-based concurrency control, context injection from compaction summaries, silent mode for daemon tasks, and lifecycle management.
Cron expressions, intervals, one-shot timers. Agent mode triggers a full LLM turn; echo mode delivers messages directly. Auto-expiry and run limits.
Shell command allowlists + blocklists, SSRF protection, path traversal prevention, secret redaction in logs, per-channel sender allowlists, OAuth credential protection.
Local whisper.cpp inference or cloud Whisper API. Automatic routing with fallback. Audio converted to 16kHz mono via ffmpeg subprocess.
Connect external tool servers via child processes. Tools are auto-discovered at startup and registered as native tools with full middleware pipeline.
# Build only the channels you need
cargo build --release --no-default-features \
--features channel-telegram,channel-slack
Rust nightly toolchain and cmake. Optional: ffmpeg for voice.
rustup toolchain install nightly-2026-02-06 rustup override set nightly-2026-02-06 sudo apt install cmake
Clone and build. Select only the channels you need.
git clone https://github.com/oxicrab/oxicrab cd oxicrab cargo build --release
Create config with your API keys and channel tokens.
mkdir -p ~/.oxicrab cp config.example.json ~/.oxicrab/config.json
Start the multi-channel gateway or use CLI mode.
./target/release/oxicrab gateway ./target/release/oxicrab agent -m "Hello!" ./target/release/oxicrab onboard
{
"agents": {
"defaults": {
"workspace": "~/.oxicrab/workspace",
"model": "claude-sonnet-4-5-20250929",
"maxTokens": 8192,
"temperature": 0.7,
"maxToolIterations": 20,
"sessionTtlDays": 30,
"memoryIndexerInterval": 300,
"mediaTtlDays": 7,
"maxConcurrentSubagents": 5,
"localModel": null,
"compaction": {
"enabled": true,
"thresholdTokens": 40000,
"keepRecent": 10,
"extractionEnabled": true,
"model": null
},
"daemon": {
"enabled": true,
"interval": 300,
"executionModel": null,
"executionProvider": null,
"strategyFile": "HEARTBEAT.md",
"maxIterations": 25
},
"memory": {
"archiveAfterDays": 30,
"purgeAfterDays": 90,
"embeddingsEnabled": false,
"embeddingsModel": "BAAI/bge-small-en-v1.5",
"hybridWeight": 0.5
}
}
},
"channels": {
"telegram": {
"enabled": false,
"token": "your-telegram-bot-token",
"allowFrom": [],
"proxy": null
},
"discord": {
"enabled": false,
"token": "your-discord-bot-token",
"allowFrom": []
},
"slack": {
"enabled": false,
"botToken": "xoxb-your-slack-bot-token",
"appToken": "xapp-your-slack-app-token",
"allowFrom": []
},
"whatsapp": {
"enabled": false,
"allowFrom": []
},
"twilio": {
"enabled": false,
"accountSid": "your-twilio-account-sid",
"authToken": "your-twilio-auth-token",
"phoneNumber": "+1234567890",
"webhookPort": 8080,
"webhookPath": "/twilio/webhook",
"webhookUrl": "https://your-domain.com/twilio/webhook",
"allowFrom": []
}
},
"providers": {
"anthropic": {
"apiKey": "sk-ant-your-anthropic-key",
"apiBase": null
},
"openai": {
"apiKey": "",
"apiBase": null
},
"gemini": {
"apiKey": "",
"apiBase": null
}
// Also: OpenRouter, DeepSeek, Groq, Ollama, Moonshot, Zhipu, DashScope, vLLM
},
"gateway": {
"host": "0.0.0.0",
"port": 18790
},
"tools": {
"web": {
"search": {
"provider": "brave",
"apiKey": "your-brave-search-api-key",
"maxResults": 5
}
},
"exec": {
"timeout": 60,
"allowedCommands": ["ls", "find", "cat", "grep", "git", "cargo", "node", "python3"]
},
"restrictToWorkspace": false,
"google": {
"enabled": false,
"clientId": "your-google-client-id",
"clientSecret": "your-google-client-secret",
"scopes": [
"https://www.googleapis.com/auth/gmail.modify",
"https://www.googleapis.com/auth/gmail.send",
"https://www.googleapis.com/auth/calendar.events",
"https://www.googleapis.com/auth/calendar.readonly"
]
},
"github": {
"enabled": false,
"token": "ghp_your-github-token"
},
"weather": {
"enabled": false,
"apiKey": "your-openweathermap-api-key"
},
"todoist": {
"enabled": false,
"token": "your-todoist-api-token"
},
"media": {
"enabled": false,
"radarr": {
"url": "http://localhost:7878",
"apiKey": "your-radarr-api-key"
},
"sonarr": {
"url": "http://localhost:8989",
"apiKey": "your-sonarr-api-key"
}
},
"obsidian": {
"enabled": false,
"apiUrl": "https://127.0.0.1:27124",
"apiKey": "your-obsidian-local-rest-api-key",
"vaultName": "MyVault",
"syncInterval": 300,
"timeout": 15
},
"browser": {
"enabled": false,
"headless": true,
"chromePath": null,
"timeout": 30
},
"imageGen": {
"enabled": false,
"defaultProvider": "openai"
},
"mcp": {
"servers": {
"example-server": {
"command": "npx",
"args": ["-y", "@example/mcp-server"],
"env": {},
"enabled": true
}
}
}
},
"voice": {
"transcription": {
"enabled": false,
"apiKey": "your-groq-api-key",
"apiBase": "https://api.groq.com/openai/v1/audio/transcriptions",
"model": "whisper-large-v3-turbo",
"localModelPath": "",
"preferLocal": true,
"threads": 4
}
}
}
name(), description(), parameters() via JSON Schema, execute(). Optional cacheable(). Registered in ToolRegistry with middleware pipeline.
start(), stop(), send(). Optional: send_typing(), edit_message(), delete_message(). Auto-reconnect with exponential backoff.
chat(ChatRequest) → LLMResponse. Default chat_with_retry() with backoff. warmup() pre-warms HTTP connection pools.
before_execute() can short-circuit, after_execute() can modify results. Built-in: Cache, Truncation, Logging.
Central execution engine. Panic isolation via tokio::spawn, timeouts, LRU cache (128 entries, 5min TTL), parallel execution.
Auto-selects provider by model name. OAuth-first for Anthropic, then API key strategy with OpenAI-compatible matching.
src/ ├── agent/ # Agent loop, context, memory, tools, subagents │ └── tools/ # 24 built-in tools + MCP integration ├── auth/ # OAuth authentication (Google) ├── bus/ # Message bus for channel-agent communication ├── channels/ # Telegram, Discord, Slack, WhatsApp, Twilio ├── cli/ # Command-line interface ├── config/ # Configuration schema and loader ├── cron/ # Cron job scheduling service ├── providers/ # Anthropic, OpenAI, Gemini, OpenAI-compat ├── session/ # SQLite-backed session management ├── errors.rs # OxicrabError typed error enum └── utils/ # URL security, transcription, media
Open source, MIT licensed, built in Rust. Contributions welcome.