Main Page GitHub Buy me a coffee
Getting Started

Intro

AI Agents SaaS based in OpenClaw — self-hosted, open source.

OpenOryxa is a self-hosted management platform for multiple OpenClaw AI agents. Think of it as your own private SaaS of OpenClaw: one dashboard, unlimited isolated agent containers, each with its own phone number, API key, model, and dedicated Chromium browser for web automation.

Unlike running a single OpenClaw instance, OpenOryxa lets you spin up multiple agents that coexist in the same Telegram or WhatsApp group — each with a different personality, trigger, or role. You can also expose a signup flow so your users self-provision their own agent instance, making it trivial to run a white-label AI agent SaaS on your own server.

Install

Run the install script on a fresh Ubuntu 22.04+ server:

curl -fsSL https://get.oryxa.digital | bash
Requirements: Ubuntu 22.04+ VPS with at least 1GB RAM and a public IP. Ports 80 and 443 must be open. A domain name pointing to your server is required for SSL.

The installer asks a few questions and sets everything up:

Then it will:

Configure

After installation, the installer prints your dashboard URL:

✓ OpenOryxa is ready!
  Dashboard: https://dashboard.yourdomain.com
  Password:  your-generated-password

Open the dashboard in your browser. On first login you'll be prompted to set a permanent admin password.

Create an agent

1

Click "New Agent"

Enter a name (lowercase letters and hyphens only), a display name, and choose an AI provider and model.

2

Add your API key

Paste your AI provider API key. It's stored encrypted on your server and never sent to OpenOryxa servers.

3

Set identity

Write an identity prompt that defines your agent's personality, role, and behavior.

4

Provision

Click "Create Agent". OpenOryxa spins up a Docker container, configures Traefik routing, and starts the agent. This takes about 30 seconds.

WhatsApp

To connect an agent to WhatsApp:

  1. Open the agent's settings in the dashboard
  2. Go to the WhatsApp tab
  3. Click Connect WhatsApp — a QR code appears
  4. Open WhatsApp on your phone → Linked Devices → Link a Device
  5. Scan the QR code
Note: WhatsApp connections require a personal phone number via the Baileys library. Using a WhatsApp Business API account is a separate setup.

Telegram

To connect an agent to Telegram:

  1. Create a bot on Telegram via @BotFather — run /newbot and copy the token
  2. Open the agent's settings → Telegram tab
  3. Paste the bot token and click Connect

Browser

Every agent automatically gets a dedicated Chromium instance for web browsing and automation. It's accessible via the agent's OpenClaw dashboard at https://<agent-name>.yourdomain.com.

Supported Channels

Each OpenClaw agent supports multiple messaging channels simultaneously. Connect one agent to WhatsApp and Telegram at the same time, or create specialized agents per platform.

Core (built-in)

ChannelNotes
WhatsApp core Via Baileys library. QR pairing from dashboard. Requires a personal phone number.
Telegram core Bot API. Create a bot via @BotFather. Supports groups and DMs.
WebChat core Embeddable web chat widget via WebSocket. No external account needed.
ChannelNotes
Discord plugin Bot API. Supports servers, channels, threads, and DMs.
Slack plugin Bolt SDK. Supports workspace bots and DMs.
Signal plugin Privacy-focused messaging. Requires a dedicated phone number.
SMS plugin Via Twilio webhook. Send and receive SMS to any number.
Voice Call plugin Telephony via Plivo, Telnyx, or Twilio. Supports inbound and outbound calls.
LINE plugin Messaging API bot. Popular in Japan, Taiwan, and Thailand.
Twitch plugin Chat channel bot via IRC connection.
IRC plugin Classic IRC servers with pairing controls.
Nostr plugin Decentralized DMs via NIP-04 protocol.

Enterprise & others

ChannelNotes
Microsoft Teams plugin Bot Framework with enterprise SSO support.
Google Chat plugin App API via HTTP webhook. Works with Google Workspace.
Mattermost plugin Bot API with WebSocket. Self-hosted or cloud.
Matrix plugin Open federated protocol. Works with Element and other clients.
Nextcloud Talk plugin Self-hosted Nextcloud chat integration.
WeChat plugin iLink bot via QR login. Popular in China.
Zalo plugin Popular Vietnamese messenger. Bot API and QR personal login variants.
Feishu plugin Lark/Feishu bot via WebSocket. Enterprise use in Asia.
Synology Chat plugin NAS-based team chat via webhooks.

