---
type: service-catalog
created: 2026-05-14T14:50:46-07:00
updated: 2026-06-04T11:35:00-07:00
tags:
  - service-catalog
  - swarm
  - hermes
  - automation
---

# Service Catalog

Canonical index of local services, automation tools, Hermes capabilities, and where to find their operational docs.

> Generated by Atlas from live system inventory on `2026-05-14T14:50:46-07:00`; high-risk local AI/service rows refreshed on `2026-05-27T12:12:06-07:00`; Obsidian/RAG embedding path refreshed on `2026-06-03T21:31:01-07:00`. Secrets are intentionally omitted.

## Quick links

- [[Ops Home]]
- [[Obsidian Automation Health]]
- [[Obsidian Plugin Setup]]
- [[Runbooks Home]]
- [[Projects Home]]
- [[Decisions Home]]

## Primary repositories and config locations

| Area | Path / command | Purpose |
| --- | --- | --- |
| Swarm repo | `~/lab/swarm` | Docker services, n8n, local AI, OpenClaw helpers, service scripts |
| Swarm Makefile | `cd ~/lab/swarm && make help` | Authoritative operations target list |
| n8n workflow exports | `~/lab/swarm/swarm-common/n8n-workflows/` | Versioned workflow backups |
| Shared Obsidian vault | `~/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap` | Active API-backed vault |
| Hermes config | `~/.hermes/config.yaml` | Atlas/Hermes model, tools, gateway, profiles |
| Hermes env/secrets | `~/.hermes/.env` | Secrets; do not print or commit |
| Hermes source | `~/.hermes/hermes-agent` | Atlas local source checkout |
| Hermes skills | `~/.hermes/skills/` | Procedural docs and reusable playbooks |

## Local endpoints

| Service | Port | Status | Purpose | Health / base URL |
| --- | --- | --- | --- | --- |
| Brave Search MCP | 18802 | HTTP 406 on plain GET `/mcp` | Brave Search MCP server for Hermes MCP tools | `http://127.0.0.1:18802/mcp` |
| SearXNG | 18803 | OK 200 | SearXNG metasearch | `http://127.0.0.1:18803/search?q=test&format=json` |
| LiteLLM | 18804 | no listener / HTTP 000 on 2026-05-27 | LiteLLM OpenAI-compatible model proxy | `http://127.0.0.1:18804/health/liveliness` |
| Kokoro TTS | 18805 | OK 200 | Kokoro local TTS | `http://127.0.0.1:18805/health` |
| llama.cpp | 18806 | OK 200 | llama.cpp local LLM | `http://127.0.0.1:18806/v1/models` |
| Ollama embeddings | 18807 | OK 200 | Ollama embeddings API | `http://127.0.0.1:18807/api/version` |
| n8n | 18808 | OK 200 | n8n workflow automation | `http://127.0.0.1:18808/healthz` |
| Docker health | 18809 | OK 200 | Docker/container health API | `http://127.0.0.1:18809/health` |
| Obsidian reindex | 18810 | OK 200 | Obsidian/RAG reindex trigger | `http://127.0.0.1:18810/healthz` |
| Whisper CPU | 18811 | OK 200 | Whisper.cpp CPU STT fallback | `http://127.0.0.1:18811/` |
| URL extractor | 18812 | OK 200 | URL/PDF/YouTube content extractor | `http://127.0.0.1:18812/healthz` |
| Voice memo processor | 18813 | OK 200 | Voice memo processor | `http://127.0.0.1:18813/healthz` |
| RAG/embedding health | 18814 | OK 200 | RAG/OpenVINO/Obsidian health wrapper | `http://127.0.0.1:18814/healthz` |
| Whisper OpenVINO NPU | 18816 | OK 200 / Docker healthy on 2026-06-04 | Intel NPU Whisper transcription service | `http://127.0.0.1:18816/health` |
| OpenVINO embeddings | 18817 | OK 200 | Intel NPU embeddings service for live Obsidian RAG | `http://127.0.0.1:18817/health` |
| OpenVINO NPU reranker prototype | 18818 | approved prototype; not enabled live | Optional second-stage RAG reranker | `http://127.0.0.1:18818/readyz` |
| OpenVINO router/classifier prototype | 18819 | approved prototype; not enabled live | Dry-run Atlas/Hermes message classifier/router | `http://127.0.0.1:18819/healthz` |
| OpenVINO GenAI NPU worker prototype | 18820 | approved prototype; not enabled live | Bounded local background generation worker | `http://127.0.0.1:18820/healthz` |
| OpenVINO document/image triage prototype | 18828/18829 | approved foreground prototype; not enabled live | Local document/image triage with NPU embeddings stage via `:18817` | `http://127.0.0.1:<port>/healthz` |
| Obsidian REST HTTP | 27123 | OK 200 | Obsidian Local REST API HTTP | `http://127.0.0.1:27123/` |

