Admin Console
Overview
Health
Raw runtime status (JSON)
Routing map
The wiring between channels and backends, both directions. Every bot, number, and agent routes to a primary backend and falls back to a second one; a backend can serve many of them. Change a route by picking a backend on the right, then Save routing. A route pointing at a missing or disabled backend is flagged in red.
By backend who points here
By channel where each bot goes
Logs
The tail of the gateway's own structured log (.clawux/logs), newest last. Phone numbers and tokens are already masked. Use this to
watch a message flow through, or to see why a backend call failed, without shell access. Console output still goes to the service supervisor.
Wire a Bot
Wire a bot end to end in one flow: channel, token env, backends, optional allowlist entry. The save is scoped and the gateway hot starts the bot, so no restart is needed. Create the bot with your provider first (for Telegram: BotFather), export its token env where the gateway runs, then check it here.
-
Bot and token
Not checked yet. The check confirms the env resolves in the gateway process and, for Telegram, names the bot the token belongs to.
-
Backends
Several bots and channels can share one backend; replies always return to the conversation that asked. Need a new backend (an LLM endpoint or your own service)? and it becomes selectable here immediately.
-
Access (optional)
Adds one recipient to this channel's allowlist. Leave blank to keep the channel's current policy.
Wired bots
Every bot currently configured across all channels, with its backend route and live status. Edit routing and tokens per bot on its channel page (Telegram, WhatsApp, RCS, or More channels).
Gateway
Store public tunnel and RCS sender settings in ClawUX config. Secret values still stay in environment variables; this screen controls the public URL and which env var names ClawUX reads.
First-contact transparency
Send gateway-owned disclosure text before the first backend reply for each channel, bot, and conversation. Delivery is recorded separately from consent: receiving or continuing after this notice never grants optional consent.
Checking trust ledger…
Environment file
ClawUX derives variable names from the current channel and backend configuration. It can add missing empty placeholders and remove obsolete placeholders only when they are empty. Existing non-empty values are always preserved. Secret values are never returned to this page.
Checking environment file…
Service control (seamless restart)
Authorize your own user to start/stop/restart the ClawUX service without a password, so code changes can be applied (and restarted) seamlessly. This installs a narrowly-scoped polkit rule for your user and only the clawux.service unit — not passwordless root. Run the command below once in a terminal; ClawUX never performs this privileged step itself.
Telegram
Each Telegram bot is an instance with its own token env and backend route. Create the bot with BotFather, export its token where the gateway runs, then check it here. Live status appears once polling starts, and each bot's backend route is shown read-only (edit it in the Routing map). New here? The Wire a Bot flow walks the whole setup.
WhatsApp uses the free Baileys transport (internal/test only; it automates WhatsApp Web and is against WhatsApp's terms, so use a burner number). Set the backend route below, then pair this gateway as a linked device.
Pair this device
On your phone: WhatsApp → Settings → Linked devices → Link a device, then scan the QR below.
RCS
Each row below is one RCS agent (an RBM agent). madvamb and hermes are two separate agents, each with
its own agent id, webhook secret, and backend route; Add instance creates another agent. The fields at the top of a row are that
agent's own settings. An agent shows not ready until both its agent id env and webhook secret env are set, so a half-configured
agent is never shown as active.
RCS test devices
Recipients you can send RCS test messages to. In RBM a tester is invited per agent, so these are tied to the RCS agent you test with. Use E.164 format.
More channels
SMS, Slack, Discord, and the local web channel. Enable one and set its backend route; the primary channels (Telegram, WhatsApp, RCS) have their own pages. Save applies only to the channels on this page.
Backends
Backends are the AI systems that answer users' messages; each channel routes to one. A local or self-hosted service needs no key; a cloud provider (Claude, OpenAI, and similar) needs an API key, set as an environment variable on the server and named in the backend's "API key env" field below. This is separate from how ClawUX itself decides and composes the experience, which lives on the ClawUX AI page and is ClawUX config, not a backend.
Create backend
Point ClawUX at an LLM endpoint or a service you built (like a knowledge base). Creation runs a health check: a passing check enables the backend immediately; a failing one saves it disabled with the reason, so it is never routed to while down. Running local services are detected below.
Alert me when a backend is down
ClawUX watches backend health and, when one goes down, sends you a notice with a diagnostic clue on the channels you pick here. Choose one, two, or three. This detects and reports the problem; fixing the backend stays with the backend admin. Recipients must be in the delivery allowlist (your own number normally is). Telegram is the most reliable alert path because it does not depend on any AI backend.
ClawUX AI
This is ClawUX's own AI, how it decides and composes the experience, not a backend that channels route to. Each box saves on its own. When a box uses a "custom endpoint" it means ClawUX's own model (a local or self-hosted LLM you point it at here); "Hermes" means reusing the Hermes backend for that decision instead.
Local model setup
Discovers models already installed in Ollama, estimates a safe resident set for this hardware, and assigns separate quality, fast, and embedding roles. Applying creates a portable residency policy: ClawUX preloads defaults, respects time-limited leases for coding/evaluation models, and restores defaults after transient work.
Not scanned yet.
Temporary model lease
Load an already-installed specialist model for a bounded coding or evaluation task. The watchdog protects it until expiry, then offloads it and restores the default resident models.
UI decision engine
How ClawUX picks the channel control for each message. Matrix is the deterministic capability map. AI tool asks a model: set AI source to Custom endpoint to use ClawUX's own model (below), or Hermes to reuse the Hermes backend. AI always falls back to the matrix on any error or timeout, so delivery is never blocked.
UI composer
An optional model that refines the chosen control (labels, ordering, phrasing) before send. Shadow only logs what it would do without acting; switch to Act on decisions once you trust it. Uses ClawUX's own model endpoint.
Memory compaction
The model ClawUX uses to summarize long conversation history into durable memory. Leave blank to reuse the decision engine's endpoint.
Policy
Control delivery guardrails without changing Hermes, OpenClaw, or channel adapter code.
Per-channel allowlists
Each enabled channel enforces the union of the global list above and its own entries. RCS additionally derives entries from the invited testers in Test Devices. A channel with no entries at all stays unrestricted; adding any entry restricts that channel to its list.
An empty allowed-recipient list means delivery is unrestricted. Use one value per line or comma-separated values.
Mappings
Map universal UX intents to safe ClawUX primitives. Provider specific raw payloads stay out of this UI.
Contacts
Map a recipient (phone number or chat id) to a display name so Activity and logs show who a delivery went to. Phone numbers match by their last 10
digits regardless of formatting; other ids match exactly. Saved to config/contacts.json — names appear on delivery records, so only
add people who expect to be addressed by this gateway.
Activity
The most recent messages this gateway rendered and delivered, with the chosen primitive, render quality, and safety gate. Use this to confirm intents are landing on native controls and that risky actions keep their confirmation gate.
Uncertain sends
A provider may accept a send and disconnect before confirming it. ClawUX does not retry that ambiguous operation because doing so could send the message twice. Check the provider, enter an operator label for the audit record, and resolve it explicitly. Message content and recipients are not retained in this operational view.
Recent resolutions
UI decisions
How the UI composer is deciding and how users respond, aggregated from the same delivery history: decision mix, tap-through by primitive, derived vs backend tap rate, stale taps, per-channel fallback and block rates, and composer latency. Refresh above reloads both views.
Matrix Preview
Render one backend intent across every channel capability profile without sending live messages. Provider settings or recipient device OS/version can still affect final delivery.
Test
Telegram and RCS attempt live delivery when channel credentials and routing are configured. WhatsApp stays preview only in this console.