Clowld Space Docs

環境変数

セルフホスト Clowld Space でよく使うサーバー、ストレージ、連携、ランタイムの設定。

Clowld Space はプロセス起動時に環境変数を読み込みます。変更後は、該当する API・Web・デーモンのプロセスを再起動してください。Docker Compose の docker compose restart は .env を再読み込みしません。up -d でコンテナを再作成して初めて反映されます。

このページにはデプロイ運用者向けの設定のみを載せています。テスト用変数や内部実行用の変数は扱いません。グループ別のリファレンスとして使い、完全なデプロイ手順はセルフホストクイックスタートを参照してください。

プロダクションの最小構成

DATABASE_URL=postgres://user:password@postgres:5432/clowld?sslmode=require
JWT_SECRET=<long-random-secret>
APP_ENV=production
FRONTEND_ORIGIN=https://clowld.example.com
CLOWLD_APP_URL=https://clowld.example.com
CLOWLD_PUBLIC_URL=https://api.clowld.example.com

さらにメールサービスを 1 つ選ぶ必要があります。選ばない場合、認証コードと招待はサーバーログに書き込まれるだけです。

JWT_SECRET は本番環境で必須です。APP_ENV=production の場合、値が空または既知のプレースホルダーだとバックエンドが起動を拒否します(openssl rand -hex 32 で生成)。CLOWLD_DEV_VERIFICATION_CODE も設定しないでください。

API とデータベース

変数デフォルト説明
DATABASE_URLローカルの clowld データベースPostgreSQL 接続文字列
DATABASE_MAX_CONNS25API プロセスあたりの最大データベース接続数
DATABASE_MIN_CONNS5API プロセスが保持する最小接続数
CLOWLD_DATABASE_SEARCH_WORK_MEM_MB64検索プランの各ノードに対する PostgreSQL work_mem 上限(MB)。1~64 で引き下げ、0 でデータベース/セッションの既定値を使用。新名が未設定の場合のみ、起動時に旧名 DATABASE_SEARCH_WORK_MEM_MB の値を引き継ぐ。新名が空文字でも優先され、既定値を使用
DATABASE_REPLICA_URL空オプションの PostgreSQL 読み取り専用レプリカ接続文字列。新しい接続では読み取り専用状態が検証され、各機能はコードで結果整合性読み取りを明示的に選択する必要があります
DATABASE_REPLICA_MAX_CONNS10API プロセスあたりの最大レプリカ接続数
DATABASE_REPLICA_MIN_CONNS0API プロセスが保持する最小レプリカ接続数
CLOWLD_DATABASE_STARTUP_TIMEOUT3mコンテナ起動時に migration と API が共有する、一時的なデータベース障害への再試行時間。0 にすると各フェーズで 1 回だけ試行します
CLOWLD_DATABASE_CONNECT_TIMEOUT5s起動時の接続試行ごとのフォールバックタイムアウト。pgx ネイティブの connect_timeout、PGCONNECT_TIMEOUT、service 設定が優先されます
PORT8080API のリッスンポート
JWT_SECRET本番環境で必須ログイン JWT と一部の署名フローに使うシークレット。本番では空または既知のプレースホルダーだと起動を拒否
APP_ENV空プロダクションでは production を設定
AUTH_TOKEN_TTL720h(30 日)ブラウザ JWT と cookie の有効期間。Go duration または正の整数秒を受け付けます。セッションは有効期間の半分を過ぎるとスライド更新され、使い続けている限り失効しません。60s 未満は 60s に補正されます
LOG_LEVELアプリのデフォルトログレベル
CLOWLD_SHUTDOWN_HOLD_DURATION0終了シグナル受信後、グレースフルシャットダウンを開始するまでの待機時間
CLOWLD_RUNTIME_RECONNECT_GRACE3hオフラインのランタイムが処理中の作業を失敗させずに再接続できる猶予時間。150s 未満は 150s に補正されます

