---
title: >-
  Hermes + NotebookLM + Obsidian: Build a 3-Agent Research Department That Gets
  Smarter Every Day
summary: >-
  A three-profile Hermes setup where Scout finds signals, Analyst synthesizes
  through NotebookLM, and Briefer delivers a morning brief — coordinated through
  a shared Obsidian vault. Roughly $19-27/month, one evening to set up.
author: YanXbt
authorUrl: 'https://x.com/IBuzovskyi'
category: Multi-Agent
difficulty: Advanced
readingTime: 5
date: '2026-06-17'
tags:
  - multi-agent
  - research
  - notebooklm
  - obsidian
  - profiles
  - cron
  - automation
integrations:
  - Hermes Agent
  - NotebookLM
  - Obsidian
  - Telegram
  - config.yaml
agents:
  - name: Scout
    role: >-
      Finds signals — checks sources on a schedule and drops raw findings into
      an inbox. No analysis, no synthesis, raw signal only. Runs on a cheap,
      high-volume model.
  - name: Analyst
    role: >-
      Synthesizes meaning — processes raw findings, runs them through NotebookLM
      for cross-source synthesis, and writes confidence-tagged notes to the
      Obsidian wiki. Runs on a strong reasoning model.
  - name: Briefer
    role: >-
      Delivers action items — reads recent wiki entries each morning,
      cross-references with current projects and goals, and delivers a 5-bullet
      prioritized brief to Telegram.
---

## The core idea

One agent doing research, analysis, and briefing at the same time produces mediocre results. Context gets polluted, priorities blur, and quality drops with every added responsibility. The agent confuses *what to find* with *what to analyze* with *what to report*.

Three separate agents — each doing one job — produce compounding results. **Scout** finds signals. **Analyst** synthesizes meaning. **Briefer** delivers action items. Each profile has its own `SOUL.md`, its own model, its own memory, and its own skills. They are isolated and focused, coordinated only through a shared Obsidian vault.

- **Total cost:** $19-27/month depending on model choice.
- **Setup time:** one evening for the standard configuration.
- **Verified against:** Hermes Agent v0.16.0 documentation.

### Who this is for

- Solo founders tracking competitors and market trends
- Content creators who need daily research for their niche
- Agency owners monitoring multiple industries for clients
- Researchers following academic papers and industry developments
- Startup teams building competitive intelligence without hiring an analyst

If you spend more than 30 minutes a day on manual research, reading newsletters, or checking competitor updates, this setup pays for itself in the first week.

## Why three agents, not one

A single Hermes profile handling research end-to-end carries every source, every analysis note, and every briefing draft in one context window. By day 3, the context is heavy with research that has nothing to do with this morning's brief. By week 2, the agent has 40+ skills covering everything from arXiv parsing to Telegram formatting. Tool Search helps, but the fundamental problem remains: one identity trying to be three different workers.

Profiles solve this at the architecture level. Each profile in Hermes is a fully isolated agent — own `SOUL.md`, own `config.yaml`, own memory, own skills, own cron jobs. They share nothing by default. What they share *by design* is a directory: the Obsidian vault where Scout deposits raw findings, Analyst writes synthesized notes, and Briefer reads each morning.

Three profiles. Three clear jobs. One shared knowledge base.

### Fastest setup path: the Desktop app

The Desktop app (v0.16.0) has a built-in Profile Builder — no terminal needed:

```
hermes dashboard → Profiles → Build
```

A five-step wizard for each profile: Identity → Model → Skills → MCPs → Review. You can create all three profiles in about 15 minutes. You can also create them via CLI:

```bash
hermes profile create scout
hermes profile create analyst
hermes profile create briefer
```

Both paths produce the same result. Desktop is faster for first-time setup; CLI is faster once you know what you want.

## Scout — finds signals

The Scout checks sources on a schedule and drops raw findings into an inbox. No analysis. No synthesis. No opinion. Raw signal only.

