Files
obsidian-vault/300 areas/350 AI/Hermes Ai autonomous Agent.md

186 lines
6.4 KiB
Markdown

---
created: 2026-05-26 21:13
modified: 2026-05-26 21:13
type: note
tags:
- ai
- dev
- dev-ops
- agents
aliases: []
---
# [[Hermes Ai autonomous Agent]]
# Hermes Agent — Local Setup Overview
## What is it?
- **Open-source autonomous AI agent** by Nous Research (MIT license, ~150K GitHub stars)
- Runs **on your own hardware** — not a cloud service
- You talk to it via **Telegram, Discord, Slack, terminal TUI, or web dashboard**
- **Self-improving** — saves workflows as reusable "skills" (markdown files) you can read and edit
- Integrates with: Gmail, Google Calendar, Home Assistant, Obsidian, email, browser automation, cron scheduling
---
## What I can use it for
### Daily personal
- Morning briefings (email + calendar + tasks → Telegram)
- Email triage and draft responses
- Calendar management via chat
- Home Assistant control (lights, climate, sensors, automations)
- Task tracking (Todoist, Obsidian tasks)
### Scheduled automations (cron)
- Daily/weekly research summaries
- Server monitoring (logs, disk, uptime) with alerts
- Backup reminders and health checks
- Regular file cleanup and organization
### DevOps & infrastructure
- Remote server management via SSH
- Log review and anomaly detection
- Automated reports delivered to messaging apps
### Information
- Web research and synthesis
- Obsidian vault search and management
- Multi-source summarization
---
## My setup
### Machines
- **.27** — Desktop/dev machine, turns off most nights
- **.13** — Stays on 24/7 (server/NAS)
### Architecture decision
- Run Hermes on **.13** (always-on) as the **primary instance**
- This is where cron jobs, scheduled tasks, and the gateway live
- It's running 24/7 so automations fire reliably
- Access from **.27** and other machines via:
- **Telegram** (phone, any machine)
- **Web dashboard** (`http://[.13-ip]:9119`)
- **Terminal TUI** via SSH into .13
- If .13 has low RAM: use **cloud model API** (OpenRouter free tier, Anthropic API) instead of local model
- If .13 has 8GB+ RAM: can run **8B local models** via Ollama for privacy
### Model options
| Approach | Cost | Privacy | Speed | Requirements |
|---|---|---|---|---|
| OpenRouter free tier | $0 | Medium | Fast | Internet |
| OpenRouter paid | ~$5-10/mo | Medium | Fast | Internet |
| Anthropic API (Claude) | ~$5-15/mo | Low | Fast | Internet |
| Local model via Ollama | $0 (hardware) | **High** | 2-10 t/s on CPU | 8GB+ RAM, 4+ cores |
| Local model + GPU | $0 (hardware) | **High** | 30-100+ t/s | NVIDIA GPU with 8GB+ VRAM |
---
## Installation — NixOS Container Mode (Method 3)
**Why container mode:**
- `NoNewPrivileges`, `ProtectSystem=strict`, `PrivateTmp` — systemd hardening
- Agent runs in Ubuntu container, **can't touch host filesystem** unless you mount volumes
- Can install packages inside container via `apt`/`pip`/`npm`
- Declarative in `configuration.nix` — reproducible
**NixOS config (.13):**
```nix
services.hermes-agent = {
enable = true;
container.enable = true;
# environmentFile for secrets (sops-nix or agenix recommended)
};
```
**Three integration levels (pick one):**
| Level | Use case | Config location |
|---|---|---|
| `nix run` / `nix profile install` | Quick try, any Nix user | `~/.hermes/` |
| **NixOS module (native)** | Standard deployment, highest security | `configuration.nix` |
| **NixOS module (container)** | **Chosen method** — isolation + flexibility | `configuration.nix` |
---
## Security & access control
- **Dedicated `hermes` user** — can't access your files
- **Container isolation** — commands run inside Docker container, not host
- **Secrets via sops-nix/agenix** — API keys not stored in plain text
- **Sandbox terminal backend** — optional Docker per-command isolation
- **Credential files** mounted read-only into container only when needed
- Hermes has **no built-in sandbox** — the NixOS container mode is what provides this
### Filesystem access
- Hermes only sees what you explicitly give it
- Mount specific folders read-only if needed for a skill/project
- Without explicit mounts, container has zero host access
---
## Credentials & secrets
- API keys → `~/.hermes/.env` (or sops-nix/agenix on NixOS)
- Google OAuth (Gmail/Calendar/Drive) — interactive setup via `hermes model`, stores `google_token.json` and `google_secret.json`
- Home Assistant → Long-Lived Access Token in `.env` as `HASS_TOKEN`
- Telegram bot → Bot token in `.env`
---
## Workflow management
### Create automations
- **Plain English** — "every day at 9am, check my email and summarize"
- **CLI** — `hermes cron create "every 1d at 09:00" "Summarize overnight emails"`
- **From chat** — `/cron list`, `/cron pause <id>`, `/cron run <id>`
### Review existing workflows
- `hermes cron list` — all scheduled jobs
- `~/.hermes/cron/jobs.json` — job definitions
- `~/.hermes/cron/output/` — output from each run
### Skills (workflows as .md files)
- **`~/.hermes/skills/`** — all skills live here
- Agent **creates skills from your conversations** automatically
- 118 bundled skills out of the box (GitHub, Google Workspace, Obsidian, etc.)
- 500+ community skills in the [Skills Hub](https://hermes-agent.nousresearch.com)
- Each skill is a readable `SKILL.md` file — you can review, edit, delete
---
## Key paths (on .13)
```
~/.hermes/
├── config.yaml # Main configuration
├── .env # API keys and secrets (or sops-nix)
├── SOUL.md # Agent personality/identity
├── skills/ # All skills (bundled, hub, agent-created)
│ ├── devops/
│ ├── productivity/
│ ├── .hub/ # Skills Hub state
│ └── .bundled_manifest
├── cron/
│ ├── jobs.json # Scheduled automations
│ └── output/ # Cron run outputs
├── sessions/ # Chat session history
├── state.db # SQLite database (full-text search)
└── logs/ # agent.log, gateway.log, errors.log
```
---
## First steps after install
1. Run `hermes setup` — configure model provider
2. Add Telegram bot token to `.env` and run `hermes gateway`
3. Set up Google Workspace skill for email/calendar
4. Add Home Assistant token for smart home control
5. Set your first cron job: "every day at 9am, send me a briefing"
6. Create `AGENTS.md` in project folders for per-project instructions
7. Review what the agent has learned: check `~/.hermes/skills/` regularly