Kubernetes で shutdown hold を設定する場合、terminationGracePeriodSeconds は hold と実際のシャットダウンにかかる時間の合計より大きくしてください。

primary とレプリカの接続上限は独立しています。全 API プロセスの合計が PostgreSQL クラスターの接続上限に収まるように設定してください。レプリカ接続はデフォルトで 5 分後に再作成され、昇格後に読み取り専用状態を再検証します。接続失敗時はインフラストラクチャが透過的に primary へフォールバックし、短時間のパッシブサーキットを開きます。バックグラウンドのデータベースプローブは追加されません。アプリケーションはレプリカデータの最大経過時間を保証しないため、データベース層でレプリケーション遅延を監視し、整合性が必要な読み取りは primary に残してください。

公開アドレスとブラウザアクセス

変数デフォルト説明
FRONTEND_ORIGIN空ユーザーがアクセスするフロントエンドの origin。CORS、cookie、招待リンクに使われます
CLOWLD_APP_URLFRONTEND_ORIGIN にフォールバックユーザーが到達できる Web アドレス。CLI ログインとアカウント連携リンクが使います
CLOWLD_PUBLIC_URL空webhook と callback URL に使う公開 API アドレス。デーモン専用アドレスへはフォールバックしません
CLOWLD_DAEMON_SERVER_URLCLOWLD_PUBLIC_URL、次に CLOWLD_APP_URL / FRONTEND_ORIGIN へ一方向にフォールバックAPI プロセスが clowld setup self-host に埋め込むサーバー URL。ヘルスチェックとデーモンの API/WebSocket 接続は保存された値を使います
CORS_ALLOWED_ORIGINS空追加で許可する HTTP origin。カンマ区切り
ALLOWED_ORIGINSCORS / フロントエンド設定にフォールバックWebSocket origin の許可リスト。カンマ区切り
COOKIE_DOMAIN空フロントエンドと API の host が異なり、ブラウザが API ドメインへ直接アクセスする場合は必須。単一ドメイン構成では空のまま

CLOWLD_DAEMON_SERVER_URL は認証なしの /api/config エンドポイントから返され、クライアントが読み取れます。公開設定として扱い、認証情報、トークン、query string のシークレットなどを含めないでください。サーバーは返却前に URL userinfo、query、fragment を取り除きます。

フロントエンドと API が異なる host を使い、ブラウザが API ドメインへ直接アクセスする構成では、COOKIE_DOMAIN の設定が必須です。設定しないとブラウザが CSRF cookie を読めず、すべての書き込みリクエストが 403 CSRF validation failed を返す一方、読み取りは正常に動きます。値には、両方の host を同時にカバーできる最も狭い親ドメインを使ってください(.example.com より .agent.example.com)。この設定はログインセッション cookie をそのドメイン配下のすべての host に広げるため、それらの host がすべて同一の信頼できる運用主体のものである場合にのみ使えます。変更後は両方の host で古い cookie を削除し、再ログインしてください。セルフホストクイックスタートの同一オリジン構成(ブラウザは app ドメインのみアクセス)に従う場合は、空のままで構いません。IP アドレスは指定しないでください。ブラウザは Domain が IP の cookie を無視します。

セルフホストのデプロイでは FRONTEND_ORIGIN の設定が必須です。設定しないと、招待リンク、cookie のセキュリティ属性、WebSocket の origin 検証が実際のドメインと食い違うおそれがあります。

メールとログイン

Resend

変数デフォルト説明
RESEND_API_KEY空設定すると Resend が有効になります
RESEND_API_KEY_FILE空このファイルから Resend Key を読み込みます。RESEND_API_KEY とは併用できません
RESEND_FROM_EMAILnoreply@clowld.com送信元アドレス。検証済みドメインに属している必要があります
CLOWLD_SECRETS_DIR./secretsセルフホスト Compose が /run/secrets に読み取り専用でマウントするホストディレクトリ

SMTP

SMTP_HOST が空でない限り、SMTP が Resend より優先されます。