## Docker services

| Container | Status | Ports |
| --- | --- | --- |
| n8n-agent | Up 21 hours (healthy) | 0.0.0.0:18808->5678/tcp, [::]:18808->5678/tcp |
| whisper-server-gpu | Up 27 hours (healthy) | 0.0.0.0:18801->8080/tcp, [::]:18801->8080/tcp |
| whisper-server | Up 27 hours (healthy) | 0.0.0.0:18811->8080/tcp, [::]:18811->8080/tcp |
| kokoro-tts | Up 25 hours | 0.0.0.0:18805->8880/tcp, [::]:18805->8880/tcp |
| brave-search | Up 25 hours | 0.0.0.0:18802->8000/tcp, [::]:18802->8000/tcp |
| searxng | Up 25 hours | 0.0.0.0:18803->8080/tcp, [::]:18803->8080/tcp |

Management commands:

```bash
cd ~/lab/swarm
make ps
make status
make local-ai-health
make api-health
make timers
./scripts/npu-service-health.sh
```

## Host-side systemd/user services

Important known services:

| Unit | Purpose |
| --- | --- |
| `llama-server.service` | Host-side llama.cpp local LLM on 18806 |
| `ollama.service` | Host-side Ollama embeddings on 18807 |
| `docker-health-endpoint.service` | Container health API on 18809 |
| `obsidian-reindex-endpoint.service` | Obsidian/RAG reindex endpoint on 18810 |
| `url-content-extractor.service` | URL/PDF/YouTube extraction on 18812 |
| `voice-memo-processor.service` | Voice memo processing on 18813 |
| `rag-embedding-health.service` | RAG/OpenVINO/Obsidian health check wrapper on 18814 |
| `openvino-embeddings.service` | Intel NPU BGE embedding service on 18817 |
| `openvino-reranker.service` | Optional NPU reranker prototype on 18818; not installed/enabled without approval |
| `openvino-router-classifier.service` | Optional dry-run router/classifier prototype on 18819; not installed/enabled without approval |
| `openvino-genai-npu-worker.service` | Optional bounded GenAI worker prototype on 18820; not installed/enabled without approval |

Useful checks:

```bash
systemctl --user list-units '*obsidian*' '*rag*' '*url-content*' '*voice-memo*' '*docker-health*' --all
systemctl --user list-timers
journalctl --user -u obsidian-reindex-endpoint.service -n 50 --no-pager
```

## n8n workflows

n8n UI/API: `http://127.0.0.1:18808`

| Workflow | ID | State |
| --- | --- | --- |
| Calendar to Obsidian Notes | QRCCdHNXZUHc2Oz4 | inactive |
| Daily OpenClaw Session Digest | qqYwAD05AvRHrHPc | inactive |
| Evening Digest | PlZywwqL8MRNEAN6 | active |
| Gmail Inbox Monitor + Obsidian Notes | whtdorf7yJMVYeHm | active |
| IMAP Inbox Triage + Obsidian Notes | 9sFwRyUDz51csAp7 | active |
| IMAP Inbox Triage + Obsidian Notes (squareffect) | xjUoQf97TkBrawc8 | inactive |
| IMAP Inbox Triage + Obsidian Notes (wills-portal) | kHDK9QdUSiAJ8rCM | inactive |
| Morning Brief | g3IdGZCK1EtTsv9T | active |
| n8n Failure Digest | G9ylNbHbnJ6fWX2C | active |
| Nightly Obsidian Vault Sync | 75JCevkdgkyCr2qH | inactive |
| Obsidian Chat Summary Capture | LF3i86l3NkxpayxL | active |
| Obsidian Daily Review | YZyJ5G0Ur8D6TlM8 | active |
| Obsidian Health + Reindex | PCtD3PuQjzKLyEEE | active |
| Obsidian Inbox Triage | 6SKSZWZwuJNwuO2P | active |
| Obsidian URL to Note | Ori3Bu5u5ODtxxyD | active |
| Obsidian Vault Reindex | 85ntyyphDJ4Ms2b4 | active |
| Obsidian Weekly Decision Runbook Extractor | UWLMOQQVxbTX6Sis | active |
| OpenClaw Action Bus | Jwi54VWMdlLqYnRo | inactive |
| OpenClaw Reminder Webhook | RUR1CGn0ikkxbPin | inactive |
| RAG and Embedding Health Watchdog | SwKaPtYqUJrakpFu | active |
| Swarm Health Watchdog | lDKocSFXBQWQrDd3 | active |
| Voice Memo Capture (Audio URL + Local Whisper) | El1BHJZ56JlzhrRZ | active |
| Web-to-Notes Capture (Local LLM + Obsidian) | GSmzuA5dgGgyRg5v | active |

