> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 設定

NovitaClaw インスタンスのモデル設定、外部メッセージングチャネルの接続、オンデマンドモードのセットアップ、サービス信頼性機能について説明します。

## オンデマンドモード

オンデマンドモードでは、設定可能なアイドル期間の後にサンドボックスを自動的に一時停止し、アクセス時に再開します。低トラフィックの AI アシスタント、Webhook ベースの IM 連携、スケジュールされたタスクに最適です。一時停止中は課金されません。

### オンデマンドサンドボックスの起動

```bash Bash icon="terminal" theme={"system"}
# Default idle timeout: 300 seconds
novitaclaw launch --type on-demand

# Custom idle timeout (60–86400 seconds)
novitaclaw launch --type on-demand --idle-timeout 600
```

<Warning>
  オンデマンドモードは `--mode node` と組み合わせることはできません。
</Warning>

### 手動での一時停止と再開

```bash Bash icon="terminal" theme={"system"}
# Pause a sandbox (zero billing while paused)
novitaclaw pause <SANDBOX_ID>

# Resume a sandbox (~1s to restore to pre-pause state)
novitaclaw resume <SANDBOX_ID>
```

### ランタイム設定

```bash Bash icon="terminal" theme={"system"}
# Update idle timeout (60–86400 seconds)
novitaclaw config set <SANDBOX_ID> idle-timeout 600

# Update sandbox lifetime timeout (300–2592000 seconds)
novitaclaw config set <SANDBOX_ID> timeout 3600
```

変更は即座に反映されます。サンドボックス内のエージェントは、次回のチェックサイクルで新しい設定を読み込みます。

### 仕組み

1. **アイドル検出** — サンドボックス内のエージェントデーモンが OpenClaw セッションのアクティビティを定期的に確認し、ステータスを `/tmp/.novitaclaw-status.json` に書き込みます。
2. **自動一時停止** — サーバー側のアイドルモニターがエージェントステータスを読み取ります。2 回連続でアイドルチェックが行われた後、サンドボックスは自動的に一時停止されます。
3. **自動再開** — 受信した Webhook リクエストまたは Web UI へのアクセスにより、一時停止中のサンドボックスが自動的に再開されます。
4. **Cron の事前起動** — スケジューラーは一時停止中のサンドボックスをスキャンして今後の cron スケジュールを確認し、次のジョブが実行される約 120 秒前に再開します。これにより、cron ジョブが時間どおりに実行されます。

### ステータスの確認

```bash Bash icon="terminal" theme={"system"}
# View sandbox status (does not trigger resume when paused)
novitaclaw status <SANDBOX_ID>

# List shows sandbox_type and state columns
novitaclaw list
```

一時停止中でも、`status` コマンドは完全な URL 情報を返します（サンドボックスに接続せず、データベースから読み取ります）。そのため、スクリプトは再開をトリガーせずにアドレスを保存できます。

## モデルの設定

インスタンスには、Novita ホストのモデルが最初から事前設定されています。エージェントが使用するモデルを変更するには、`Settings → Config` に移動し、**Raw** をクリックして Raw JSON5 ビューに切り替えた後、"secrets redacted" の横にある表示ボタンをクリックして完全な設定を表示します。

次の 2 つのセクションを更新します。

### ステップ 1: プロバイダー配下にモデルを登録する

`models.providers.novita` 内の `models` 配列に新しいオブジェクトを追加します。

```json theme={"system"}
{
  "models": {
    "providers": {
      "novita": {
        "models": [
          {
            "id": "model-id",
            "name": "display name",
            "reasoning": true,
            "input": ["text"],
            "contextWindow": 200000,
            "maxTokens": 50000
          }
        ]
      }
    }
  }
}
```

### ステップ 2: プライマリまたはフォールバックとして設定する

`agents.defaults` 配下の `model` フィールドを更新し、`provider/model-id` 形式でモデルを参照するようにします。

```json theme={"system"}
{
  "agents": {
    "defaults": {
      "model": {
        "primary": "novita/model-id",
        "fallbacks": ["novita/fallback-model-id"]
      }
    }
  }
}
```

