Tiga Lapis Kunci: Gimana Hermes Agent Nyimpen API Key
Bayangin Hermes Agent kayak rumah. Dia butuh banyak kunci buat buka pintu: OpenAI, GitHub, HuggingFace, Telegram, dan seterusnya. Tapi gak semua kunci disimpan di tempat yang sama. Ada tiga laci, masing-masing beda karakter dan aturan mainnya.
Lapis 1 — System Environment Variables (laci di udara)
Ini env yang ditanam langsung ke sistem operasi. Paling kuat, paling tinggi prioritasnya. Begitu di-export, semua child process langsung bisa lihat.
Tapi ada jebakan: gak persisten. Restart server → hilang. Dan yang lebih bahaya: cron job seringkali gak mewarisi system env dari dashboard VPS (Zeabur, Railway, dsb).
Lapis 2 — File .env (brankas di lantai)
File /opt/data/.env — dibaca Hermes saat startup. Persisten, selamat dari restart. Formatnya simpel: KEY=value.
Kelemahannya: child process (terminal tool, script) gak otomatis mewarisi isi .env. Harus di-export manual:
export $(grep -v '^#' /opt/data/.env | xargs)
Buat cron job, ini wajib — taro di baris paling atas setiap shell script.
Lapis 3 — config.yaml (panel kontrol di dinding)
Bukan tempat secret. Di sini settingan model, tools, gateway, timeout. Aturan emasnya: .env untuk secrets, config.yaml untuk settings.
Urutan prioritas:
- System Env (paling kuat)
.envfile (fallback)config.yaml(settings only, bukan secret)
Cek cepat: “Token gue ada di mana?”
printenv GITHUB_TOKEN→ nemu tapi.envkosong → dari dashboard VPSprintenv GITHUB_TOKEN→ nemu,.envjuga nemu → dua-duanya ada, system env yang dipakeprintenv GITHUB_TOKEN→ kosong, tapi.envnemu → token dari.envtapi belum di-exportgrepnemu tapi depannya ada#→ cuma placeholder, bukan token aktif
Pelajaran dari lapangan:
Cerita nyata di Zeabur. Token GITHUB_TOKEN jalan normal di chat (printenv nemu), tapi backup cron job gagal terus — token not provided.
Ternyata: token diinjeksi dashboard Zeabur ke system env (makanya printenv di chat nemu), tapi .env isinya cuma placeholder # GITHUB_TOKEN=. Cron job Hermes berjalan di environment terpisah yang gak dapat warisan dashboard itu.
Solusinya: tulis token ke .env + source dari .env di setiap cron script. printenv saat chat bukan jaminan token tersedia di cron.
Buat yang hosting Hermes di VPS (Zeabur, Railway, atau VPS manapun), ini checklist simpelnya:
- Token kritis selalu tulis ke
.env— jangan cuma ngandelin inject-an dashboard - Cron shell script wajib ada
export $(grep -v '^#' /opt/data/.env | xargs)di baris pertama - Jangan taruh API key di
config.yaml - Kalau udah edit
.env, jangan lupa/restartHermes