Obsidian webhook endpoints:

| Workflow | Method / URL | Input |
| --- | --- | --- |
| Obsidian Chat Summary Capture | `POST http://127.0.0.1:18808/webhook/obsidian-chat-summary` | JSON with `type`, `title`, `summary`, `content`, optional `tags`, `metadata` |
| Obsidian URL to Note | `POST http://127.0.0.1:18808/webhook/obsidian-url-to-note` | JSON with `url`, optional `folder`, `tags`, `notes` |

## Hermes capabilities

### Enabled toolsets

| Toolset | Description |
| --- | --- |
| web | 🔍 Web Search & Scraping |
| browser | 🌐 Browser Automation |
| terminal | 💻 Terminal & Processes |
| file | 📁 File Operations |
| code_execution | ⚡ Code Execution |
| vision | 👁️  Vision / Image Analysis |
| image_gen | 🎨 Image Generation |
| tts | 🔊 Text-to-Speech |
| skills | 📚 Skills |
| todo | 📋 Task Planning |
| memory | 💾 Memory |
| session_search | 🔎 Session Search |
| clarify | ❓ Clarifying Questions |
| delegation | 👥 Task Delegation |
| cronjob | ⏰ Cron Jobs |
| messaging | 📨 Cross-Platform Messaging |

### Disabled toolsets

| Toolset | Description |
| --- | --- |
| video | 🎬 Video Analysis |
| video_gen | 🎬 Video Generation |
| moa | 🧠 Mixture of Agents |
| rag_search | 🧠 RAG Search |
| rl | 🧪 RL Training |
| homeassistant | 🏠 Home Assistant |
| spotify | 🎵 Spotify |
| yuanbao | 🤖 Yuanbao |
| computer_use | 🖱️  Computer Use (macOS) |

### MCP servers

```text
MCP Servers:

  Name             Transport                      Tools        Status    
  ──────────────── ────────────────────────────── ──────────── ──────────
  brave-search     http://127.0.0.1:18802/mcp     all          ✓ enabled
```

### Hermes profiles

```text
Profile          Model                        Gateway      Alias        Distribution
 ───────────────    ───────────────────────────    ───────────    ───────────    ────────────────────
 ◆default         gpt-5.5                      running      —            —
  atlas           gpt-5.5                      stopped      —            —
  engineer        gpt-5.5                      stopped      —            —
  glm-simple      glm-5.1                      stopped      —            —
  ops             gpt-5.5                      stopped      —            —
  orchestrator    gpt-5.5                      stopped      —            —
  researcher      gpt-5.5                      stopped      —            —
  reviewer        gpt-5.5                      stopped      —            —
  writer          gpt-5.5                      stopped      —            —
```

### Hermes cron jobs

```text

┌─────────────────────────────────────────────────────────────────────────┐
│                         Scheduled Jobs                                  │
└─────────────────────────────────────────────────────────────────────────┘

  c515ca076b73 [active]
    Name:      Hermes config git snapshot
    Schedule:  0 3 * * *
    Repeat:    ∞
    Next run:  2026-05-15T03:00:00-07:00
    Deliver:   discord:1494453542243532932
    Script:    hermes_git_snapshot.sh
    Mode:      no-agent (script stdout delivered directly)
    Last run:  2026-05-11T03:00:37.525856-07:00  ok

  c15ee395a38d [active]
    Name:      atlas-minio-self-backup
    Schedule:  0 3 * * *
    Repeat:    ∞
    Next run:  2026-05-15T03:00:00-07:00
    Deliver:   origin
    Script:    atlas-backup-to-minio-cron.sh
    Mode:      no-agent (script stdout delivered directly)

  1ef682e65695 [active]
    Name:      watch pi-agent-hermes-bound kanban
    Schedule:  every 2m
    Repeat:    ∞
    Next run:  2026-05-14T14:49:39.352638-07:00
    Deliver:   local
    Script:    watch_pi_agent_kanban.py
    Mode:      no-agent (script stdout delivered directly)
    Last run:  2026-05-14T14:47:39.352638-07:00  ok

```