**Update** をクリックして保存します。[Novita platform](https://novita.ai/model-api/product/llm-api) で利用可能なすべての LLM がサポートされています。サードパーティプロバイダーも設定できます。独自の LLM を持ち込む場合、Novita モデルの使用料ではなく、サンドボックスのランタイムに対してのみ支払います。

<Frame>
  <img src="https://mintcdn.com/novitaai/8g_eTjuhr6h9haCR/ja/guides/images/openclaw-cli/model-config.png?fit=max&auto=format&n=8g_eTjuhr6h9haCR&q=85&s=6377ad4844805e36d03fd7286bd3df70" alt="NovitaClaw のモデル設定" width="1280" height="920" data-path="ja/guides/images/openclaw-cli/model-config.png" />
</Frame>

## チャネルの接続

OpenClaw は外部メッセージングチャネルをサポートしているため、エージェントは Web UI の外部からも到達できます。チャネルはデフォルトで無効になっており、設定が必要です。

### Telegram

エージェントをメッセージングチャネルとして Telegram に接続します。2 つの接続モードがサポートされています: **Polling**（デフォルト、long-poll — パブリック URL 不要）と **Webhook**（HTTP push — オンデマンドサンドボックスに最適）。

**ステップ 1: Telegram Bot を作成する**

1. Telegram を開き、[@BotFather](https://t.me/BotFather) を探します。
2. `/newbot` を送信し、プロンプトに従ってボットに名前を付けます。
3. BotFather が提供するボットトークンをコピーします。

#### モード 1: Polling

Polling モードでは long-poll 接続を使用します。パブリック URL は不要で、最も簡単に設定できます。

<Warning>
  Polling モードはオンデマンドサンドボックスには推奨されません。サンドボックスが自動一時停止すると接続が切断され、受信メッセージは失われます。オンデマンドサンドボックスでは Webhook モードを使用してください。
</Warning>

```bash Bash icon="terminal" theme={"system"}
novitaclaw pair telegram <SANDBOX_ID> \
  --bot-token <BOT_TOKEN>
```

#### モード 2: Webhook

Webhook モードでは、Telegram の push イベントを受信するためにサンドボックスが HTTP ポートを公開する必要があります。オンデマンドサンドボックスに最適です。受信した Webhook リクエストにより自動的に再開がトリガーされます。

<Tip>
  `--webhook-url` は、サンドボックスに割り当てられたパブリック URL です。取得するには次のコマンドを実行します。

  ```bash Bash icon="terminal" theme={"system"}
  novitaclaw status <SANDBOX_ID> --json | jq -r '.telegram_webhook_url'
  ```
</Tip>

```bash Bash icon="terminal" theme={"system"}
novitaclaw pair telegram <SANDBOX_ID> \
  --bot-token <BOT_TOKEN> \
  --mode webhook \
  --webhook-url <WEBHOOK_URL> \
  --webhook-secret <SECRET>
```

#### オプションの Webhook パラメーター

| パラメーター           | 既定値                 | 説明                    |
| ---------------- | ------------------- | --------------------- |
| `--webhook-host` | `0.0.0.0`           | Webhook サーバーのバインドアドレス |
| `--webhook-port` | `8787`              | Webhook のリッスンポート      |
| `--webhook-path` | `/webhook/telegram` | Webhook URL パス        |
| `--dm-policy`    | `pairing`           | DM ポリシー               |

#### ペアリングフロー

最初の会話で、ボットはペアリングコードを返信します。

```bash Bash icon="terminal" theme={"system"}
# List pending pairing requests
novitaclaw pair list <SANDBOX_ID> --channel telegram

# Approve a pairing request
novitaclaw pair approve <SANDBOX_ID> --channel telegram --code <CODE>
```

#### モード比較

|            | Polling          | Webhook              |
| ---------- | ---------------- | -------------------- |
| 接続         | 送信（long-poll）    | 受信（HTTP push）        |
| パブリックポート   | 不要               | 必要                   |
| セットアップの複雑さ | 低                | 中（追加のシークレット）         |
| オンデマンド自動再開 | 非対応（一時停止時に接続が切断） | 対応（Webhook が再開をトリガー） |
| 推奨用途       | 常時稼働のサンドボックス、開発  | オンデマンドサンドボックス、本番 IM  |

### Slack

エージェントをメッセージングチャネルとして Slack に接続します。2 つの接続モードがサポートされています: **Socket**（デフォルト、WebSocket — パブリック URL 不要）と **HTTP**（Events API Webhook — オンデマンドサンドボックスに最適）。

#### モード 1: Socket

Socket モードでは WebSocket 接続を使用します。パブリック URL は不要で、最も簡単に設定できます。

<Warning>
  Socket モードはオンデマンドサンドボックスには推奨されません。サンドボックスが自動一時停止すると WebSocket 接続が切断され、受信メッセージは失われます。オンデマンドサンドボックスでは HTTP モードを使用してください。
</Warning>

```bash Bash icon="terminal" theme={"system"}
novitaclaw pair slack <SANDBOX_ID> \
  --bot-token xoxb-... \
  --app-token xapp-...
```

#### モード 2: HTTP

HTTP モードでは Slack Events API Webhook を使用します。オンデマンドサンドボックスに最適です。受信した Webhook リクエストにより自動的に再開がトリガーされます。

```bash Bash icon="terminal" theme={"system"}
novitaclaw pair slack <SANDBOX_ID> \
  --bot-token xoxb-... \
  --mode http \
  --signing-secret <SECRET>
```

#### オプションの HTTP パラメーター

| パラメーター           | 既定値              | 説明                    |
| ---------------- | ---------------- | --------------------- |
| `--webhook-host` | `0.0.0.0`        | Webhook サーバーのバインドアドレス |
| `--webhook-port` | `8788`           | Webhook のリッスンポート      |
| `--webhook-path` | `/webhook/slack` | Webhook URL パス        |

#### ペアリングフロー

最初の会話で、ボットはペアリングコードを返信します。

```bash Bash icon="terminal" theme={"system"}
# List pending pairing requests
novitaclaw pair list <SANDBOX_ID> --channel slack

# Approve a pairing request
novitaclaw pair approve <SANDBOX_ID> --channel slack --code <CODE>
```

#### モード比較

|            | Socket           | HTTP                 |
| ---------- | ---------------- | -------------------- |
| 接続         | WebSocket（送信）    | HTTP push（受信）        |
| パブリックポート   | 不要               | 必要                   |
| セットアップの複雑さ | 低                | 中（追加のシークレット）         |
| オンデマンド自動再開 | 非対応（一時停止時に接続が切断） | 対応（Webhook が再開をトリガー） |
| 推奨用途       | 常時稼働のサンドボックス、開発  | オンデマンドサンドボックス、本番 IM  |

### チャネルステータス

`novitaclaw status` は、設定済みのすべてのチャネルの Webhook URL を表示します。

```bash Bash icon="terminal" theme={"system"}
novitaclaw status <SANDBOX_ID>
# Shows: Feishu Webhook, Telegram Webhook, Slack Webhook (when configured)

# JSON mode
novitaclaw status <SANDBOX_ID> --json | jq -r '.feishu_webhook_url'
novitaclaw status <SANDBOX_ID> --json | jq -r '.telegram_webhook_url'
novitaclaw status <SANDBOX_ID> --json | jq -r '.slack_webhook_url'
```

### Feishu

エージェントをメッセージングチャネルとして Feishu（Lark）に接続します。2 つの接続モードがサポートされています: **Webhook**（HTTP push）と **Event**（WebSocket long-poll）。

#### 前提条件: Feishu App を作成する

1. [Feishu Open Platform](https://open.feishu.cn/app) を開き、ログインして **Create Custom App** をクリックします。

2. **Credentials & Basic Info** ページで、次をコピーします。
   * **App ID**（形式: `cli_xxx`）
   * **App Secret**

3. **Permission Management** に移動し、**Batch Import** をクリックして、次の権限を貼り付けます。

   ```json theme={"system"}
   {
     "scopes": {
       "tenant": [
         "im:message", "im:message:send_as_bot", "im:message:readonly",
         "im:message.p2p_msg:readonly", "im:message.group_at_msg:readonly",
         "im:resource", "im:chat.access_event.bot_p2p_chat:read",
         "im:chat.members:bot_access"
       ],
       "user": ["im:chat.access_event.bot_p2p_chat:read"]
     }
   }
   ```

4. **App Capabilities > Bot** に移動し、ボット機能を有効にします。

5. バージョンを作成し、アプリを公開します。

#### モード 1: Webhook

Webhook モードでは、Feishu の push イベントを受信するためにサンドボックスが HTTP ポートを公開する必要があります。オンデマンドサンドボックスに最適です。受信した Webhook リクエストにより自動的に再開がトリガーされます。

**追加の認証情報:** Feishu Open Platform で **Development Configuration > Events & Callbacks > Encryption Strategy** に移動し、次をコピーします。

* **Verification Token**
* **Encrypt Key**

```bash Bash icon="terminal" theme={"system"}
novitaclaw pair feishu <SANDBOX_ID> \
  --app-id cli_xxx \
  --app-secret secret_xxx \
  --mode webhook \
  --verification-token tok_xxx \
  --encrypt-key key_xxx
```

Feishu Open Platform の **Event Subscription** ページで:

1. **Request URL Configuration** を選択します
2. Webhook URL を入力します。次で取得できます。
   ```bash Bash icon="terminal" theme={"system"}
   novitaclaw status <SANDBOX_ID> --json | jq -r '.feishu_webhook_url'
   ```
3. イベントを追加します: `im.message.receive_v1`

#### モード 2: Event

Event モードでは Feishu WebSocket long-poll 接続を使用します。パブリック URL は不要で、最も簡単に設定できます。

<Warning>
  Event モードはオンデマンドサンドボックスには推奨されません。サンドボックスが自動一時停止すると WebSocket 接続が切断され、受信メッセージは失われます。オンデマンドサンドボックスでは Webhook モードを使用してください。
</Warning>

```bash Bash icon="terminal" theme={"system"}
novitaclaw pair feishu <SANDBOX_ID> \
  --app-id cli_xxx \
  --app-secret secret_xxx
```

設定後、Feishu Open Platform の **Event Subscription** ページで:

1. **Use Long Connection to Receive Events** を選択します
2. イベントを追加します: `im.message.receive_v1`

<Note>
  保存する前にゲートウェイが実行中であること（`novitaclaw status <SANDBOX_ID>`）を確認してください。そうでない場合、Feishu が long connection 設定の保存に失敗する可能性があります。
</Note>

#### オプションの Webhook パラメーター

| パラメーター           | 既定値              | 説明                    |
| ---------------- | ---------------- | --------------------- |
| `--webhook-host` | `0.0.0.0`        | Webhook サーバーのバインドアドレス |
| `--webhook-port` | `3000`           | Webhook のリッスンポート      |
| `--webhook-path` | `/feishu/events` | Webhook URL パス        |

#### ペアリングフロー

Feishu はデフォルトで `pairing` 戦略を使用します。最初の会話で、ボットは CLI 経由で承認する必要があるペアリングコードを返信します。

```bash Bash icon="terminal" theme={"system"}
# List pending pairing requests
novitaclaw pair list <SANDBOX_ID> --channel feishu

# Approve a pairing request
novitaclaw pair approve <SANDBOX_ID> --channel feishu --code <CODE>
```

#### モード比較

|            | Event                   | Webhook              |
| ---------- | ----------------------- | -------------------- |
| 接続         | WebSocket long-poll（送信） | HTTP push（受信）        |
| パブリックポート   | 不要                      | 必要（デフォルト 3000）       |
| セットアップの複雑さ | 低（App ID + Secret のみ）   | 中（追加の Token + Key）   |
| オンデマンド自動再開 | 非対応                     | 対応（Webhook が再開をトリガー） |
| 推奨用途       | 常時稼働のサンドボックス、開発         | オンデマンドサンドボックス、本番 IM  |

## サービス信頼性

サンドボックス内のすべてのコアサービスは、本番環境レベルの信頼性を実現するために systemd によって管理されます。

| サービス                        | 説明                          | 自動再起動 |
| --------------------------- | --------------------------- | ----- |
| OpenClaw Gateway            | エージェントランタイムと WebSocket サーバー | ✅     |
| Web Terminal (ttyd)         | ブラウザベースのターミナルアクセス           | ✅     |
| File Manager (gohttpserver) | Web ベースのファイル管理              | ✅     |

**クラッシュ自動復旧:** Gateway が繰り返しクラッシュした場合、システムは自動的に診断を実行し、修復を試み、バックアップから最後に確認された正常な設定を復元します。手動操作は不要です。

**設定の自動バックアップ:** 設定が書き込まれるたびに、自動バックアップが作成されます。不適切な設定によってクラッシュが発生した場合、復旧プロセスは直近の有効なバックアップから復元します。
