До тексту

Hermes Agent: від дефолту до production — мій сетап

·1259 слів·6 хвилин
Дмитро Іванов
Автор
Дмитро Іванов
Від бекенду до повного циклу з AI

Коли я вперше запустив Hermes, думав: «ну, консольний агент, сам усе налаштую». А виявилося, що з коробки це вже платформа: CLI, TUI з вкладками, веб-дашборд на 9119 порту, gateway під 20 платформ, cron, MCP, пам’ять, десктопний застосунок, інтеграція з редакторами, близько 70 вбудованих скілів.

Та коли починаєш користуватися серйозно — впираєшся в обмеження. За півтора місяця я докрутив сетуп так, що зараз це вже не «консольний агент», а особиста екосистема.


Що Hermes дає з коробки
#

Я не перераховуватиму все — лише те, що реально використовую.

Інтерфейси. CLI (hermes chat) з мультилайн-редактором, TUI, веб-дашборд для конфігу та сесій. Gateway підключає Telegram, Discord, Signal, Email та ще з десяток — але з коробки він вимкнений.

Системні штуки, які стали в пригоді:

  • Вбудований cron — зараз на ньому крутиться 11 завдань
  • MCP — TwentyCRM та Apple Notes
  • Делегування саб-агентам — іноді роздаю завдання дочірнім агентам
  • Компресія контексту (я її вимкнув)
  • Browser automation — для QA
  • 6 термінальних бекендів — я використовую local та SSH

Що я змінив у дефолтах:

  • Модель: пустий рядок → DeepSeek v4 Flash (прямий API)
  • Gateway: вимкнений → Telegram 24/7
  • Компресія: увімкнена → вимкнена (DeepSeek тримає контекст, aux-модель лише їсть токени)
  • Streaming: true → false
  • Cron: 0 завдань → 11
  • MCP: 0 → 2
  • Профілі: 1 → 5
  • tool_progress: false → true (бачу кожен виклик)

Пам’ять: те, з чого все почалося
#

Це найбільша зміна. У Hermes з коробки два рівні пам’яті — MEMORY.md (2200 символів) та USER.md (1375). Обидва завантажуються в системний промпт кожної сесії. Для бази вистачає, але коли починаєш активно користуватися — вони швидко забиваються. А скрипт оптимізації під час перезапису губить дані.

Я розширив це до 8 рівнів:

Рівень 0:  memory-map.md — read-only карта для агента (chmod 444)
Рівень 1:  MEMORY.md — лише вказівники на сховища (5000 символів)
Рівень 2:  USER.md — преференси та профіль (4000 символів)
Рівень 3:  Fact Store — структуровані факти (~270 штук)
Рівень 4:  ChromaDB — семантичний пошук (2023 документи)
Рівень 5:  Obsidian — мої нотатки в PARA-структурі
Рівень 6:  NotebookLM — тимчасові дослідження
Рівень 7:  SSH — важкі обчислення та локальні LLM на Omarchy

Як це працює. Агент читає memory-map → бачить ієрархію сховищ → йде в MEMORY.md (вказівники) → за деталями лізе в Fact Store або ChromaDB. Усе, що не потрібне в кожному промпті, живе на нижніх рівнях. Економія токенів без втрати даних.

Fact Store — структурована база фактів з розпізнаванням сутностей та оцінкою достовірності. Агент пише сюди, а не в MEMORY.md. Зараз ~270 фактів, може рости без обмеження.

ChromaDB індексує три джерела: Obsidian (303 документи), Apple Notes (645) та Python-проєкти (1409). Разом 2023 документи, ~20 MB. Пишу «знайди, де я писав про Jellyfin» — і агент знаходить, навіть якщо в запиті немає слів із заголовка.


Інтеграція з Apple: від «є в списку» до «працює»
#

У Hermes з коробки є 5 Apple-скілів. Скіли є — але не налаштовані.

Apple Notes — головна зміна. З коробки агент читає нотатки через memo CLI на Python+JXA: 6.5 хвилин на 644 нотатки, 697 дублікатів, періодично падає. Я поставив apple-notes-mcp — Rust-сервер на ScriptingBridge. 15x швидше: 26 секунд, нуль дублікатів, стабільно. Зверху — інкрементальна індексація в ChromaDB кожні 12 годин через cron.

iMessage. Скіл є, CLI (imsg) встановлено. Я додав інтеграцію в gateway — тепер можу надіслати iMessage прямо з Telegram-чату.

Apple Reminders. Працює через remindctl з конкретними списками. Можна додати нагадування голосом через Telegram.

FindMy. Трекінг AirTag. Корисно, коли «де мій рюкзак».

Весь стек Apple доступний через єдиний пошуковий скрипт разом з Obsidian та Python-проєктами.


Архітектура: дві машини, один агент
#

Hermes працює на моєму MacBook локально. Для важких завдань є Omarchy — Arch Linux на десктопі з TITAN X Pascal (12GB VRAM). Туди я налаштував SSH для агента.

