On-Demand Mode
On-demand mode automatically pauses your sandbox after a configurable idle period and resumes it on access. Ideal for low-traffic AI assistants, webhook-based IM integrations, and scheduled tasks. Zero billing while paused.Launching an On-Demand Sandbox
Bash
Manual Pause and Resume
Bash
Runtime Configuration
Bash
How It Works
- Idle detection — An agent daemon inside the sandbox periodically checks OpenClaw session activity and writes status to
/tmp/.novitaclaw-status.json. - Auto-pause — The server-side idle monitor reads the agent status. After 2 consecutive idle checks, the sandbox is automatically paused.
- Auto-resume — Incoming webhook requests or Web UI access automatically resume a paused sandbox.
- Cron pre-wakeup — The scheduler scans paused sandboxes for upcoming cron schedules and resumes them ~120 seconds before the next job fires, ensuring cron jobs run on time.
Checking Status
Bash
status command still returns full URL information (read from the database without connecting to the sandbox), so scripts can store addresses without triggering a resume.
Configuring Models
Your instance is pre-configured with a Novita-hosted model out of the box. To change the models your agent uses, navigate toSettings → Config, click Raw to switch to Raw JSON5 view, then click the reveal button next to “secrets redacted” to show the full config.
Update the following two sections:
Step 1: Register the model under your provider
Add a new object to themodels array inside models.providers.novita:
Step 2: Set it as primary or fallback
Update themodel field under agents.defaults to reference your model using the provider/model-id format:

Connecting Channels
OpenClaw supports external messaging channels so your agent is reachable outside the Web UI. Channels are disabled by default and must be configured.Telegram
Connect your agent to Telegram as a messaging channel. Two connection modes are supported: Polling (default, long-poll — no public URL needed) and Webhook (HTTP push — best for on-demand sandboxes). Step 1: Create a Telegram Bot- Open Telegram and find @BotFather.
- Send
/newbotand follow the prompts to name your bot. - Copy the bot token BotFather provides.
Mode 1: Polling
Polling mode uses long-poll connections. No public URL required — simplest to configure.Bash
Mode 2: Webhook
Webhook mode requires the sandbox to expose an HTTP port for receiving Telegram push events. Best suited for on-demand sandboxes — incoming webhook requests automatically trigger resume.Bash
Optional Webhook Parameters
| Parameter | Default | Description |
|---|---|---|
--webhook-host | 0.0.0.0 | Webhook server bind address |
--webhook-port | 8787 | Webhook listen port |
--webhook-path | /webhook/telegram | Webhook URL path |
--dm-policy | pairing | DM policy |
Pairing Flow
On first conversation, the bot replies with a pairing code:Bash
Mode Comparison
| Polling | Webhook | |
|---|---|---|
| Connection | Outbound (long-poll) | Inbound (HTTP push) |
| Public port | Not required | Required |
| Setup complexity | Low | Medium (additional secrets) |
| On-demand auto-resume | Not supported (connection drops on pause) | Supported (webhook triggers resume) |
| Recommended for | Always-on sandboxes, development | On-demand sandboxes, production IM |
Slack
Connect your agent to Slack as a messaging channel. Two connection modes are supported: Socket (default, WebSocket — no public URL needed) and HTTP (Events API webhook — best for on-demand sandboxes).Mode 1: Socket
Socket mode uses a WebSocket connection. No public URL required — simplest to configure.Bash
Mode 2: HTTP
HTTP mode uses Slack Events API webhooks. Best suited for on-demand sandboxes — incoming webhook requests automatically trigger resume.Bash
Optional HTTP Parameters
| Parameter | Default | Description |
|---|---|---|
--webhook-host | 0.0.0.0 | Webhook server bind address |
--webhook-port | 8788 | Webhook listen port |
--webhook-path | /webhook/slack | Webhook URL path |
Pairing Flow
On first conversation, the bot replies with a pairing code:Bash
Mode Comparison
| Socket | HTTP | |
|---|---|---|
| Connection | WebSocket (outbound) | HTTP push (inbound) |
| Public port | Not required | Required |
| Setup complexity | Low | Medium (additional secrets) |
| On-demand auto-resume | Not supported (connection drops on pause) | Supported (webhook triggers resume) |
| Recommended for | Always-on sandboxes, development | On-demand sandboxes, production IM |
Channel Status
novitaclaw status displays webhook URLs for all configured channels:
Bash
Feishu
Connect your agent to Feishu (Lark) as a messaging channel. Two connection modes are supported: Webhook (HTTP push) and Event (WebSocket long-poll).Prerequisites: Create a Feishu App
- Open the Feishu Open Platform, log in and click Create Custom App.
-
On the Credentials & Basic Info page, copy:
- App ID (format:
cli_xxx) - App Secret
- App ID (format:
-
Go to Permission Management, click Batch Import, and paste the following permissions:
- Go to App Capabilities > Bot and enable bot capability.
- Create a version and publish the app.
Mode 1: Webhook
Webhook mode requires the sandbox to expose an HTTP port for receiving Feishu push events. Best suited for on-demand sandboxes — incoming webhook requests automatically trigger resume. Additional credentials: On the Feishu Open Platform, go to Development Configuration > Events & Callbacks > Encryption Strategy and copy:- Verification Token
- Encrypt Key
Bash
- Select Request URL Configuration
- Enter the Webhook URL — get it via:
Bash
- Add event:
im.message.receive_v1
Mode 2: Event
Event mode uses a Feishu WebSocket long-poll connection. No public URL required — simplest to configure.Bash
- Select Use Long Connection to Receive Events
- Add event:
im.message.receive_v1
Ensure the gateway is running (
novitaclaw status <SANDBOX_ID>) before saving, otherwise Feishu may fail to save the long connection configuration.Optional Webhook Parameters
| Parameter | Default | Description |
|---|---|---|
--webhook-host | 0.0.0.0 | Webhook server bind address |
--webhook-port | 3000 | Webhook listen port |
--webhook-path | /feishu/events | Webhook URL path |
Pairing Flow
Feishu uses apairing strategy by default. On first conversation, the bot replies with a pairing code that must be approved via CLI:
Bash
Mode Comparison
| Event | Webhook | |
|---|---|---|
| Connection | WebSocket long-poll (outbound) | HTTP push (inbound) |
| Public port | Not required | Required (default 3000) |
| Setup complexity | Low (App ID + Secret only) | Medium (additional Token + Key) |
| On-demand auto-resume | Not supported | Supported (webhook triggers resume) |
| Recommended for | Always-on sandboxes, development | On-demand sandboxes, production IM |
Service Reliability
All core services in the sandbox are managed by systemd for production-grade reliability:| Service | Description | Auto-Restart |
|---|---|---|
| OpenClaw Gateway | Agent runtime and WebSocket server | ✅ |
| Web Terminal (ttyd) | Browser-based terminal access | ✅ |
| File Manager (gohttpserver) | Web-based file management | ✅ |