Hermes bukan sekadar chatbot di terminal
Hermes Agent adalah agent yang dapat menjalankan tool, mengingat context lintas session, menerima pesan dari beberapa platform, dan menjalankan pekerjaan terjadwal.
Perbedaan pentingnya ada pada kata agent. Hermes tidak hanya menghasilkan teks. Ia dapat membaca file, menjalankan command, mencari informasi, memanggil MCP server, membuat subagent, dan melanjutkan pekerjaan berdasarkan state yang tersimpan.
Di artikel ini saya membahas cara memasang Hermes dari awal, lalu membongkar komponen yang perlu dipahami sebelum menjadikannya bagian dari workflow harian.
1. Instalasi command line
Dokumentasi resmi menyediakan installer untuk Linux, macOS, WSL2, dan Termux. Jalur paling cepat adalah:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Installer menyiapkan environment Python, launcher, dan dependency yang diperlukan. Setelah selesai, cek versi dan health check:
hermes --version
hermes doctor
Untuk Windows native, installer PowerShell yang disediakan proyek dapat digunakan:
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
Alternatifnya adalah instalasi dari package Python:
pip install hermes-agent
Jika sistem memakai PEP 668, gunakan virtual environment atau uv agar package sistem tidak rusak:
uv venv
source .venv/bin/activate
uv pip install hermes-agent
Hermes juga menyediakan desktop app untuk Windows dan macOS. Desktop cocok jika ingin memakai interface visual, sedangkan command line lebih mudah untuk server, SSH, automation, dan debugging.
2. Setup model dan provider
Setelah binary tersedia, jalankan wizard:
hermes setup
Wizard dapat membantu memilih model, provider, backend terminal, tools, dan konfigurasi agent.
Jika ingin jalur OAuth Nous Portal:
hermes setup --portal
Untuk memilih provider atau model secara interaktif:
hermes model
Untuk melihat konfigurasi yang sedang digunakan:
hermes config
hermes config path
hermes config check
Secara umum, Hermes memisahkan konfigurasi dan credential. Pengaturan berada di config.yaml, sedangkan API key atau OAuth credential berada di file environment dan credential store. Jangan menaruh secret di repository project.
Contoh pengaturan yang sering disesuaikan:
hermes config set agent.max_turns 90
hermes config set terminal.cwd /home/user/projects
hermes config set security.redact_secrets true
hermes config set approvals.mode smart
Provider dapat berupa API key, OAuth, atau endpoint OpenAI-compatible. Credential pool juga dapat menyimpan lebih dari satu credential untuk provider yang sama dan melakukan rotasi ketika credential sedang exhausted.
3. Memahami profile
Profile adalah instance Hermes yang memiliki konfigurasi, session, memory, skills, dan state sendiri. Profile berguna ketika satu mesin dipakai untuk beberapa peran yang tidak boleh bercampur.
Contoh membuat profile:
hermes profile create personal
hermes profile list
hermes profile show personal
Menjalankan Hermes dengan profile tertentu:
hermes --profile personal
Atau gunakan shortcut profile jika sudah dibuat:
hermes profile alias personal
Secara konseptual, struktur profile terlihat seperti ini:
$HERMES_HOME/
├── config.yaml
├── .env
├── auth.json
├── state.db
├── sessions/
├── logs/
├── skills/
└── profiles/
└── personal/
├── config.yaml
├── .env
├── state.db
├── sessions/
├── logs/
└── skills/
Profile bukan hanya nama lain untuk session. Session adalah percakapan tertentu. Profile adalah boundary operasional yang lebih besar.
Saya memakai profile personal untuk workflow pribadi. Profile tersebut memiliki identity, preferensi, gateway Telegram, skill router, dan scheduler yang berbeda dari profile lain.
4. CLI dan interface percakapan
Tanpa subcommand, Hermes membuka chat interaktif:
hermes
Untuk one-shot query:
hermes chat -q "Periksa status repository ini dan jelaskan blocker-nya"
Beberapa flag yang berguna:
hermes --continue
hermes --resume SESSION_ID
hermes --profile personal
hermes --skills project-coding-workflow
hermes --worktree
Saat berada di session interaktif, command diawali /. Beberapa yang paling sering dipakai:
/help daftar command
/new session baru
/title nama memberi nama session
/model melihat atau mengganti model
/skills mencari atau memasang skill
/tools mengatur toolset
/cron mengelola schedule
/agents melihat pekerjaan background
/stop menghentikan proses background
/resume melanjutkan session
Perubahan tools dan skills biasanya berlaku pada session baru. Di gateway, perubahan konfigurasi biasanya memerlukan /restart.
5. Tools, toolsets, dan skills
Tool adalah kemampuan konkret, misalnya membaca file, menjalankan terminal, mencari web, atau mengirim pesan. Toolset adalah kelompok tool yang dapat diaktifkan atau dinonaktifkan bersama.
Periksa tool yang tersedia:
hermes tools list
hermes tools
Contoh toolset yang umum:
terminaluntuk shell dan process management.fileuntuk read, write, search, dan patch.webuntuk search dan content extraction.browseruntuk browser automation.code_executionuntuk Python sandbox.memoryuntuk memory lintas session.delegationuntuk subagent.cronjobuntuk schedule.kanbanuntuk work queue multi-agent.
Skill berbeda dari tool. Tool memberikan kemampuan, sedangkan skill memberi prosedur, aturan, dan context kapan kemampuan tersebut digunakan.
hermes skills list
hermes skills search python
hermes skills install SKILL_ID
hermes skills inspect SKILL_ID
hermes skills check
Saya membagi skill menjadi dua jenis:
- Skill umum yang dapat dipakai lintas project.
- Skill repository-owned yang menjelaskan cara memakai project atau workflow tertentu.
Untuk skill repository-owned, Hermes dapat memuat external directory dari konfigurasi:
skills:
external_dirs:
- /home/user/project/agent/skills
Dengan pola ini, skill dapat direview dan di-version-control bersama kode. Business logic tetap berada di repository aplikasi, bukan disembunyikan di prompt skill.
6. Project context dan aturan repository
Hermes membaca file context berdasarkan working directory. File ini masuk ke system prompt agar agent memahami aturan project sebelum mengubah kode.
Discovery order yang penting:
.hermes.md / HERMES.md
AGENTS.md / agents.md
CLAUDE.md / claude.md
.cursorrules / .cursor/rules/*.mdc
.hermes.md dapat diwariskan dari parent sampai git root. AGENTS.md hanya dicari dari current working directory, sehingga cocok untuk aturan yang portable dan eksplisit.
Contoh .hermes.md sederhana:
# Project rules
- Gunakan uv untuk dependency Python.
- Jalankan test sebelum menyatakan pekerjaan selesai.
- Jangan menyentuh file credential.
- Tulis perubahan sebagai vertical slice.
Context file bukan pengganti test. Ia hanya mengurangi asumsi agent. Validasi tetap harus dijalankan oleh project.
7. Gateway dan messaging platform
Gateway menjalankan Hermes sebagai service yang menerima pesan dari platform seperti Telegram, Discord, Slack, WhatsApp, email, dan platform lain yang didukung plugin.
Command utamanya:
hermes gateway setup
hermes gateway run
hermes gateway install
hermes gateway start
hermes gateway status
hermes gateway restart
hermes gateway stop
Untuk server Linux, service user perlu dibuat tahan terhadap logout SSH. Pada systemd user service, linger dapat diaktifkan jika memang diperlukan:
loginctl enable-linger "$USER"
Gateway bukan agent yang berbeda. Ia adalah ingress dan delivery surface untuk profile yang sama. Session Telegram, session CLI, dan session platform lain tetap memiliki routing serta state masing-masing.
Sebelum membiarkan bot menerima pesan pribadi, pairing atau authorization perlu dikonfigurasi. Prinsipnya, tidak semua user yang dapat mengirim pesan ke bot otomatis boleh menjalankan tool.
8. Schedule dan cron job
Hermes memiliki scheduler durable untuk pekerjaan yang harus berjalan tanpa prompt manual.
Membuat schedule:
hermes cron create "0 9 * * *"
Schedule juga dapat menggunakan durasi:
hermes cron create "30m"
hermes cron create "every 2h"
Perintah operasionalnya:
hermes cron list
hermes cron status
hermes cron edit JOB_ID
hermes cron run JOB_ID
hermes cron pause JOB_ID
hermes cron resume JOB_ID
hermes cron remove JOB_ID
Setiap job dapat memiliki prompt, model, provider, skills, delivery route, script data collection, dan working directory sendiri.
Untuk workflow production, cron Hermes dapat dibuat tipis dan hanya memanggil command aplikasi yang sudah memiliki kontrak sendiri:
Hermes scheduler
→ scheduled prompt or script
→ application command
→ persisted result
→ optional delivery
Dengan demikian, business logic tidak harus ditulis ulang di prompt cron. Ia tetap berada di script atau repository aplikasi yang dapat dites dan di-review.
Job yang membutuhkan data awal dapat memakai script pre-run. Job berikutnya juga dapat memakai output job lain sebagai context melalui chaining. Untuk pekerjaan yang benar-benar script-only, scheduler dapat menjalankan script tanpa loop agent.
9. Kanban untuk multi-agent work queue
Kanban Hermes adalah durable SQLite board untuk membagi pekerjaan ke profile atau worker yang berbeda.
Inisialisasi board:
hermes kanban init
Membuat dan melihat task:
hermes kanban create "Tambahkan endpoint health check"
hermes kanban list
hermes kanban show TASK_ID
Operasi yang umum:
hermes kanban assign TASK_ID PROFILE
hermes kanban comment TASK_ID "Context tambahan"
hermes kanban link TASK_ID OTHER_TASK_ID
hermes kanban block TASK_ID "Menunggu schema"
hermes kanban unblock TASK_ID
hermes kanban complete TASK_ID
hermes kanban tail
Dispatcher dapat mempromosikan task yang ready, melakukan claim secara atomik, menjalankan profile yang ditugaskan, dan merebut kembali claim yang stale.
Board adalah hard boundary untuk worker. Tenant membantu memisahkan project path dan memory key dalam board yang sama.
Kanban cocok untuk task yang tahan lama dan perlu state lintas process. Untuk pertanyaan kecil yang selesai dalam beberapa menit, delegation biasanya lebih sederhana.
10. Delegation dan worktree
Ada dua pola menjalankan agent tambahan.
delegate_task cocok untuk subtask singkat dengan context terisolasi. Hermes process mandiri cocok untuk pekerjaan interaktif atau yang berjalan lama.
One-shot process:
hermes chat -q "Periksa test suite dan tulis ringkasannya ke /tmp/test-report.md"
Untuk session interaktif, gunakan tmux agar prompt terminal memiliki PTY:
tmux new-session -d -s hermes-agent 'hermes'
tmux send-keys -t hermes-agent 'Periksa repository ini' Enter
tmux capture-pane -t hermes-agent -p
Jika beberapa agent mengedit kode secara paralel, gunakan worktree:
hermes --worktree
Worktree menjaga perubahan agent tetap terpisah dari branch utama. Tetap lakukan review, test, dan cleanup setelah agent selesai.
11. Memory, sessions, dan curator
Memory menyimpan fakta yang berguna lintas session, misalnya preferensi user, detail environment, atau prosedur yang stabil.
Perintah terkait memory:
hermes memory setup
hermes memory status
hermes memory off
Session sendiri dapat dilihat dan diekspor:
hermes sessions list
hermes sessions browse
hermes sessions export output.jsonl
hermes sessions stats
Hermes juga memiliki curator untuk lifecycle skill yang dibuat agent. Curator dapat menandai skill idle, membuat backup, mengarsipkan skill lama, dan melakukan konsolidasi jika diaktifkan.
hermes curator status
hermes curator run
hermes curator pin SKILL_NAME
hermes curator archive SKILL_NAME
hermes curator backup
Saya memisahkan memory dari repository code. Memory berisi context personal dan operasional, sedangkan repository menyimpan implementasi dan aturan yang harus direview.
12. MCP dan plugin
MCP server menambahkan tool dari proses atau service lain ke Hermes.
hermes mcp add NAME --command "python server.py"
hermes mcp list
hermes mcp test NAME
hermes mcp configure NAME
hermes mcp remove NAME
Plugin dapat menambahkan platform, command, atau integrasi tanpa mengubah core secara langsung:
hermes plugins list
hermes plugins install NAME
hermes plugins remove NAME
Gunakan MCP dan plugin untuk boundary integrasi yang jelas. Jangan memasukkan credential ke command line atau commit file konfigurasi berisi secret.
13. Arsitektur internal Hermes
Secara sederhana, loop Hermes dapat digambarkan seperti ini:
Komponen yang penting:
- Profile menyediakan konfigurasi dan boundary state.
- Session menyimpan percakapan tertentu.
- Prompt builder menggabungkan identity, rules, memory, skill, tools, dan environment.
- Model router memanggil provider yang dipilih.
- Tool registry mengekspos schema dan handler yang tersedia.
- Approval layer menilai command yang berisiko.
- Session store menyimpan transcript dan metadata.
- Compression menjaga conversation tetap berada dalam context window.
- Gateway menerjemahkan message platform menjadi input dan output Hermes.
- Scheduler dan webhook memulai run tanpa percakapan manual.
Hermes tidak membangun ulang prompt dan tool schema di tengah session secara sembarangan. Perubahan tools atau config umumnya memerlukan session baru agar prompt caching dan message contract tetap konsisten.
14. Security boundary yang penting
Agent dengan terminal bukan hanya text generator. Ia dapat memengaruhi file dan sistem. Beberapa setting yang perlu diperhatikan:
hermes config set security.redact_secrets true
hermes config set approvals.mode smart
Secret redaction mencegah credential yang terlihat seperti key atau token masuk ke output dan transcript. Approval mode membantu menilai command yang destructive atau mencurigakan.
--yolo tersedia untuk eksperimen terkontrol, tetapi tidak sebaiknya dijadikan default:
hermes --yolo
Pisahkan tiga hal berikut:
- Credential Hermes, seperti API key dan OAuth token.
- Credential project, seperti database password dan deployment secret.
- Data runtime, seperti session, log, state database, dan private route.
Ketiganya perlu berada di lokasi yang sesuai, dengan permission yang ketat, dan tidak masuk Git.
15. Checklist setup yang saya pakai
Setelah instalasi, saya memeriksa urutan ini:
hermes doctor
hermes config check
hermes tools list
hermes skills list
hermes profile list
hermes gateway status
hermes cron status
hermes sessions stats
Lalu saya melakukan satu percakapan read-only, satu test tool lokal, dan satu test schedule yang tidak mengirim data sensitif.
Sebelum mengaktifkan gateway production:
- gunakan profile khusus;
- batasi user melalui pairing atau authorization;
- aktifkan secret redaction;
- gunakan approval mode yang aman;
- pisahkan credential dari repository;
- cek log gateway;
- pastikan delivery route mengarah ke chat privat yang benar;
- siapkan prosedur restart dan rollback.
Penutup
Hermes paling mudah dipahami jika dilihat sebagai beberapa lapisan, bukan satu chatbot besar. Ada profile untuk boundary, session untuk percakapan, skill untuk prosedur, toolset untuk kemampuan, gateway untuk platform, cron untuk schedule, kanban untuk koordinasi, dan memory untuk context lintas session.
Instalasi hanya langkah pertama. Nilai sebenarnya muncul ketika setiap lapisan diberi tanggung jawab yang jelas.
Bagi saya, arsitektur yang paling sehat adalah:
Hermes memahami tujuan.
Skill menerjemahkan prosedur.
CLI memberi kontrak.
Tool menjalankan operasi.
State dan verification membuktikan hasilnya.
Dokumentasi resmi: