# Cron Job: second-brain-crosslink-intelligent

**Job ID:** 77447b1b4dcd
**Run Time:** 2026-06-09 20:05:29
**Schedule:** 0 */4 * * *

## Prompt

[IMPORTANT: The user has invoked the "model-router" skill, indicating they want you to follow its instructions. The full skill content is loaded below.]

---
name: model-router
description: "Routeert taken naar het juiste model: crons → Gemini, interactie → GPT-5.5, fallback → DeepSeek"
version: 1.0.0
author: Styto
metadata:
  hermes:
    tags: [routing, model, provider, cost-optimization]
---

# Model Router

Deze skill definieert welke taken naar welk model gaan.

## Routing rules

### 1. Cron jobs → `gemini-3.1-flash-lite-preview`
Alle geplande/achtergrond taken gebruiken Gemini. Dit is goedkoop, heeft ruim quota, en is meer dan goed genoeg voor:
- YouTube channel sitreps (content monitoring, summaries)
- Reddit digests
- Prijsmonitoren (Zendure, etc.)
- Meteo/weerberichten
- Weekly briefings (Garmin, etc.)
- Obsidian crosslink maintenance
- Opruimtaken
- Elke andere cron/background taak

**Hoe:** Cron jobs met `model: gemini-3.1-flash-lite-preview` en `provider: gemini`.

### 2. Telegram interactie → `gpt-5.5` via `openai-codex`
Creatief werk, analyse, code, gesprekken — alles wat jij typt in Telegram.

### 3. Fallback bij quota limiet → `deepseek-chat` via `deepseek`
Als het Pro abonnement limiet bereikt, valt Hermes automatisch terug via `fallback_providers` in config.yaml.

### 4. Token-monitor blijft script-only (geen LLM kosten)
De token monitoring cron draait als `no_agent=True` — pure Python, nul tokens.

## Relationship to model-auto-switcher

The `model-auto-switcher` cron (07:00 daily) is the **upstream** — it writes to `config.yaml`:
- `model.default` → the top-ranked free OpenRouter model
- `fallback_providers[0].model` → the second-ranked

The model-router skill then **assumes those values are current**. The user's session uses whatever the auto-switcher set that morning.

This means:
- **Telegram sessions** start with whatever free model the auto-switcher picked (not gpt-5.5 if OpenRouter free models are better that day)
- **Cron jobs** continue using Gemini directly (explicit per-job model override, not affected by auto-switcher)
- The auto-switcher only touches `model.default` and `fallback_providers[0]` — all other routing (crons, auxiliary) stays as configured

## Gemini provider setup & troubleshooting

### Credentials
- Hermes leest `GEMINI_API_KEY` uit `.env`. `GOOGLE_API_KEY` werkt als alias — Hermes kan beide resolven.
- Google AI Studio keys zijn **gebruikersgebonden**: een 401 betekent dat de key verlopen, ingetrokken, of nooit correct aangemaakt is — ook met een Pro abonnement.
- De Gemini provider gebruikt de OpenAI-compatibele endpoint: `https://generativelanguage.googleapis.com/v1beta/openai`

### Debuggen auth

```bash
# Test of de key werkt
curl -s -o /dev/null -w "%{http_code}" \
  https://generativelanguage.googleapis.com/v1beta/models \
  -H "x-goog-api-key: $GEMINI_API_KEY"
```
- **200** → werkt
- **401** → key is ongeldig (nieuwe genereren in [AI Studio](https://aistudio.google.com/app/apikey))
- **429** → quota op (Pro verhoogt limieten)

### Waar config staat
- **Root profile**: `~/.env` (niet `.hermes/` — de root profile leest rechtstreeks uit `/opt/data/.env`)
- **Named profiles** (spock, yoda, etc.): `~/.hermes/profiles/<name>/.env` — elk profile heeft een eigen `.env`
- **config.yaml**: root zit in `~/.hermes/config.yaml` — bevat auxiliary provider configs (vision, compression, web_extract, etc.) die default naar Gemini verwijzen met lege `api_key: ''` (overschreven door env var).

### Pitfalls
- `GEMINI_API_KEY` uitgecomment in `.env` → Hermes probeert Gemini zonder key → faalt onzichtbaar.
- `GOOGLE_API_KEY` kan **oud** zijn (Palm, Vertex) — werkt niet voor Gemini API ondanks dezelfde variabelenaam.
- Elke named profile heeft een eigen `.env` — vergeet niet de key ook daar te zetten als het profile Gemini gebruikt voor crons.
- **Billing aanzetten in Google Cloud is niet genoeg** — je moet billing expliciet aan de specifieke API **key** koppelen in [Google AI Studio > API Keys](https://aistudio.google.com/app/apikey). Klik op de key en koppel je billing account. Zonder deze stap blijven Pro modellen **429** geven (zelfde key, Flash werkt wel, Pro niet).
- **429 op Pro ≠ key probleem**: als `gemini-3.1-flash-lite-preview` 200 geeft maar `gemini-3.1-pro-preview` 429, dan is billing niet aan de key gekoppeld. De key zelf is geldig — het is een quota-configuratie issue.
- **Modelnamen via OpenAI-endpoint**: Hermes gebruikt het OpenAI-compatibele endpoint (`/v1beta/openai`). De modelnamen hebben geen `models/` prefix nodig in het request, maar in de API response zie je `models/gemini-3.1-pro-preview` — in `model` veld gebruik je `gemini-3.1-pro-preview` (zonder prefix).
- **Billing koppeling kan tot 24u** nodig hebben om door te werken op sommige Pro modellen, afhankelijk van Google's provisioning.

The user has provided the following instruction alongside the skill invocation: [IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered to the user — do NOT use send_message or try to deliver the output yourself. Just produce your report/output as your final response and the system handles the rest. SILENT: If there is genuinely nothing new to report, respond with exactly "[SILENT]" (nothing else) to suppress delivery. Never combine [SILENT] with content — either report your findings normally, or say [SILENT] and nothing more.]

Bekijk de Obsidian vault op /second-brain. Zoek naar interaction-notes in de map Interactions/ die sinds de vorige run nieuw zijn of nog niet optimaal gecrosslinkt zijn.

Lees de inhoud van elke nieuwe/onaangeraakte note. Bepaal:
1. Naar welke projectnote(s) in Projects/ deze zou moeten linken
2. Naar welke themanote(s) in Themes/ deze zou moeten linken
3. Of er relevante backlinks ontbreken in de project/thema notes zelf

Voeg de crosslinks toe volgens Obsidian [[wikilink]] formaat.
- In de interaction-note: voeg een ## Projecten en ## Thema's sectie toe als die ontbreekt, met correcte [[links]]
- In de project/thema notes: voeg de interaction toe als bullet onder ## Related interactions (indien nog niet aanwezig)

Werk enkel met NOTES waar nog geen adequate crosslinks bestaan. Idempotent: als alles al gelinkt is, rapporteer dan enkel "[SILENT]".

Rapporteer wat je aangepast hebt (aantal notes, welke links toegevoegd).

## Response

All edits verified. Here's the report:

---

## Crosslink rapport — 2026-06-09

### Aangepaste interaction-notes (18 stuks)

Project-links toegevoegd aan interaction notes die alleen `[[inbox]]` hadden:

| Note | Projectlink(s) |
|------|---------------|
| 181912 — long txt to mail | [[Projects/YT Reddit Nieuws Cron Briefings]] |
| 181801 — subreddits lijst | [[Projects/YT Reddit Nieuws Cron Briefings]] |
| 181606 — reddit cron check | [[Projects/YT Reddit Nieuws Cron Briefings]] |
| 181427 — file_read_max_chars | [[Projects/Hermes Telegram Workflows]] |
| 180516 — GitHub PAT | [[Projects/Hermes Telegram Workflows]] |
| 180353 — fine-grained tokens | [[Projects/Hermes Telegram Workflows]] |
| 175138 — plugins/MCP recommendations | [[Projects/Hermes Telegram Workflows]] |
| 173815 — kanban status opvragen | [[Projects/Hermes Telegram Workflows]] |
| 173728 — cron reports kanban-waardig | Hermes TW + YT Reddit |
| 173045 — expliciet kanban gebruik | [[Projects/Hermes Telegram Workflows]] |
| 172909 — kanban uitleg | [[Projects/Hermes Telegram Workflows]] |
| 171923 — cache/persistent memory flow | Hermes TW + Obsidian Second Brain |
| 171721 — mnemosyne consult | [[Projects/Hermes Telegram Workflows]] |
| 171637 — sqlite db locatie | [[Projects/Hermes Telegram Workflows]] |
| 170202 — mnemosyne historiek | [[Projects/Hermes Telegram Workflows]] |
| 165857 — mnemosyne setup | [[Projects/Hermes Telegram Workflows]] |
| 165208 — webhook explanation | [[Projects/Hermes Telegram Workflows]] |
| 162719 — home assistant dashboard | Home Assistant Dashboard + Hermes TW |
| 160648 — home assistant plugin uitleg | Home Assistant Dashboard + Hermes TW |

### Aangepaste project-notes (4 stuks)

Backlinks toegevoegd in `## Related interactions`:

- **Hermes Telegram Workflows** (+18 nieuwe backlinks van 2026-06-09)
- **YT Reddit Nieuws Cron Briefings** (+4 nieuwe backlinks)
- **Home Assistant Dashboard** (+2 nieuwe backlinks)
- **Obsidian Second Brain** (+1 nieuwe backlink)

### Overgeslagen (reeds adequate crosslinks)

- Notes met al `ai`, `coding`, `planning`, `knowledge`, `home-lab` thema's en/of project-links (bv. 171821, 173637, 164625, 164428, 162820, 160214, 155852, 155735, 160035, 155706) — deze hadden al adequate crosslinks.