変数デフォルト説明
SMTP_HOST空SMTP ホスト。設定すると SMTP が有効になります
SMTP_PORT25よく使う値: 25、587、465
SMTP_USERNAME空ユーザー名。匿名 relay では空のまま
SMTP_PASSWORD空パスワード
SMTP_PASSWORD_FILE空このファイルから SMTP パスワードを読み込みます。SMTP_PASSWORD とは併用できません
SMTP_FROM_EMAILRESEND_FROM_EMAIL にフォールバックEnvelope From とメールの From
SMTP_TLSstarttlsimplicit、smtps、ssl は暗黙的 TLS を意味します。465 では自動的に有効
SMTP_TLS_INSECUREfalse証明書検証をスキップ。信頼できる内部ネットワーク専用
SMTP_EHLO_NAMEホスト名厳格な relay が要求する EHLO/FQDN

Google OAuth

変数デフォルト説明
GOOGLE_CLIENT_ID空Google OAuth client ID
GOOGLE_CLIENT_SECRET空Google OAuth client secret
GOOGLE_REDIRECT_URIhttp://localhost:3000/auth/callbackGoogle Console のコールバックアドレスと完全に一致している必要があります

サインアップ範囲

変数デフォルト説明
ALLOW_SIGNUPtrueallowlist が一つも設定されていない場合に新規登録を許可するか
ALLOWED_EMAILS空登録を許可する完全なメールアドレス。カンマ区切り
ALLOWED_EMAIL_DOMAINS空登録を許可するメールドメイン。カンマ区切り
DISABLE_WORKSPACE_CREATIONfalseすべてのユーザーのワークスペース新規作成を禁止。owner/admin の例外はありません
CLOWLD_DEV_VERIFICATION_CODE空非 production 環境で使う固定 6 桁のテスト認証コード

allowlist の正確な判定順序はログインとサインアップを参照してください。

添付ファイルストレージ

S3_BUCKET が未設定の場合、Clowld Space はローカルディスクを使います。

S3 または互換ストレージ

変数デフォルト説明
S3_BUCKET空バケット名。完全な hostname は指定しないでください
S3_REGIONus-west-2バケットのあるリージョン
AWS_ACCESS_KEY_IDSDK デフォルトの資格情報チェーン静的な access key
AWS_SECRET_ACCESS_KEYSDK デフォルトの資格情報チェーン静的な secret key
AWS_ENDPOINT_URL空MinIO などの S3 互換 endpoint
S3_USE_PATH_STYLEカスタム endpoint 時は truepath-style アドレスを使うか
ATTACHMENT_DOWNLOAD_MODEautoauto、cloudfront、presign、proxy
ATTACHMENT_DOWNLOAD_URL_TTL30m署名付きダウンロード URL の有効期間

内部ネットワークの MinIO など、ブラウザから endpoint に直接到達できない場合は ATTACHMENT_DOWNLOAD_MODE=proxy を使ってください。

ローカルディスク

変数デフォルト説明
LOCAL_UPLOAD_DIR./data/uploadsファイルと metadata の保存ディレクトリ。永続ボリュームが必要です
LOCAL_UPLOAD_BASE_URL空任意の公開 base URL。空の場合はアプリ内の相対アドレスを返します

CloudFront

変数説明
CLOUDFRONT_DOMAINCDN ドメイン
CLOUDFRONT_KEY_PAIR_IDCloudFront key pair ID
CLOUDFRONT_PRIVATE_KEY完全な秘密鍵
CLOUDFRONT_PRIVATE_KEY_SECRETSecrets Manager から秘密鍵を読み込む場合に使用

Redis とレート制限

