.env ruang kerja adalah sumber dengan tingkat kepercayaan lebih rendah: OpenClaw mengabaikan kredensial penyedia dan kontrol runtime terlindungi dari .env ruang kerja sebelum menerapkan prioritas.
Prioritas (tertinggi → terendah)
- Lingkungan proses (yang sudah dimiliki proses Gateway dari shell/daemon induk).
.envdi direktori kerja saat ini (default dotenv; tidak menimpa; kredensial penyedia dan kontrol runtime terlindungi diabaikan)..envglobal di~/.openclaw/.env(alias$OPENCLAW_STATE_DIR/.env; direkomendasikan untuk kunci API penyedia; tidak menimpa).- Blok
envkonfigurasi di~/.openclaw/openclaw.json(diterapkan hanya jika belum ada). - Impor login-shell opsional (
env.shellEnv.enabledatauOPENCLAW_LOAD_SHELL_ENV=1), diterapkan hanya untuk kunci yang diharapkan tetapi belum ada.
~/.config/openclaw/gateway.env sebagai fallback kompatibilitas setelah .env global. Jika kedua file ada dan berbeda, OpenClaw mempertahankan ~/.openclaw/.env dan mencetak peringatan.
Jika file konfigurasi sepenuhnya tidak ada, langkah 4 dilewati; impor shell tetap berjalan jika diaktifkan.
Kredensial penyedia dan .env ruang kerja
Jangan simpan kunci API penyedia hanya di .env ruang kerja. OpenClaw mengabaikan variabel lingkungan kredensial penyedia dari file .env ruang kerja, termasuk kunci umum seperti GEMINI_API_KEY, GOOGLE_API_KEY, XAI_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY, DEEPSEEK_API_KEY, PERPLEXITY_API_KEY, BRAVE_API_KEY, TAVILY_API_KEY, EXA_API_KEY, dan FIRECRAWL_API_KEY.
Gunakan salah satu sumber tepercaya ini untuk kredensial penyedia:
- Lingkungan proses Gateway, seperti shell, unit launchd/systemd, rahasia kontainer, atau rahasia CI.
- File dotenv runtime global di
~/.openclaw/.envatau$OPENCLAW_STATE_DIR/.env. - Blok
envkonfigurasi di~/.openclaw/openclaw.json. - Impor login-shell opsional saat
env.shellEnv.enabledatauOPENCLAW_LOAD_SHELL_ENV=1diaktifkan.
.env ruang kerja, pindahkan ke salah satu sumber tepercaya di atas. .env ruang kerja masih dapat menyediakan variabel proyek biasa yang bukan kredensial, pengalihan endpoint, override host, atau kontrol runtime OPENCLAW_*.
Lihat File .env ruang kerja untuk alasan keamanannya.
Blok env konfigurasi
Dua cara setara untuk menetapkan env vars inline (keduanya tidak menimpa):
env konfigurasi hanya menerima nilai string literal. Blok ini tidak memperluas
nilai file:...; misalnya, XAI_API_KEY: "file:secrets/xai-api-key.txt"
diteruskan ke penyedia sebagai string persis tersebut.
Untuk kunci penyedia berbasis file, gunakan SecretRef pada kolom kredensial yang
mendukungnya:
Impor env shell
env.shellEnv menjalankan login shell Anda dan hanya mengimpor kunci yang diharapkan tetapi belum ada:
OPENCLAW_LOAD_SHELL_ENV=1OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000
Snapshot shell exec
Pada host Gateway non-Windows, perintahexec bash dan zsh menggunakan snapshot startup secara default.
Tetapkan OPENCLAW_EXEC_SHELL_SNAPSHOT=0 di lingkungan proses Gateway untuk menonaktifkan jalur ini.
Nilai false, no, dan off juga menonaktifkannya. Nilai exec.env per panggilan tidak dapat mengaktifkan/nonaktifkan
snapshot atau mengalihkan cache snapshot.
Env vars yang disuntikkan runtime
OpenClaw juga menyuntikkan penanda konteks ke proses anak yang dibuat:OPENCLAW_SHELL=exec: ditetapkan untuk perintah yang dijalankan melalui alatexec.OPENCLAW_SHELL=acp: ditetapkan untuk pembuatan proses backend runtime ACP (misalnyaacpx).OPENCLAW_SHELL=acp-client: ditetapkan untukopenclaw acp clientsaat membuat proses jembatan ACP.OPENCLAW_SHELL=tui-local: ditetapkan untuk perintah shell TUI lokal!.OPENCLAW_CLI=1: ditetapkan untuk proses anak yang dibuat oleh titik masuk CLI.
Env vars UI
OPENCLAW_THEME=light: paksa palet TUI terang saat terminal Anda memiliki latar belakang terang.OPENCLAW_THEME=dark: paksa palet TUI gelap.COLORFGBG: jika terminal Anda mengekspornya, OpenClaw menggunakan petunjuk warna latar belakang untuk memilih palet TUI secara otomatis.
Substitusi env var dalam konfigurasi
Anda dapat merujuk env vars secara langsung dalam nilai string konfigurasi menggunakan sintaks${VAR_NAME}:
Secret refs vs string ${ENV}
OpenClaw mendukung dua pola berbasis env:
- Substitusi string
${VAR}dalam nilai konfigurasi. - Objek SecretRef (
{ source: "env", provider: "default", id: "VAR" }) untuk kolom yang mendukung referensi rahasia.
env konfigurasi itu sendiri tidak menyelesaikan SecretRefs atau nilai shorthand
file:....
Env vars terkait path
| Variabel | Tujuan |
|---|---|
OPENCLAW_HOME | Override direktori home yang digunakan untuk default path internal OpenClaw (~/.openclaw/, direktori agen, sesi, kredensial, onboarding installer, dan checkout dev default). Berguna saat menjalankan OpenClaw sebagai pengguna layanan khusus. |
OPENCLAW_STATE_DIR | Override direktori state (default ~/.openclaw). |
OPENCLAW_CONFIG_PATH | Override path file konfigurasi (default ~/.openclaw/openclaw.json). |
OPENCLAW_INCLUDE_ROOTS | Daftar path direktori tempat direktif $include dapat menyelesaikan file di luar direktori konfigurasi (default: tidak ada — $include dibatasi ke direktori konfigurasi). Tilde diperluas. |
Logging
| Variabel | Tujuan |
|---|---|
OPENCLAW_LOG_LEVEL | Override level log untuk file dan konsol (mis. debug, trace). Diprioritaskan atas logging.level dan logging.consoleLevel dalam konfigurasi. Nilai tidak valid diabaikan dengan peringatan. |
OPENCLAW_DEBUG_MODEL_TRANSPORT | Mengeluarkan diagnostik timing permintaan/respons model yang tertarget pada level info tanpa mengaktifkan log debug global. |
OPENCLAW_DEBUG_MODEL_PAYLOAD | Diagnostik payload model: summary, tools, atau full-redacted. full-redacted dibatasi dan disunting tetapi mungkin menyertakan teks prompt/pesan. |
OPENCLAW_DEBUG_SSE | Diagnostik streaming: events untuk timing awal/selesai, peek untuk menyertakan lima event SSE pertama yang disunting. |
OPENCLAW_DEBUG_CODE_MODE | Diagnostik permukaan model mode kode, termasuk penyembunyian alat penyedia dan penegakan hanya exec/wait. |
OPENCLAW_HOME
Saat ditetapkan, OPENCLAW_HOME menggantikan direktori home sistem ($HOME / os.homedir()) untuk default path internal OpenClaw. Ini mencakup direktori state default, path konfigurasi, direktori agen, kredensial, ruang kerja onboarding installer, dan checkout dev default yang digunakan oleh openclaw update --channel dev.
Prioritas: OPENCLAW_HOME > $HOME > USERPROFILE > fallback home Termux PREFIX di Android > os.homedir()
Contoh (macOS LaunchDaemon):
OPENCLAW_HOME juga dapat ditetapkan ke path tilde (mis. ~/svc), yang diperluas menggunakan rantai fallback home OS yang sama sebelum digunakan.
Variabel path eksplisit seperti OPENCLAW_STATE_DIR, OPENCLAW_CONFIG_PATH, dan OPENCLAW_GIT_DIR tetap diprioritaskan. Tugas akun OS seperti deteksi file startup shell, setup package-manager, dan ekspansi host ~ masih dapat menggunakan home sistem yang sebenarnya.
Pengguna nvm: kegagalan TLS web_fetch
Jika Node.js diinstal melalui nvm (bukan package manager sistem),fetch() bawaan menggunakan
penyimpanan CA bundel nvm, yang mungkin tidak memiliki CA root modern (ISRG Root X1/X2 untuk Let’s Encrypt,
DigiCert Global Root G2, dll.). Ini menyebabkan web_fetch gagal dengan "fetch failed" di sebagian besar situs HTTPS.
Di Linux, OpenClaw otomatis mendeteksi nvm dan menerapkan perbaikan di lingkungan startup sebenarnya:
openclaw gateway installmenulisNODE_EXTRA_CA_CERTSke lingkungan layanan systemd- titik masuk CLI
openclawmenjalankan ulang dirinya denganNODE_EXTRA_CA_CERTSditetapkan sebelum startup Node
node ...):
Ekspor variabel sebelum memulai OpenClaw:
~/.openclaw/.env untuk variabel ini; Node membaca
NODE_EXTRA_CA_CERTS saat startup proses.
Variabel lingkungan legacy
OpenClaw hanya membaca variabel lingkunganOPENCLAW_*. Prefiks legacy
CLAWDBOT_* dan MOLTBOT_* dari rilis sebelumnya diabaikan secara diam-diam.
Jika ada yang masih ditetapkan pada proses Gateway saat startup, OpenClaw mengeluarkan
satu peringatan deprecation Node (OPENCLAW_LEGACY_ENV_VARS) yang mencantumkan
prefiks yang terdeteksi dan jumlah totalnya. Ganti nama setiap nilai dengan mengganti
prefiks legacy dengan OPENCLAW_ (misalnya CLAWDBOT_GATEWAY_TOKEN →
OPENCLAW_GATEWAY_TOKEN); nama lama tidak berpengaruh.