```markdown
# Soul
You are a research scout. Your job is to find signals.
You do not analyze. You do not summarize.
You find relevant information and save it.

## Voice
Terse. File names and one-line descriptions only.
No commentary. No recommendations.

## Operations
Search the sources listed in your cron jobs.
For each finding: save the full text as a markdown file
to ~/research/inbox/ with format:
YYYY-MM-DD-source-keyword.md
Include the source URL on the first line.

## Restrictions
Never analyze or synthesize what you find.
Never write more than 3 lines of your own text per file.
Never delete files from the inbox.
Never modify files written by other profiles.
```

- **Model:** a cheap, high-volume model. Scout does low-reasoning work, so an inexpensive model is the right choice.
- **X/Twitter search note:** a cheap general model can't search X natively. Either use the `xurl` skill (X API integration, works with any model, needs X Developer App credentials) or switch Scout to Grok via SuperGrok OAuth (native X search built in). If X monitoring is core to your research, Grok simplifies the setup. If you only need web + arXiv + RSS, the cheap model handles everything.
- **Tools:** web search, X search (`xurl`), RSS feeds, arXiv API.

Example cron jobs:

```bash
/cron add "every 3h" \
  --prompt "Search X for posts about [your niche keywords]
  with more than 50 likes in the last 3 hours.
  Save each relevant finding as a markdown file
  to ~/research/inbox/. Include source URL." \
  --deliver telegram

/cron add "every morning 7am" \
  --prompt "Check arXiv for new papers in [cs.AI, cs.CL]
  from the last 24 hours. Save titles, abstracts,
  and URLs to ~/research/inbox/." \
  --deliver telegram

/cron add "every day 9am" \
  --prompt "Check these competitor URLs for changes:
  [url1, url2, url3]. If any page changed since last check,
  save the diff to ~/research/inbox/." \
  --script competitor-diff.py

/cron add "every monday 8am" \
  --prompt "Scan Product Hunt for AI launches
  from the past 7 days. Save top 10 by upvotes
  to ~/research/inbox/." \
  --deliver telegram
```

Most Scout crons use `wakeAgent` gates. The competitor-diff script checks for changes before waking the agent — no changes means zero tokens.

## Analyst — synthesizes meaning

The Analyst processes raw findings from Scout, runs them through NotebookLM for deep synthesis, and writes structured notes to the Obsidian wiki. This is where raw signals become usable knowledge.

```markdown
# Soul
You are a research analyst. Your job is to synthesize.
You turn raw findings into structured knowledge.
You verify claims. You flag contradictions.
You connect ideas across sources.

## Voice
Precise. Evidence-based. Every claim tagged with
confidence level: [verified] [likely] [unverified] [conflicting].
Use tables for comparisons. Use bullet points for lists.
Cite sources for every factual claim.

## Operations
Process files from ~/research/inbox/.
For each batch:
1. Feed sources to NotebookLM for cross-source synthesis
   (if NotebookLM unavailable, run synthesis directly via /goal)
2. Extract key insights from the synthesis
3. Write structured notes to the wiki using the LLM Wiki skill
4. Tag each entry with confidence level
5. Flag contradictions with existing wiki entries
6. Move processed files to ~/research/processed/

## Restrictions
Never present unverified claims as facts.
Never skip the confidence tagging step.
Never write to the wiki without source attribution.
Never delete wiki entries. Update or flag only.
Never modify inbox files that were not created by Scout.
```

- **Model:** a strong reasoning model. This is where quality matters — the Analyst writes the knowledge the Briefer reads every morning.
- **Tools:** NotebookLM MCP, the bundled Obsidian / LLM Wiki skill, web search (for verification), file tools.

Cron job:

```bash
/cron add "every day 10am" \
  --script check-inbox.py \
  --prompt "Process all files in ~/research/inbox/.
  Feed them to NotebookLM for synthesis.
  Extract key insights. Write structured notes
  to Obsidian wiki. Tag confidence levels.
  Flag contradictions. Move processed files
  to ~/research/processed/." \
  --deliver telegram
```

The inbox-check script acts as a `wakeAgent` gate — save it as `~/.hermes/scripts/check-inbox.py`:

```python
#!/usr/bin/env python3
import os, json

inbox = os.path.expanduser("~/research/inbox")
files = [f for f in os.listdir(inbox) if f.endswith('.md')] if os.path.exists(inbox) else []

if files:
    print(json.dumps({"wakeAgent": True}))
    print(f"{len(files)} new files in inbox:")
    for f in files:
        print(f"  {f}")
else:
    print(json.dumps({"wakeAgent": False}))
```

