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

# システム環境設定

> LangBot のシステム環境変数とランタイム設定を構成し、AI ボットのデプロイをカスタマイズ。

システム動作のための環境情報を設定します。設定ファイルは `data/config.yaml` にあります。
通常、変更は必要ありません。

```yaml theme={null}
admins: []
api:
    port: 5300
    webhook_prefix: 'http://127.0.0.1:5300'
    extra_webhook_prefix: ''
    global_api_key: ''  # グローバル API キー。空でない場合、HTTP API と MCP サーバー（/mcp）の両方で、ログインセッション・データベースレコード・`lbk_` プレフィックス不要で認証されます。空 = 無効。平文で保存されるため、信頼できる / 内部デプロイでのみ有効化し、HTTPS で公開してください。
command:
    enable: true
    prefix:
    - '!'
    - ！
    privilege: {}
concurrency:
    pipeline: 20
    session: 1
proxy:
    http: ''
    https: ''
system:
    instance_id: ''
    edition: community
    recovery_key: ''
    allow_modify_login_info: true
    disabled_adapters: []
    limitation:
        max_bots: -1
        max_pipelines: -1
        max_extensions: -1
    task_retention:
        # メモリ内に保持する完了済み非同期タスク履歴の最大数
        completed_limit: 200
    jwt:
        expire: 604800
        secret: ''
database:
    use: sqlite
    sqlite:
        path: 'data/langbot.db'
    postgresql:
        host: '127.0.0.1'
        port: 5432
        user: 'postgres'
        password: 'postgres'
        database: 'postgres'
vdb:
    use: chroma
    qdrant:
        url: ''
        host: localhost
        port: 6333
        api_key: ''
    seekdb:
        mode: embedded  # 'embedded' または 'server'
        # 組み込みモード設定:
        path: './data/seekdb'
        database: 'langbot'
        # サーバーモード設定（mode='server' の場合）:
        host: 'localhost'
        port: 2881
        user: 'root'
        password: ''
        tenant: ''  # OceanBase サーバー向けの任意項目
    milvus:
        uri: 'http://127.0.0.1:19530'
        token: ''
        db_name: ''
    pgvector:
        host: '127.0.0.1'
        port: 5433
        database: 'langbot'
        user: 'postgres'
        password: 'postgres'
    valkey_search:
        host: 'localhost'
        port: 6379
        db: 0
        username: ''      # 任意（ACL ユーザー）
        password: ''      # 任意（ACL / requirepass）、ログには記録されません
        tls: false        # 任意、toB/SaaS 環境向け
        index_algorithm: 'HNSW'    # HNSW（近似）または FLAT（厳密）
        distance_metric: 'COSINE'  # COSINE、L2、または IP
        request_timeout: 5000      # リクエストごとのタイムアウト（ミリ秒）
storage:
    use: local
    cleanup:
        # ローカル/S3 のアップロードファイルと古いログを定期的に削除するか
        enabled: true
        # クリーンアップ確認間隔（時間）
        check_interval_hours: 1
        # ストレージルート直下のアップロードファイルを保持する日数
        uploaded_file_retention_days: 7
        # LangBot ログファイルを保持する日数
        log_retention_days: 3
    s3:
        endpoint_url: ''
        access_key_id: ''
        secret_access_key: ''
        region: 'us-east-1'
        bucket: 'langbot-storage'
plugin:
    enable: true
    runtime_ws_url: 'ws://langbot_plugin_runtime:5400/control/ws'
    enable_marketplace: true
    display_plugin_debug_url: 'ws://localhost:5401/plugin/debug/ws'
    binary_storage:
        # 1 つのプラグインバイナリストレージ値の最大バイト数
        max_value_bytes: 10485760
monitoring:
    auto_cleanup:
        # 期限切れの監視レコードを自動削除するか
        enabled: true
        # 監視レコードの保持日数
        retention_days: 30
        # クリーンアップ確認間隔（時間）
        check_interval_hours: 1
        # 各監視テーブルで 1 回に削除する期限切れ行数
        delete_batch_size: 1000
box:
    backend: 'local'  # 'local' (Docker/nsjail), 'docker', 'nsjail', または 'e2b'。BOX__BACKEND で書き込めます。
    runtime:
        endpoint: ''  # 外部 Box Runtime ベース URL（例: 'ws://127.0.0.1:5410'）。空の場合はローカル自動管理ランタイムを使用。
    local:
        profile: 'default'
        image: ''  # カスタムローカルサンドボックスイメージ。空の場合はプロファイルデフォルトを使用。
        host_root: './data/box'  # ローカルワークスペースマウント用のホストルートディレクトリ。Docker デプロイ時は langbot_box にマウントする絶対ホストパスを使用。
        default_workspace: ''  # デフォルトは '<host_root>/default'。
        skills_root: 'skills'  # Box が管理する Skill パッケージディレクトリ。相対パスは host_root 配下に解決されます。
        allowed_mount_roots:  # 空の場合はデフォルトで ['<host_root>']。
            - './data/box'
            - '/tmp'
        workspace_quota_mb: null  # オプションのディスククォータオーバーライド (>= 0)。null = プロファイルデフォルト。
    docker:
        cpu_limit_enabled: true  # false の場合、Docker サンドボックスコンテナは --cpus なしで起動します。メモリと PID 制限は維持されます。
    e2b:
        api_key: ''  # E2B_API_KEY 環境変数でも設定可能。
        api_url: ''  # セルフホストデプロイ用のカスタム API URL。
        template: ''  # デフォルトテンプレート ID（例: 'base', 'python-3.11'）。
space:
    # Space サービス URL
    url: 'https://space.langbot.app'
    # Space モデルリクエスト API URL（MaaS）
    models_gateway_api_url: 'https://api.langbot.cloud/v1'
    # OAuth 認可ページ URL
    oauth_authorize_url: 'https://space.langbot.app/auth/authorize'
    disable_models_service: false
    disable_telemetry: false
```