変数デフォルト説明
REDIS_URL空共有レート制限、リアルタイムイベント、チャンネル WebSocket リース、token cache など、すべての Redis 機能が使用する唯一の接続 URL
REDIS_CLUSTER_MODEfalsetrue にすると、REDIS_URL が単一の設定エンドポイントでも Redis Cluster クライアントを使用します。クラスターモードではデータベース 0 と REALTIME_RELAY_MODE=sharded が必要です
REDIS_DISABLE_CLIENT_NAMEfalseマネージド Redis が CLIENT SETNAME を禁止している場合に true を設定
RATE_LIMIT_AUTH5認証コード送信または Google ログイン開始の、IP あたり毎分の回数
RATE_LIMIT_AUTH_VERIFY20認証コード検証の、IP あたり毎分の回数
RATE_LIMIT_INVITATION_ACTOR_10M10招待者ごとの 10 分間スライディングウィンドウ内のワークスペース招待数。0 でこの制限を無効化
RATE_LIMIT_INVITATION_WORKSPACE_24H50ワークスペース内の全管理者による 24 時間スライディングウィンドウ内の招待総数。0 でこの制限を無効化
RATE_LIMIT_INVITATION_RECIPIENT_24H6正規化された同一受信メールアドレスがワークスペースをまたいで 24 時間スライディングウィンドウ内に受け取れる招待数。0 でこの制限を無効化
RATE_LIMIT_TRUSTED_PROXIES空X-Forwarded-For の提供を許可するプロキシ CIDR。カンマ区切り
CLOWLD_TRUSTED_PROXIES空オートパイロット webhook とリアルタイム接続が使う信頼済みプロキシ CIDR

リバースプロキシ配下のデプロイでは、実際のプロキシのネットワーク範囲を設定してください。すべての送信元を無条件に信頼してはいけません。クライアントが転送元 IP を偽装できてしまいます。

認証レート制限には REDIS_URL が必要です。未設定の場合、起動ログに認証レート制限が無効であることが表示されます。招待制限は Redis なしでもプロセス内メモリで動作し、Redis を設定すると複数レプリカで割り当てを共有します。設定済みの Redis が一時的に利用できない場合、認証レート制限はフェイルオープンしますが、招待作成は保護なしでメールを送らず、再試行可能な 503 を返します。

外部連携

連携変数説明
GitHubGITHUB_APP_SLUGGitHub App の slug
GitHubGITHUB_WEBHOOK_SECRETWebhook HMAC と接続 state の署名シークレット
GitHubGITHUB_APP_IDPR カードの CI ステータス・マージ可否と「GitHub から選択」リポジトリに必要です
GitHubGITHUB_APP_PRIVATE_KEYApp ID と対になる完全な PEM 秘密鍵。用途は同上
LarkCLOWLD_LARK_SECRET_KEYbase64 エンコードされた 32 バイトの資格情報暗号化キー
SlackCLOWLD_SLACK_SECRET_KEYbase64 エンコードされた 32 バイトの token 暗号化キー
TelegramCLOWLD_TELEGRAM_SECRET_KEYbase64 エンコードされた 32 バイトの Bot token 暗号化キー
ComposioCOMPOSIO_API_KEYComposio ツール接続を有効化
ComposioCOMPOSIO_CALLBACK_BASE_URLコールバック API アドレス。CLOWLD_PUBLIC_URL にフォールバック可能
ComposioCOMPOSIO_STATE_SECRETOAuth state の署名シークレット。JWT_SECRET から派生可能
セルフホスト GitCLOWLD_VCS_INTEGRATION_ENABLEDForgejo/Gitea/GitLab 連携のスイッチ。compose ではデフォルトで有効
セルフホスト GitCLOWLD_VCS_SECRET_KEYbase64 エンコードされた 32 バイトの暗号化キー(openssl rand -base64 32)。未設定の場合、この機能全体が利用できません
PluginsCLOWLD_PLUGIN_SECRET_KEY保存済み secret と surface 実行 URL を暗号化する base64 エンコード 32 バイト鍵
PluginsCLOWLD_PLUGIN_SURFACE_ORIGINバックエンドへルーティングする Cookie なしの専用 origin。app/API origin と分離し、Host を保持すること
PluginsCLOWLD_PLUGIN_API_URLhttps://plugin-api.example.com/v1 のような完全なバージョン付き Plugin Public API ベース URL。未設定時は CLOWLD_PUBLIC_URL + /v1 にフォールバック
PluginsCLOWLD_PLUGIN_DIR開発時にローカル plugin bundle を公開するための任意の絶対ディレクトリ