Empty inbox means zero tokens. New files mean the Analyst wakes and processes.

## Briefer — delivers action items

The Briefer reads the Obsidian wiki every morning, cross-references with your current projects and calendar, and delivers a prioritized brief to Telegram.

```markdown
# Soul
You are a briefing officer. Your job is to deliver
a short, prioritized, actionable morning brief.
You do not research. You do not analyze.
You read what Analyst wrote and tell me
what matters today.

## Voice
5 bullets maximum. Each bullet: one finding,
why it matters to me, suggested action.
No preamble. No summary of the summary.
Start with the most important item.

## Operations
Every morning:
1. Read recent wiki entries (last 24 hours)
2. Cross-reference with my current projects
   (check MEMORY.md and kanban board)
3. Prioritize by relevance to this week's goals
4. Deliver 5-bullet brief to Telegram
5. End with total token spend this week

## Restrictions
Never exceed 5 bullets in the brief.
Never include items older than 48 hours unless flagged [urgent].
Never repeat items from yesterday's brief unless status changed.
```

- **Model:** a cheap model. The Briefer does light synthesis and formatting — one brief per day, low token volume.
- **Tools:** Obsidian skill (read), session recall, file tools.

```bash
/cron add "every day 8am" \
  --prompt "Read the Obsidian wiki entries
  from the last 24 hours. Cross-reference
  with my current projects and this week's goals.
  Deliver a 5-bullet prioritized brief.
  Most important item first.
  End with token spend this week." \
  --deliver telegram
```

## The NotebookLM connection

NotebookLM is what gives the Analyst depth. Instead of synthesizing sources through its own reasoning (good but limited by the context window), NotebookLM ingests all sources, cross-references across them, and produces synthesis drawn from the full corpus.

What NotebookLM adds to the pipeline:

- Multi-source synthesis (connects ideas across 50+ sources)
- Audio overviews (podcast-style digest of your research)
- Question answering from your curated source library
- Reduced hallucination by drawing from verified sources

