Коли я вперше запустив 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 + dashboard | Telegram-first |
| Gateway | Вимкнений | Telegram 24/7 |
| Модель | Не задана | DeepSeek v4 Flash |
| Компресія | Увімкнена | Вимкнена |
| Пам’ять | 2 рівні | 8 рівнів |
| Кастомні скіли | 0 | ~50 |
| Cron | 0 | 11 завдань |
| MCP | 0 | 2 сервери |
| Профілі | 1 | 5 |
| tool_progress | Приховано | Все на виду |
Найбільша відмінність — Telegram як точка входу. Я не відкриваю термінал, щоб спитати про погоду, нагадати про ідею або запустити індексацію. Я пишу в чат.
Друга — багаторівнева пам’ять. Без неї агент забуває контекст між сесіями. Зараз він знає, де що лежить, і використовує правильний рівень для кожного типу інформації.
Третя — cron-автоматизація. Дефолтний Hermes нічого не робить, поки ти не напишеш. Мій прокидається, перевіряє погоду, індексує нотатки, нагадує про ідеї.
Четверта — стек Apple. Не «є скіл, але не налаштований», а працюючі інструменти: Apple Notes в ChromaDB, iMessage з чату, Reminders голосом.
Записано 16 червня 2026. Сетап продовжує змінюватися.
