achmadya.dev
Terbuka untuk pekerjaan
COMMAND PALETTE

Cari sesuatu

10 hasilGunakan tautan di bawah untuk membuka halaman
Proyek
proyekMandor PlateA reusable SaaS boilerplate with an API, dashboard, database, and tests in one monorepo.proyekMCP QueryA suite of MCP servers for querying Excel and four databases over npx and stdio, with a small runtime and explicit error handling.
Tulisan
TulisanRecording Personal Finances in a Spreadsheet with HermesHow I turn a transaction message into a structured Financial Planner entry with metadata, approval, and verification.TulisanBuilding a Dedicated Workspace for Hermes to Work ReliablyHow I separated AI conversation from deterministic execution with a workspace, the kw CLI, skills, jobs, and an approval lifecycle.TulisanHow I render Markdown and Mermaid in ReactThe rendering pipeline I use for safe Markdown, highlighted code, and responsive Mermaid diagrams.TulisanDesigning an MCP tool call I can traceHow I separate protocol handling, database adapters, and public errors in a small MCP query server.TulisanInstalling Hermes Agent and Understanding Its ArchitectureA complete guide to installing Hermes Agent and understanding profiles, skills, tools, gateway, schedules, Kanban, memory, and agent architecture.TulisanA monorepo as a context boundary for AIWhat changed when I put contracts, backend, frontend, and tests in one workspace for AI-assisted development.TulisanLearning Microsoft SQL Server and its backup mechanismNotes on learning Microsoft SQL Server through an online-store case: from containers and queries to recovery models, backup chains, and restore operations.TulisanBuilding CCTV Live Streaming and Playback on the Web with FFmpegR&D notes on taking Hikvision video from RTSP to the browser, including H.265 transcoding, MPEG-TS, WebSocket delivery, and time-based playback.
~/tulisan / hermes-installation-and-architecture

Instalasi dan Arsitektur Hermes Agent dari Nol

HermesAI agentsCLIautomationarchitecture

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:

  • terminal untuk shell dan process management.
  • file untuk read, write, search, dan patch.
  • web untuk search dan content extraction.
  • browser untuk browser automation.
  • code_execution untuk Python sandbox.
  • memory untuk memory lintas session.
  • delegation untuk subagent.
  • cronjob untuk schedule.
  • kanban untuk 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:

  1. Skill umum yang dapat dipakai lintas project.
  2. 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:

Merender diagram...

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:

  1. Credential Hermes, seperti API key dan OAuth token.
  2. Credential project, seperti database password dan deployment secret.
  3. 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:

metadata
published
2026-06-28
topic
HermesAI agentsCLIautomationarchitecture
read time
5 min
Terkait