## 補足

* `storage.cleanup.uploaded_file_retention_days` はストレージルート直下の一時アップロードファイルのみを削除します。プラグイン設定ファイルやディレクトリ配下の内部オブジェクトは削除しません。
* `storage.cleanup.log_retention_days` はファイル名の日付に基づいて古いログを削除します。デフォルトでは最大 3 日分のログを保持します。
* SQLite をデータベースとして使用している場合、監視レコードの自動削除後にデータベースファイルの空き容量を直接解放します。
* `plugin.binary_storage.max_value_bytes` は 1 つのプラグインバイナリストレージ値のサイズを制限します。デフォルトは 10 MiB です。
* WebUI のサイドバーには「ストレージ分析」ページがあり、データベース、ログ、アップロードファイル、ベクターストア、プラグイン、MCP、一時ファイル、クリーンアップ候補を確認できます。
* `vdb.valkey_search` は [Valkey Search](https://valkey.io/) モジュールを公式の非同期クライアント `valkey-glide` 経由で利用し、ベクター検索・全文検索・ハイブリッド検索の 3 モードに対応します。モジュールを読み込んだサーバー（例: `valkey/valkey-bundle:9.1.0`、`docker run -d -p 6379:6379 valkey/valkey-bundle:9.1.0`）を起動してください。注意: ハイブリッド検索はフィルタ後に KNN を行うモデルのため、`vector_weight` パラメータは受け付けられますが**反映されません**（Valkey Search の原生的な制限）。接続は遅延確立されるため、サーバーが停止・誤設定でも起動を妨げません。詳細は [Valkey Search 統合ドキュメント](https://github.com/langbot-app/LangBot/blob/master/docs/VALKEY_SEARCH_INTEGRATION.md) を参照してください。
* `api.global_api_key` はエージェント / 自動化向けのグローバル API キーです。設定すると、HTTP API または組み込み MCP サーバー（`/mcp`）の呼び出し時に `X-API-Key: <key>` または `Authorization: Bearer *** を送るだけで認証されます（ログインセッションやデータベース保存の `lbk\_` キーは不要）。`config.yaml\` に平文で保存されるため、信頼できる / 内部デプロイでのみ有効化し、HTTPS で公開してください。[API キー認証](https://github.com/langbot-app/LangBot/blob/master/docs/API_KEY_AUTH.md) を参照。

## 環境変数による設定

`config.yaml` の設定は環境変数を介して設定できます。環境変数名は大文字で、二重アンダースコアで接続されます。例: `API__PORT` は `api.port` を表します。

* `API__PORT` は `api.port` を表します
* `CONCURRENCY__PIPELINE` は `concurrency.pipeline` を表します
* `DATABASE__SQLITE__PATH` は `database.sqlite.path` を表します
* `STORAGE__CLEANUP__UPLOADED_FILE_RETENTION_DAYS` は `storage.cleanup.uploaded_file_retention_days` を表します
* `STORAGE__CLEANUP__LOG_RETENTION_DAYS` は `storage.cleanup.log_retention_days` を表します
* `MONITORING__AUTO_CLEANUP__RETENTION_DAYS` は `monitoring.auto_cleanup.retention_days` を表します
* `PLUGIN__BINARY_STORAGE__MAX_VALUE_BYTES` は `plugin.binary_storage.max_value_bytes` を表します
* `BOX__BACKEND` は `box.backend` を表します
* `BOX__LOCAL__HOST_ROOT` は `box.local.host_root` を表します
* `BOX__LOCAL__SKILLS_ROOT` は `box.local.skills_root` を表します

起動時、LangBot はすべての環境変数を読み取り、対応する設定を `config.yaml` に適用して `data/config.yaml` ファイルに書き込みます。

<Note>
  Box 関連設定は `langbot` サービスに統一形式の `BOX__*` 環境変数で設定します。LangBot は起動時にそれらを `data/config.yaml` に適用し、INIT RPC 経由で Box 設定を `langbot_box` に渡します。`LANGBOT_BOX_*` や `BOX__*` を `langbot_box` に設定しても直接読み取られません。
</Note>