AI Providers

Each agent has its own API key and model — you can mix providers across agents. Supported providers:

During installation the script asks which provider to use as the default for new agents. You can change this per-agent at any time in the dashboard.

Getting API Keys

You'll need a key from at least one provider. Steps for each:

OpenAI

  1. Create an account at platform.openai.com
  2. Go to API keys in the left menu
  3. Click Create new secret key — copy it immediately, it's only shown once
  4. Add a payment method under Billing to activate the key (free trial credits available for new accounts)

Key format: sk-...

Anthropic

  1. Create an account at console.anthropic.com
  2. Go to API Keys
  3. Click Create Key — copy it immediately
  4. Add credits under Plans & Billing (or use the free tier with rate limits)

Key format: sk-ant-...

Google Gemini

  1. Go to aistudio.google.com/app/apikey (sign in with your Google account)
  2. Click Create API key
  3. Copy the key — it's shown in the list anytime

Key format: AIza... — Gemini has a generous free tier (RPM-limited).

Groq

  1. Create an account at console.groq.com
  2. Go to API KeysCreate API Key
  3. Copy the key

Key format: gsk_... — Groq has a free tier with high speed inference.

Ollama (local, no key needed)

Ollama runs models locally on your server. No API key required:

  1. Install Ollama on your VPS: curl -fsSL https://ollama.com/install.sh | sh
  2. Pull a model: ollama pull llama3.2
  3. In OpenOryxa dashboard, select provider Ollama and set the base URL to http://host.docker.internal:11434
Tip: OpenOryxa shows a warning badge on the agent card when a key is exhausted or returns errors. Keys are stored encrypted on your server — never sent to OpenOryxa.

Custom Domains

Each agent gets a subdomain under your root domain: agent-name.yourdomain.com.

Wildcard DNS (required)

Point *.yourdomain.com to your server IP so every agent subdomain resolves automatically. In Cloudflare:

  1. Go to DNS → Add Record
  2. Type: A, Name: *, IPv4 Address: your server IP, Proxy: DNS only (grey cloud)
  3. Save — Traefik handles SSL automatically via Let's Encrypt

Wildcard SSL via Cloudflare (recommended)

For a wildcard SSL certificate covering all subdomains at once, use the Cloudflare DNS challenge:

  1. Create a Cloudflare API token
    Go to Cloudflare → My Profile → API Tokens → Create Token.
    Use the "Edit zone DNS" template. Under Zone Resources set Include → Specific zone → yourdomain.com.
    Copy the token.
  2. Add your DNS record
    Add an A record for * pointing to your server IP (DNS only, not proxied).
  3. Paste during install
    When the installer asks for a Cloudflare API token, paste it in.
    Traefik will use the DNS challenge to issue a single *.yourdomain.com wildcard certificate covering all agent subdomains.
Without a Cloudflare token: Traefik falls back to the TLS challenge and issues individual certificates per subdomain. This works but is slightly slower on first access per agent.

Backup

Agent data (conversation history, configuration) is stored in /opt/openoryxa/agents/<name>/. Back it up with:

tar czf openoryxa-backup-$(date +%Y%m%d).tar.gz /opt/openoryxa/agents/

Updating

To update OpenOryxa to the latest version:

curl -fsSL https://get.oryxa.digital | bash -- --update

This pulls the latest manager image and restarts containers without downtime to existing agents.

Environment Variables

The manager reads configuration from /opt/openoryxa/.env:

DOMAIN=yourdomain.com
ACME_EMAIL=you@example.com
CLOUDFLARE_API_TOKEN=your-cf-token   # optional, for wildcard SSL
ADMIN_PASSWORD=your-password
DEFAULT_AI_PROVIDER=openai           # openai | anthropic | gemini | groq | ollama
DEFAULT_AI_API_KEY=sk-...            # used as default when creating new agents

Troubleshooting

Agent container won't start

Check Docker logs: docker logs openclaw-<name>

SSL certificate not issued

Verify that your domain's DNS is pointing to your server and that ports 80/443 are open. Traefik logs: docker logs traefik

WhatsApp disconnects frequently

This is a WhatsApp limitation for third-party clients. Keep the agent container running continuously and avoid scanning the QR code from multiple devices.

API key returns 401

The key may be invalid or quota-exhausted. Update it in the agent's settings on the dashboard. OpenOryxa shows a warning badge on the agent card when the key is returning errors.