GITHUB_APP_ID と秘密鍵を設定しなくても、PR の関連付け・ミラー・マージ時のステータス変更は通常どおり動きますが、カードに CI とマージ可否のステータスが表示されず、「GitHub から選択」のリポジトリ入口も無効になります。

設定手順は GitHub 連携、Lark Bot、Slack Bot、Telegram Botを参照してください。

サーバーサイド LLM

このグループは、会話タイトルなどサーバー側の補助生成機能の設定です。エージェントの実行時に使う AI コーディングツールの資格情報ではありません。

変数デフォルト説明
CLOWLD_LLM_API_KEY空OpenAI 互換の API key
CLOWLD_LLM_BASE_URL空OpenAI 互換の endpoint
CLOWLD_LLM_DEFAULT_MODELgpt-5.6-lunaリクエストがモデルを指定しない場合に使用
CLOWLD_LLM_MAX_RETRIES21 回の呼び出しあたりのリトライ上限。0 はリトライ無効、1〜5 は最大 N 回
CLOWLD_LLM_DISABLE_THINKINGfalseすべてのリクエストに chat_template_kwargs: {"enable_thinking": false} を付加。このフィールドを解釈する gateway 用

CLOWLD_LLM_MAX_RETRIES はリトライポリシーの唯一の設定元です。未設定ならデフォルトの 2 回、0 なら 1 回の呼び出しにつきリクエストは 1 回だけ、1〜5 ならリトライは最大その回数までになります。これは割り当てではなく上限です。消費するのはリトライ対象の失敗だけで、成功や呼び出し側自身のデッドラインによって早く終わることもあります。それ以外の値(負数、非数値、5 超過)は静かに補正されるのではなく起動に失敗します。上限はレイテンシ予算です。バックオフは 0.5 秒から始まり 8 秒を上限に倍増するため、これより大きい予算は呼び出し側自身のタイムアウトを超え、リトライ可能な失敗をタイムアウトに変えてしまいます。リトライの対象は接続失敗と HTTP 408、409、429、5xx で、それ以外の 4xx はそのまま返されます。サーバーは起動時に有効なポリシーを llm retry policy として記録しますが、その行に資格情報は含まれません。

CLOWLD_LLM_DISABLE_THINKING は、モデルの推論(thinking)パスが長く、アシスト呼び出しのレイテンシ予算を圧迫する gateway 向けの設定です。true(または 1)にすると、サーバーはすべてのリクエストボディに chat_template_kwargs: {"enable_thinking": false} を付加します。このフィールドを転送する gateway(vLLM/sglang 系のデプロイや、GLM/Qwen 系の一部 LiteLLM ルート)は thinking パスを省略します。標準の OpenAI endpoint は未知のボディフィールドを拒否するため、上流が受け付ける場合のみ有効にしてください。GPT-5.6 系モデルはフォローアップ質問のリクエストではサーバーが既に reasoning_effort: none を付けます。チャットの自動タイトル生成は推論フィールドを送信しません。本設定がそれに影響するのは、構成された上流が chat_template_kwargs を受け付ける場合だけです。指定できる値は true/false と 1/0(大文字小文字を区別しない)で、それ以外は起動に失敗します。起動ログにはリトライポリシーと併せて有効な状態が記録されます。

このレイヤーを使う機能は 2 つで、どちらも設定した endpoint にチャット内容を送信します。

  • 会話タイトルの自動生成 — 新しいチャットセッションでユーザーが最初に送ったメッセージを、そのまま送信します。添付ファイルは含まれません。
  • フォローアップ質問(エージェントの返信の下に表示されるボタン) — 会話の末尾を送信します。最大 6 メッセージで、対象の返信は 3000 文字、それより古いメッセージは各 800 文字が上限です。