## Local AI and automation routing

| Capability | Preferred endpoint/tool | Notes |
| --- | --- | --- |
| Web search | SearXNG `18803` or Brave MCP `18802` | Hermes web search and MCP Brave Search are both available |
| Model proxy | LiteLLM `18804` | Use for OpenAI-compatible routed models |
| Direct local LLM | llama.cpp `18806` | Current model id: `gemma-4-26B-A4B-it-UD-IQ2_M.gguf`; useful for n8n/local automation |
| Embeddings | OpenVINO NPU `18817`; Ollama `18807` fallback | Live RAG uses `bge-base-en-v1.5-int8-ov` via OpenVINO and collection `obsidian_bge_npu`; Ollama remains a legacy/CPU fallback |
| Text-to-speech | Kokoro `18805` / Hermes TTS tool | Local speech generation |
| Speech-to-text | Whisper OpenVINO NPU `18816`; Whisper CPU `18811` fallback | NPU service is the live default; CPU remains fallback |
| Workflow automation | n8n `18808` | Durable jobs and webhooks |
| Knowledge store | Obsidian REST `27123`; RAG/Chroma local store | Obsidian notes plus Hermes rag-search index |

## Obsidian integration

| Component | Location / endpoint | Purpose |
| --- | --- | --- |
| Local REST API | `http://127.0.0.1:27123` and `https://127.0.0.1:27124` | Read/write notes and execute commands |
| Autostart entry | `~/.config/autostart/obsidian-autostart.desktop` | Launches Obsidian at graphical login |
| Autostart script | `~/.local/bin/start-obsidian-if-needed` | Idempotent launcher for Obsidian |
| Reindex endpoint | `http://127.0.0.1:18810/reindex` | Rebuilds/updates local Obsidian/RAG index |
| Dataview plugin | Vault `.obsidian/plugins/dataview` | Dashboard tables |
| Tasks plugin | Vault `.obsidian/plugins/obsidian-tasks-plugin` | Dashboard task queries |

## Source-of-truth docs

| Topic | Where |
| --- | --- |
| Swarm operations | Hermes skill `swarm`; `~/lab/swarm/Makefile` |
| n8n API/workflow management | Hermes skill `swarm`, reference `n8n-api-and-workflows.md` |
| Obsidian filesystem/API usage | Hermes skill `obsidian` |
| Hermes CLI/toolsets/gateway/profiles | Hermes skill `hermes-agent`; `hermes --help`; `hermes tools list` |
| Obsidian automation workflows | `~/lab/swarm/swarm-common/n8n-workflows/obsidian-*.json` |
| Runbooks | [[Runbooks Home]] |
| OpenVINO NPU service operations | [[OpenVINO NPU Services Runbook]]; `~/lab/swarm/scripts/npu-service-health.sh` |

## Safety notes

- Do not print `.env`, API keys, tokens, auth JSON, or decrypted n8n credentials.
- From inside the `n8n-agent` container, host services are reached via `http://172.19.0.1:<port>`, not `127.0.0.1:<port>`.
- Use file-based workflow updates for large n8n JSON payloads.
- After structural n8n workflow edits, deactivate/reactivate the workflow.
- Prefer `make` targets in `~/lab/swarm` for routine service operations.
- OpenVINO NPU prototype sidecars `:18818`, `:18819`, `:18820`, and optional `:18829` are approved prototypes only; do not enable persistent services, live Atlas/Hermes/RAG routing, vector DB mutation, or private document/image processing without explicit approval. Verify NPU usage with `/sys/class/accel/accel0/device/npu_busy_time_us`; HTTP 200 alone is not proof.
- Check git status before committing; commit only targeted non-secret source/config/docs.

## Refresh procedure

To refresh this catalog:

```bash
cd ~/lab/swarm
make status
hermes tools list
hermes mcp list
# Ask Atlas: "refresh the Obsidian Service Catalog"
```
