Juju Charm for
OpenClaw
A production-ready Juju machine charm that deploys OpenClaw, the self-hosted personal AI assistant with multi-platform messaging support.
🏗️ Gateway-Node Architecture
Charm Features
Everything you need for a production OpenClaw deployment
🚀 Deployment Workflow
One-Command Deploy
Deploy OpenClaw to any Ubuntu machine with a single Juju command. No complex setup required.
Multi-Platform Messaging
Supports 13+ platforms: WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Teams, and more.
AI Provider Flexibility
Configure up to 11 AI models simultaneously. Works with Anthropic Claude, OpenAI, Google Gemini, AWS Bedrock, or local models via Ollama.
Security-First Design
Built-in sandboxing, pairing mode for DMs, and configurable security policies.
Browser Automation
Integrated Playwright for web scraping, testing, and automated browsing tasks.
Fully Configurable
Extensive configuration options via Juju config. Update anytime without redeployment.
Systemd Integration
Managed as a systemd service with automatic restarts, logging, and resource limits.
Auto-Update Support
Optional automatic updates to keep your OpenClaw instance current with latest features.
Production-Ready
Tested CI/CD pipeline with automated installation tests before CharmHub publication.
Quick Start
Get OpenClaw running in minutes
Deploy the Charm
Deploy OpenClaw to a Juju machine or LXD container
juju deploy openclaw --channel edge
Configure AI Provider
Set up your AI model credentials (Anthropic, OpenAI, Google, etc.)
juju config openclaw \
ai-provider="anthropic" \
ai-api-key="sk-ant-xxx" \
ai-model="claude-opus-4-5"
Enable Messaging Channels (Optional)
Connect your preferred messaging platforms
juju config openclaw \
telegram-bot-token="123456:ABC-DEF"
Access the Gateway
The OpenClaw Gateway will be running on port 18789
juju status openclaw
Configuration Options
Customize OpenClaw to fit your needs
🤖 AI Configuration
- ai-provider
- Primary AI provider: anthropic, openai, google, bedrock, ollama
- ai-model
- Model to use (e.g., claude-opus-4-5, gpt-4)
- ai-api-key
- API key for the selected AI provider
- ai[0-9]-provider
- Additional AI provider slots (0-9) for multi-model support
- ai[0-9]-model
- Model name for additional AI slots (0-9)
- ai[0-9]-api-key
- API key for additional AI slots (0-9)
🌐 Gateway Settings
- gateway-port
- Gateway WebSocket/HTTP port (default: 18789)
- gateway-bind
- Bind mode: loopback, lan, or specific IP
- log-level
- Logging level: debug, info, warn, error
💬 Messaging Platforms
- telegram-bot-token
- Telegram bot token from @BotFather
- discord-bot-token
- Discord bot token from Developer Portal
- slack-bot-token
- Slack bot token (xoxb-...)
- slack-app-token
- Slack app token (xapp-...)
- line-channel-access-token
- LINE Messaging API channel access token
- line-channel-secret
- LINE Messaging API channel secret
🔒 Security Settings
- dm-policy
- DM access policy: pairing, open, or closed
- sandbox-mode
- Sandbox mode: all, non-main, or none
- use-browser
- Browser for automation: chrome, chromium, firefox, or empty
⚙️ Installation Options
- install-method
- Installation method: npm, pnpm, or source
- openclaw-version
- Version to install (latest or specific)
- auto-update
- Automatically update on charm upgrade
- node-version
- Node.js major version (minimum 22)
Multi-Unit Scaling
Deploy multiple units for horizontal scaling with automatic Gateway-Node architecture
📈 Horizontal Scaling Architecture
Distributed Access
Nodes provide system access across multiple machines for distributed command execution.
Load Distribution
Nodes handle system.run commands across multiple machines. Parallel task execution.
Dynamic Scaling
Add or remove units on-the-fly with juju add-unit. Zero downtime.
Auto Coordination
Nodes automatically discover and connect to Gateway through peer relations.