API key と base URL の両方が空の場合、このレイヤーは無効で、上流へのリクエストは一切送信しません。上記 2 機能も内容を送信しません。会話は最初のメッセージからクライアントが生成したタイトルを使い、フォローアップ質問ボタンは表示されません。その他の機能には影響しません。

これは補助生成レイヤーのみに関する説明です。エージェントの実行は別のデータ経路です。エージェントがチャットに応答するとき、デーモンはそのエージェントの AI コーディングツールをツール自身の資格情報で実行し、上記の CLOWLD_LLM_* 設定をツールへ渡すことはありません。(エージェント自身が必要とする作業単位の Clowld Space 接続用変数は、デーモンが別途注入します。)上記の変数を空にしてもこの経路には影響しないため、エージェントのランタイム設定側で制御してください。

デーモン設定

以下の変数は、エージェントを実行するコンピューター上で読み込まれます。API コンテナ内ではありません。

変数デフォルト説明
CLOWLD_SERVER_URLws://localhost:8080/wsClowld Space API / WebSocket アドレス。http(s) も受け付けます
CLOWLD_DAEMON_DEVICE_NAMEホスト名ランタイム一覧に表示されるデバイス名
CLOWLD_AGENT_RUNTIME_NAMELocal Agentランタイムの表示名
CLOWLD_DAEMON_POLL_INTERVAL30sウェイクイベントがないときの作業ポーリング間隔
CLOWLD_DAEMON_WS_CLAIM_POLL_INTERVAL3m正常な WebSocket での claim 安全ポーリング上限。CLOWLD_DAEMON_POLL_INTERVAL とは独立して設定され、下方向のジッターにより既定値は実際には 2m30s–2m45s となり、旧 Server または結果が不確実な claim では通常のポーリング間隔を維持します
CLOWLD_DAEMON_HEARTBEAT_INTERVAL15sハートビート間隔
CLOWLD_DAEMON_MAX_CONCURRENT_TASKS20デーモン 1 つあたりの同時作業上限
CLOWLD_AGENT_TIMEOUT01 回の実行の絶対時間上限。0 は上限なし
CLOWLD_AGENT_IDLE_WATCHDOG2h出力もツール実行もない状態の静穏上限。0 で watchdog 全体を無効化
CLOWLD_AGENT_TOOL_WATCHDOGCLOWLD_AGENT_IDLE_WATCHDOG と同じ単一のツール呼び出しが静穏なままでいられる上限。モデルより長い余裕をツールに与えたい場合のみ設定し、0 はツール実行中に強制停止しません。Cursor のバックグラウンドシェルは、起動されたプロセスが終了するまで実行中とみなされます。この境界に達すると、デーモンはそれらのプロセスを停止し、Cursor に最終結果を出力するための新しい watchdog 予算を与えます。プロセスの所有権またはクリーンアップが検証できない場合は、通常の実行キャンセルポリシーが適用されます
CLOWLD_OPENCODE_IDLE_WATCHDOG10mOpenCode 専用の静穏しきい値
CLOWLD_CODEX_SEMANTIC_INACTIVITY_TIMEOUTCLOWLD_AGENT_IDLE_WATCHDOG と同じCodex のセマンティック静穏しきい値。Codex 自身のタイマーはツール実行中かどうかを判別できないため、独自の短い上限を持たず idle / tool 予算の大きい方に追従します
CLOWLD_CODEX_FIRST_TURN_TIMEOUT0Codex 初回ターンの無進捗上限を明示的に上書き;0 はデフォルトを維持。実効の初回ターン待機は依然として CLOWLD_CODEX_SEMANTIC_INACTIVITY_TIMEOUT と全体の実行タイムアウトに制限される——CLOWLD_CODEX_SEMANTIC_INACTIVITY_TIMEOUT をこの値より厳密に大きく(余裕を持たせて)設定すること。さもないと待機はその値で打ち切られ、モデルカタログの起動リトライがスキップされる。同値では不十分:セマンティックタイマーが先に起動するため、同値の場合でもリトライが失われることがある
CLOWLD_CODEX_HANDSHAKE_TIMEOUT30s、thread/start・thread/resume:60sCodex app-server 起動ハンドシェイクの上限。明示的な値は両方の予算を一括で上書きします
CLOWLD_CODEX_TURN_INTERRUPT_TIMEOUT2sキャンセル後に Codex app-server が turn/interrupt を確認し turn/completed を送信するまでの猶予時間。プロセスを強制終了する前に最終トークン使用量を保持します。特に遅いホストでは daemon ログに記録された割り込み遅延を基に調整できます
CLOWLD_DAEMON_AUTO_UPDATECloud は true、セルフホストは falseCLI の更新を自動でチェックして適用するか
CLOWLD_DAEMON_AUTO_UPDATE_INTERVAL6h更新チェックの間隔
CLOWLD_DAEMON_AUTO_RELOADtrue帯域外で置き換えられた clowld バイナリ(brew upgrade、再ダウンロード、ローカルビルド)へ再起動して追従するかどうか。CLOWLD_DAEMON_AUTO_UPDATE とは独立
CLOWLD_WORKSPACES_ROOT~/clowld_workspaces作業作業ディレクトリのルート
CLOWLD_AGENT_TEMP_BASE/tmp(Linux/macOS)Linux/macOS 専用。作業ごとのプライベート一時ディレクトリの親ディレクトリ。既存かつ書き込み可能な絶対パスである必要があり、無効な値の場合は /tmp にフォールバックせず作業の開始に失敗します。短いパスを選んでください。子ツールがその配下に AF_UNIX ソケットを作成する場合があり、sun_path の上限は Linux で 108 バイト、macOS で 104 バイトです
CLOWLD_KEEP_ENV_AFTER_TASKfalseデバッグ用に作業ディレクトリを保持