The tool is `notebooklm-mcp-cli` by jacob-bd — 35 MCP tools for programmatic NotebookLM access ([repo](https://github.com/jacob-bd/notebooklm-mcp-cli)).

Install and authenticate:

```bash
pip install notebooklm-mcp-cli
nlm login
```

This opens a browser for Google OAuth — log in with your Google account. Then add it through the Desktop app:

```
hermes dashboard → MCP → Add Server

Name: notebooklm
Transport: stdio
Command: nlm
Arguments: mcp serve

Save → Test Connection  (should show 35 available tools)
```

Then assign it to the Analyst profile only:

```
hermes dashboard → Profiles → analyst → MCPs
Enable notebooklm server for this profile
```

What the Analyst can do through NotebookLM:

```bash
nlm notebook create "Weekly Research"
nlm source add <notebook-id> ~/research/inbox/file1.md
nlm source add <notebook-id> ~/research/inbox/file2.md
nlm source add-research <notebook-id> "query about your niche"
```

### Honest caveat

NotebookLM does not have a public API for the consumer product as of June 2026 (the Enterprise product does). `notebooklm-mcp-cli` uses a Playwright-based browser-automation wrapper under the hood. If Google changes an internal endpoint, the wrapper can break. This is a real limitation — plan for it by adding a fallback to the Analyst `SOUL.md`:

```
If NotebookLM connection fails, run synthesis
directly using /goal with this structure:
"synthesize these [N] sources. find connections.
flag contradictions. write to Obsidian wiki."
```

A strong reasoning model with `/goal` produces solid synthesis on its own. NotebookLM makes it deeper; the fallback makes it reliable.

## Obsidian as the shared knowledge base

Obsidian is the only component all three profiles touch — the shared memory layer. Hermes ships with a bundled LLM Wiki skill based on Andrej Karpathy's LLM Wiki pattern. It compiles knowledge into interlinked markdown files: cross-references stay linked and contradictions get flagged automatically.

Vault structure:

```
vault/
├── inbox/              # raw findings from Scout (temporary)
├── sources/            # processed source pages
├── synthesis/          # Analyst's structured notes
├── briefs/             # archived morning briefs
├── entities/           # people, companies, products
├── contradictions/     # flagged conflicts
└── .last-pushed        # timestamp for sync tracking
```

Set the wiki path for each profile through the Dashboard:

```
hermes dashboard → Config → search "WIKI"
WIKI_PATH = <your vault path>
OBSIDIAN_VAULT_PATH = <your vault path>
```

Repeat for Scout, Analyst, and Briefer. On first use, the LLM Wiki skill detects an empty directory and asks for a domain — this builds `SCHEMA.md` with a tag taxonomy and conventions. Example response:

```
AI agents, automation frameworks, and solo founder tooling.

focus areas:
- agent architecture and ecosystem
- competitor frameworks and comparisons
- AI model releases and benchmarks
- automation workflows and multi-agent systems
- token economics and cost optimization
```

The skill creates `SCHEMA.md` once and uses it for all future indexing (you can edit it later if your focus shifts). All three profiles point to the same directory: Scout writes to `inbox/`, Analyst reads `inbox/` and writes to `sources/` and `synthesis/`, Briefer reads `synthesis/`. Open the vault in Obsidian and the graph view shows nodes growing as the system runs — the knowledge graph builds itself overnight.

## How they coordinate

No Kanban needed for this setup. File-based coordination with `wakeAgent` gates:

```
SCOUT (runs every 3 hours):
  → searches sources
  → drops markdown files to ~/research/inbox/
  → notifies on Telegram what was found

ANALYST (runs daily at 10am):
  → wakeAgent script checks ~/research/inbox/
  → empty inbox? sleep. zero tokens.
  → files found? wake up. process through NotebookLM.
  → write to Obsidian wiki
  → move processed files to ~/research/processed/

BRIEFER (runs daily at 8am):
  → reads recent Obsidian wiki entries
  → cross-references with projects and goals
  → delivers 5-bullet brief to Telegram
```

**Why file-based and not Kanban:** Kanban is powerful but adds overhead for a pipeline this linear. Scout → Analyst → Briefer is a straight line, so a file inbox plus a `wakeAgent` gate is simpler, cheaper (zero dispatcher overhead), and easier to debug — just check the inbox folder. If you later add more roles (Code Reviewer, Content Writer, Outreach Agent), Kanban becomes worth it. For three profiles in a pipeline, files are enough.

## Setup tiers

Hermes handles most of the configuration — you tell it what you want.

### Basic — Scout + Briefer only

No Analyst, no NotebookLM, no Obsidian.

1. **Create two profiles** in the Dashboard (`Profiles → Build`): Scout on a cheap model (or Grok for X search), Briefer on a cheap model.
2. **Tell each profile what to do.** Open Scout: *"Set up a cron job that runs every 3 hours. Search web for [your niche keywords]. Save findings as markdown files to `~/research/inbox/`. Include source URL on the first line. Deliver confirmation to Telegram."* Open Briefer: *"Set up a cron job that runs every day at 8am. Read all files in `~/research/inbox/`. Deliver a 5-bullet prioritized brief to Telegram, most important item first."*
3. **Connect Telegram.** Message `@BotFather`, `/newbot`, copy the token. Message `@userinfobot` for your user ID. In `Dashboard → Channels → Telegram`, paste the bot token and user ID, save, and restart the gateway. One bot handles all profiles.

### Standard — all three profiles + Obsidian (no NotebookLM)

1. **Create three profiles:** Scout (cheap model, enable `xurl` if monitoring X), Analyst (strong reasoning model, enable `llm-wiki`), Briefer (cheap model, enable `llm-wiki`).
2. **Set the wiki path** for each profile (`Config → search "WIKI"`).
3. **Tell each profile what to do** — give Scout its web + arXiv crons, tell Analyst to run a daily inbox check with a `wakeAgent` script and synthesize via `/goal`, and give Briefer its 8am brief cron.
4. **Connect Telegram** (same as Basic).
5. **Test:** tell Analyst *"drop a test file in the inbox and process it,"* verify the wiki entry appears, then check Telegram for the next morning's brief.

### Advanced — all three profiles + Obsidian + NotebookLM

Everything in Standard, plus the NotebookLM connection on the Analyst and competitive-analysis crons (competitor-URL diffing with a hashing `wakeAgent` script, Product Hunt scans, and a Friday weekly deep-synthesis run). NotebookLM is the one manual step — install `notebooklm-mcp-cli`, `nlm login`, then add the MCP server to the Analyst profile only.

## What the morning looks like

8:00 AM. Telegram pings. The Briefer delivers something like:

```
MORNING BRIEF — June 17, 2026

1. [verified] Competitor X updated pricing page.
   Removed free tier. Added enterprise plan at $299/mo.
   → review positioning against our offer today.

2. [likely] arXiv paper on agent memory consolidation
   aligns with our LLM Wiki approach.
   → read paper, consider wiki post about it.

3. [verified] Hermes v0.16.1 hotfix released.
   Dashboard reload fix + 3 security patches.
   → run hermes update on VPS.

4. [unverified] X thread claims 40% cost reduction
   with a new model on agent workloads.
   → needs verification before posting about it.

5. [conflicting] two sources disagree on
   NotebookLM enterprise API pricing.
   → flagged in wiki contradictions folder.

Token spend this week: $4.20
```

You read 5 bullets, decide what matters, and reply if you want the agent to act on something. The research happened while you were asleep.

## Cost breakdown

Three pricing paths — pick what fits your setup:

- **Path 1 — Nous Portal (simplest):** one subscription covers all three profiles. 300+ models, Tool Gateway included (web search, image gen, TTS, browser automation), 10% off token-billed providers, routes through OpenRouter under the hood, cron jobs billed automatically. Setup: `hermes setup --portal`. Check `portal.nousresearch.com` for current tier pricing; monitor with `/usage` and `hermes portal info`.
- **Path 2 — OpenRouter API (lowest cost):** pay per token, no subscription. One key covers all models. Best for people who want minimum spend and don't mind monitoring usage closely.
- **Path 3 — ChatGPT sub + Sonnet API (most generous tokens):** Scout and Briefer run on a general model with generous included tokens from a $20 subscription; Analyst runs on a strong reasoning model through a separate API key. Higher total cost but simplest token management.

For reference, a part-time research assistant costs $1,500-3,000/month. Cost estimates here assume ~1.3M tokens/month across three profiles; actual costs depend on cron frequency, synthesis depth, and model choice. Monitor with `/usage`.

## Day 1 → Week 2 → Month 1

| Stage | What you have | How it feels |
| --- | --- | --- |
| **Day 1** | Three profiles created, `SOUL.md` written, 4-5 crons running, empty vault and memory. First brief is generic and broad. | Useful but not impressive. The system is cold. |
| **Week 2** | Scout found 50-100 sources, Analyst wrote 30-40 wiki entries, first cross-references appear, briefs reference *your* projects. | First moment: "this found something I wouldn't have searched for." |
| **Month 1** | 200+ wiki entries with cross-references, contradictions tracked, refined crons, 5-10 custom synthesis skills, Briefer knows your priorities. | The brief feels written by someone who knows your work. |

The system produces insights you did not ask for. That is the compounding.

## Limitations

- **The NotebookLM wrapper can break.** It uses browser automation with no official consumer API. If Google changes endpoints, the wrapper needs updating — always keep the fallback path in the Analyst `SOUL.md`.
- **Scout misses paywalled content.** Web and X search hit public content only. Add paywalled articles, private repos, and gated communities to the inbox manually.
- **The Analyst can misclassify confidence levels.** The `[verified]`/`[unverified]` tagging depends on the model's judgment; Hermes does not independently fact-check. Cross-reference important findings yourself before acting.
- **Token costs scale with volume.** More Scout crons means more inbox files means more Analyst processing. Start with 3-4 Scout crons and add more once you know the cost per run.
- **Human review still matters.** This is a research department, not an autopilot. The morning brief is a starting point — the system finds and organizes, you decide and act.

## Official sources

Verified against Hermes Agent v0.16.0 documentation: Profiles, the LLM Wiki skill, Cron jobs, MCP servers, and the Memory system, plus the community [`notebooklm-mcp-cli`](https://github.com/jacob-bd/notebooklm-mcp-cli).