┌─────────────────────┐     SSH     ┌──────────────────┐
│   macOS MacBook     │ ──────────▶ │  Omarchy (Arch)  │
│                     │             │                  │
│  • Hermes Agent     │             │  • Ollama (LLM)  │
│  • Telegram gateway │             │  • ChromaDB      │
│  • Стек Apple       │             │  • TwentyCRM MCP │
│  • Obsidian vault   │             │  • PenPot        │
│  • Локальні файли   │             │  • Важкі завдання│
└─────────────────────┘             └──────────────────┘

Дві машини, один агент. Пишу в Telegram — працює там, де треба. Важкі індексації та LLM — на Omarchy, повсякденні завдання — локально.


Прозорість: я бачу кожен крок
#

Я налаштував систему так, щоб жоден виклик не проходив непоміченим. Без прозорості агент — чорна скриня.

НалаштуванняУ менеЕфект
tool_progress_command: trueУвімкКожен виклик термінала — в Telegram
streaming: falseВимкАгент не стримить текст поверх tool calls
approvals.manual: trueУвімкНебезпечні команди (rm -rf, git reset) потребують підтвердження
security.redact_secrets: trueУвімкAPI-ключі приховуються з виводу

Плюс cron mode: deny — заплановані завдання не виконують небезпечні команди. Якщо щось пішло не так — пишу «стоп».


Hats: ролі замість профілів
#

В оригіналі є gstack від Garry Tan — ~30 слеш-команд для Claude Code, кожна з методологією. Я адаптував потрібні мені ролі й назвав їх hats (капелюхи). Один агент, один профіль — перемикаєш роль під задачу.

У мене 13 hats — 8 одиночних та 5 комбінованих циклів:

Одиночні ролі:

  • Strategist — стратегічне мислення з форсованими питаннями: хто платитиме? що можна запустити завтра?
  • Architect — архітектура до коду: data flow, state transitions, failure modes, ADR
  • CSO — security audit: від секретів у git history до OWASP Top 10 та STRIDE
  • Debugger — залізний закон: не лагодити, доки не знайдено root cause
  • QA — smoke test, форми, empty states, HTML integrity
  • Reviewer — code review: SQL injection, race conditions, scope drift
  • Shipper — release engineer: sync, test, version, changelog, PR
  • Documenter — документація за Diataxis після мержу

Комбіновані цикли (прогін через кілька ролей):

  • full-cycle: Strategist → Architect → Dev → Reviewer → Shipper → Documenter
  • fix: Debugger → QA → Documenter
  • quick-ship: Strategist → Architect → Dev → Shipper → Documenter
  • research: Strategist → Architect → Documenter
  • audit: Architect → CSO → Architect v2

Завантажую /skill strategist — в промпті з’являється методологія Strategist: 6 питань, premise challenge, reference патерни. Поки не зніму капелюха.


Решта деталей
#

50+ кастомних скілів. Жоден не з хабу — всі написані під мої завдання: від ранкового ритуалу з погодою до Docker-стеків та tailnet.

11 cron-завдань. LLM-завдання (безплатна модель через OpenRouter): ранкове метео + продуктивність, нагадування про ідеї, вечірній daily note. Script-only: індексація Obsidian (кожні 6 год), Apple Notes (кожні 12 год), Python-проєктів (щодня), оптимізація пам’яті, cost dashboard.

5 профілів. default (DeepSeek), zai (колишній GLM), orchestrator (мульти-агенти), local (Ollama на Omarchy), developer (для експериментів).

Telegram-first. Пишу в чат — агент відповідає. Не відкриваю термінал, не лізу в дашборд.

PenPot через MCP — open-source Figma на Omarchy. Агент створює та редагує дизайни з чату.

MagicPath — пошук та встановлення UI-компонентів через AI. Офіційно не підтримує Hermes, підключив вручну через npx.


Якщо коротко
#

АспектДефолтУ мене
ІнтерфейсCLI + dashboardTelegram-first
GatewayВимкненийTelegram 24/7
МодельНе заданаDeepSeek v4 Flash
КомпресіяУвімкненаВимкнена
Пам’ять2 рівні8 рівнів
Кастомні скіли0~50
Cron011 завдань
MCP02 сервери
Профілі15
tool_progressПрихованоВсе на виду

Найбільша відмінність — Telegram як точка входу. Я не відкриваю термінал, щоб спитати про погоду, нагадати про ідею або запустити індексацію. Я пишу в чат.

Друга — багаторівнева пам’ять. Без неї агент забуває контекст між сесіями. Зараз він знає, де що лежить, і використовує правильний рівень для кожного типу інформації.

Третя — cron-автоматизація. Дефолтний Hermes нічого не робить, поки ти не напишеш. Мій прокидається, перевіряє погоду, індексує нотатки, нагадує про ідеї.

Четверта — стек Apple. Не «є скіл, але не налаштований», а працюючі інструменти: Apple Notes в ChromaDB, iMessage з чату, Reminders голосом.


Записано 16 червня 2026. Сетап продовжує змінюватися.