デーモンがエージェントの実行に注入する内部コンテキストについては、作業ランタイム環境を参照してください。

@/home/clowld/clowld_workspaces/clowld-spac-8e9e35d1c531/cs-534-ff75298c9d0f/workdir/combined_env_ja.txt

CLOWLD_CLAUDE_PATH=/opt/bin/claude
CLOWLD_CLAUDE_ARGS=--max-turns 40

Cursor の検証済みバックグラウンドクリーンアップには、Linux 6.9 以降(プロセスグループ pidfd)、macOS カーネルによるプロセス識別子の照会と audit token を用いたシグナル送信のサポート、または Windows で正常に割り当てられた入れ子の Job Object が必要です。macOS では各プロセスへのシグナル送信にカーネルが検証する PID version を用いるため、同一セッションのグループに参加する必要はありません。これらの macOS API は非公開であり、プロセス捕捉時に確認されます。所有権を確保できなかったバックグラウンドプロセスは元のツール結果を返し、ツール watchdog が 0 の場合も含めて通常の idle watchdog に従います。すでに所有している作業は、クリーンアップを確認できない場合も実行中のままです。ツール watchdog を 0 にした場合はこの境界自体が存在せず、所有済みのバックグラウンド作業が生きている限り実行は継続します。その場合の実行は CLOWLD_AGENT_TIMEOUT だけに制限され、これも既定値は 0 です。

所有している Cursor のバックグラウンドプロセスは、実行が正常に完了したときにも停止されます。したがって、その実行が起動したバックグラウンドサーバーが意図的に終了処理後まで生き残ることはありません。macOS は保持された元の親プロセスの識別子によって後から生まれた子プロセスを認識できますが、観測前に中間プロセスが消えた連鎖は証明できません。そのようなプロセス、追跡対象のグループから外れた作業、および継続的な所有権や送信のエラーは、バックグラウンド作業を残す可能性があります。確認できなかったクリーンアップはログに記録され、「クリーンアップ成功」による回復ウィンドウを与えることはありません。数値の PID やプロセスグループだけを根拠に未知のプロセスを終了させることはありません。

優先順位はコマンドラインフラグ → 環境変数 → ~/.clowld-space/cli/config.json → 組み込みデフォルトです。watchdog の動作はデーモンとランタイムを参照してください。

デーモン設定の永続化

デーモン側のよく使う設定は、シェルの環境変数に頼らず ~/.clowld-space/cli/config.json に書き込むこともできます。名前付きプロファイルの設定ファイルは ~/.clowld-space/cli/profiles/<name>/config.json にあります:

clowld config set poll_interval 10s
clowld config show

サポートされるキー:

キーデフォルト説明
server_urlws://localhost:8080/wsClowld Space API / WebSocket アドレス
app_url空ブラウザログインに使う Web アドレス
workspace_id空デフォルトのワークスペース
device_nameホスト名ランタイム一覧に表示されるデバイス名
runtime_nameLocal Agentランタイムの表示名
workspaces_root~ 配下のプロファイル別パス作業作業ディレクトリのルート
max_concurrent_tasks20同時作業上限。0 または空は未設定を意味します
poll_interval30s作業のポーリング間隔
ws_claim_poll_interval3m正常な WebSocket での claim 安全ポーリング上限。poll_interval とは独立して設定され、Daemon は下方向のジッターを適用します
heartbeat_interval15sハートビート間隔
agent_timeout無制限1 回の実行の絶対時間上限
codex_semantic_inactivity_timeout派生値Codex のセマンティック静穏しきい値。未設定なら idle と tool の watchdog 予算のうち大きい方を採用し、tool 予算が 0 の場合は idle 予算に回帰します。Codex 自身の 10m が残るのは watchdog 一式を無効化したときだけです
codex_handshake_timeout30s、thread/start・thread/resume:60sCodex app-server 起動ハンドシェイクの上限。明示的な値は両方の予算を一括で上書きします
disable_auto_update環境に従うtrue で自動更新を無効化。false はローカルの上書きをクリアし、環境変数またはデフォルトに戻します
auto_update_check_interval6h更新チェックの間隔
disable_auto_reload環境に従うtrue でディスク上の置き換えへの追従を停止。false はローカルの上書きをクリア。disable_auto_update とは別に解決されます

値のルール:

  • duration 系のキーは正の Go duration(10s、2h など)を受け付け、0s と負の値は拒否されます。唯一の例外は agent_timeout で、0s は有効な値として実行時間上限を明示的に無効化します。
  • 空文字列を渡すと永続化された値がクリアされ、環境変数または組み込みデフォルトに戻ります。例: clowld config set poll_interval ""。
  • max_concurrent_tasks には非負の整数が必要です。
  • 相対パスの workspaces_root は保存時に絶対パスへ変換されます。

可観測性と分析

変数デフォルト説明
ANALYTICS_DISABLEDfalsetrue で PostHog への送信を無効化
POSTHOG_API_KEY空未設定の場合は分析送信が無効。自前の PostHog プロジェクトを使う場合に設定
POSTHOG_HOSThttps://us.i.posthog.comPostHog アドレス
METRICS_ADDR空Prometheus metrics のリッスンアドレス。空なら起動しません
REALTIME_METRICS_TOKEN空/health/realtime を保護する bearer token

次のステップ

Clowld Space

  • 会社管理と参加申請: CLOWLD_COMPANY_GOVERNANCE_ENABLED, CLOWLD_COMPANY_NAME, CLOWLD_COMPANY_EMAIL_DOMAINS, CLOWLD_COMPANY_CEO_EMAIL.
  • モデル価格: MODEL_PRICING_TIMEZONE, MODEL_PRICING_LITELLM_URL, MODEL_PRICING_MODELS_URL.