Haarvisie verslagen
← Alle verslagen📄 Download als PDF
🎧 Luister dit verslag
1,0x
⬇️ Download naar telefoon
📖 Lees mee met de podcast

Hoi Jamal, welkom bij deze speciale update! Vandaag duiken we in de resultaten van de grondige audit van jouw Hermes-vloot. We hebben de zeven bots plus de hoofd-Hermes-bot helemaal doorgelicht, zowel tegen de officiële best practices als tegen hoe jij precies werkt. Vier teams hebben met 'read-only' rechten meegekeken, dus alles is veilig en uitgebreid gecheckt.

De kern van het verhaal is positief: we hebben een aantal belangrijke dingen al direct rechtgetrokken, en er zijn een paar zaken die ik veilig kan doorvoeren. Daarnaast liggen er ook een paar punten op tafel waarvoor ik jouw input en beslissing nodig heb om alles perfect af te stemmen op jouw wensen. Geen zorgen, alles wat ik voorstel is reversibel en ik maak overal backups van.

Laten we beginnen met het goede nieuws, want dat is er zeker! Ik heb al wat zaken kunnen fixen. Alle bots draaien nu weer op 'openairuntime: auto', wat betekent dat het geheugen weer perfect werkt en die fix van vandaag ook standhoudt. Ook is er geen 'dood' model meer te vinden in de actieve configuraties, dus die vervelende 'x-preview-fout' is echt verleden tijd. Fijn om te zien dat de app-bots jouw regel respecteren en niet hun eigen Telegram gebruiken. Wat veiligheid betreft: de actieve 'secrets' staan nu allemaal op 0600, er zijn geen hardcoded sleutels meer te vinden, en de 'secret-scanner' draait netjes. Tot slot zijn de zeven profielen helemaal compleet, geen spookprofielen, en de backend draait stabiel. Mooi werk!

Dan nu de punten die we verder hebben onderzocht. Allereerst de veiligheid. We vonden vijf à zes backup-bestanden, met daarin zo'n 27 'secrets', waaronder jouw Telegram-token, die wereldwijd leesbaar waren. Dat heb ik meteen dichtgezet naar 0600. Mijn vraag aan jou: de Telegram-token heeft wel even open gestaan, dus wil je deze laten roteren? Dat raakt de hele vloot, vandaar dat ik dit aan jou voorleg. Een ander punt is de 'Dirigent'-bot; die staat wel erg open. Met 'commandallowlist: - '' ' en 'approvals.mode: false' kan die bot, die toegang heeft tot al je kritieke systemen, eigenlijk alles doen zonder goedkeuring. Een foutje of 'prompt-injection' daar raakt direct je productie. Mijn advies is om die 'commandallowlist' aan te passen en 'approvals.mode: smart' te gebruiken voor de Dirigent. Dit botst nu ook met je regel "alleen Jamal doet exit". Wat we nog misten, is een vangnet tegen het per ongeluk uitzetten van bots. Er is geen 'approvals.deny'-lijst die zelfs bij 'mode: off' zaken hard blokkeert. Ik stel voor om zo'n lijst bovenaan toe te voegen, met commando's als 'kill' of 'git push --force'. Tot slot viel op dat 'approvals.mode: false' geen geldige waarde is, het gedrag hiervan is onzeker. Dit moet vervangen worden door 'off' of 'smart'.

Door naar geheugen, 'skills' en rol-afbakening – een belangrijk punt dat jij ook als 'overlap-probleem' ervaart. Dit is waarschijnlijk de grootste hefboom om de effectiviteit te vergroten. Bijna elke bot draagt dezelfde negentien 'skill-bundels', waardoor bijvoorbeeld de Beeld-bot 'dev-skills' heeft en de Web-bot 'beeld-skills'. Dit is de motor achter het 'overnemen' van taken. Mijn voorstel is om de 'skills' per discipline af te bakenen. Beeld krijgt dan alleen creatieve, media- en social media-skills; Web krijgt 'software-development', 'devops' en 'data-science'. School zou alleen 'haarvisie' en 'research' krijgen, et cetera. Ook stel ik voor om 'smart-home', 'apple' en 'email' (mail is een teamregel, alleen voor Lenovo/Conductor) overal uit te halen. Ik wil dit graag aanpakken door eerst één bot, bijvoorbeeld School, als proef te nemen, en als dat goed werkt, de rest aan te passen.

De regel "Blijf in je vak" ontbreekt bovendien in elke 'SOUL' van de bots. De '@mention'-functie werkt wel, maar de bots weten niet dat ze die moeten gebruiken om werk door te geven. Ik kan een vast "Blijf in je vak"-blok toevoegen aan elke discipline-SOUL, met duidelijke instructies om te '@mentionen' naar de juiste bot. De 'contentcodex'-bot had geen geheugenprovider, die fix ik door 'hermes-mnemosyne' toe te voegen met een 'MEMORY.md'. Het geheugen van de Dirigent-bot was maar liefst negen keer te groot, omdat het hele teamregelboek er inline in stond. Dit blaast elke 'prompt' op en veroorzaakt fouten. Ik ga het regelboek eruit halen en de 'MEMORY.md' slank maken. Ook het geheugen van de Beeld-bot zit bijna vol, ik adviseer om dat preventief op te schonen. En over geheugen gesproken: 'writeapproval' staat overal uit, terwijl jij juist wilde dat je geheugenschrijfsels kon goedkeuren. Wil je dat we 'memory.writeapproval: true' aanzetten, zodat je met '/memory pending' kunt reviewen? Tot slot zijn 'oxlab' en de 'email-bundel' aangepakt. Oxlab wordt verborgen, omdat die bewust geïsoleerd is, en de email-bundel wordt overal verwijderd, omdat mail teamregel-verboden is.

Als we kijken naar modellen, 'runtime' en kosten. De 'contentcodex' mist de 'tooloutput-caps', de veiligheidsremmen, wat een risico geeft op 'wartaal'. Ik neem het codex-blok van andere bots over. 'Showcost' staat overal uit, wat betekent dat je nergens een dollarbedrag ziet, ook niet bij 'contentclaude', de enige betaalde bot. Dat zet ik aan. En 'contentclaude' draait dure 'Opus' ook voor achtergrondwerk. Ik stel voor om die hulptaken naar het gratis 'Codex'-model te verplaatsen, of de achtergrond-review voor deze bot uit te zetten.

Dan de installatie en werking. Een terugkerende fout is "codex model not supported", waarbij interne hulp-aanroepen het model letterlijk als 'codex' versturen, wat je ChatGPT-account weigert. Hierdoor vallen beeldanalyse, titels en achtergrond-reviews stil. De fix is om die hulptaken een expliciet ondersteund model te geven. Dit wil ik graag precies goed doen, dus leg ik het je voor. Jouw installatie loopt ook ver achter, wel 1421 'commits', en de laatste update van 21 augustus mislukte. Er zijn ook twee lokaal gewijzigde kernbestanden. Updaten is aan te raden, maar zorgvuldig – niet blind. Jouw besluit. Verder gaf de Codex-login aan "expired" en de 'gBrain MCP' verbindt niet. Even verifiëren of dit om credits of een echte uitlog gaat, en of de gBrain weer online is. Tot slot ligt er zo'n zeven gigabyte aan rommel, zoals een oude backup van 988 megabyte en veel losse '.bak' en '.tmp'-bestanden. Dit kan worden opgeruimd zodra de volgende update goed staat. Ook hiervoor jouw besluit. De enige 'cron-job', de SEO-wachter, draait leeg en staat sinds 23 juli uit wegens budget. Willen we die weer aanzetten of weggooien? Ook een keuze voor jou.

Om het even samen te vatten, de voorgestelde volgorde van aanpak: Wat is er al gedaan? De geheugen-runtime fix, communicatieregels, security-backups dichtgezet en het dode model verwijderd. Wat kunnen we veilig en direct doorvoeren? De "blijf in je vak"-regel, de remmen en geheugen voor contentcodex, dirigent-geheugen slanken, showcost aanzetten, contentclaude's hulptaken naar gratis model, en het approvals.deny-vangnet. En jouw beslissingen, de zaken waar ik jouw input voor nodig heb: de 'skill-scoping' (met een proef op School), geheugen-goedkeuring, de rechten van de Dirigent inperken, de "codex model"-fout fixen, Hermes updaten, de rommel opruimen en eventueel de Telegram-token roteren.

Zoals gezegd, alles is reversibel en er zijn backups van elke wijziging. Ik hoor graag wat je hiervan vindt en hoe we verdergaan!

Hermes-vloot audit

Volledige controle van je Hermes Desktop-setup (7 bots + de root Hermes-bot), getoetst aan de officiële best-practice en aan hoe jij werkt. Onderzocht met 4 read-only audit-teams. Elke bevinding heeft een bronpad.

Legenda: [GEFIXT] heb ik al gedaan · [VEILIG] kan ik zo doorvoeren · [JOUW KEUZE] vraagt jouw beslissing.

Kort: het goede nieuws


1. Veiligheid

[GEFIXT] Wereld-leesbare secret-backups

5-6 backup-bestanden (.env.env.bak-voor-gbraintoken) met ~27 secrets, waaronder je Telegram-token, stonden op 0644 (leesbaar voor elk proces). Dichtgezet naar 0600.
- [JOUW KEUZE] die Telegram-token heeft een tijd open gestaan. Wil je 'm laten roteren? (Raakt de fleet, dus jouw beslissing.)

[JOUW KEUZE] Dirigent = YOLO op de machtigste bot

dirigent/config.yaml: command_allowlist: - '*' (alles vooraf goedgekeurd) + approvals.mode: false. En juist die bot heeft alle MCP's (supabase, github, wordpress, transip, render, cloudflare). Een fout of prompt-injection daar raakt direct productie.
- Advies: '*' eruit, approvals.mode: smart voor dirigent. Botst nu ook met je "alleen Jamal doet exit"-regel.

[VEILIG] Vangnet tegen zelf-uitzetten ontbreekt

Er is nergens een approvals.deny-lijst. Dat is de enige lijst die óók bij mode: off hard blokkeert. Precies het vangnet dat je guard-regel bedoelt.
- Fix: top-level een approvals.deny met o.a. launchctl *disable*, launchctl *bootout*, *kill* nl.haarvisie.*, git push --force*.

[LET OP] approvals.mode: false is geen geldige waarde

De docs kennen alleen smart, manual, off. false is een boolean → gedrag onzeker. Vervang door off of smart.


2. Geheugen, skills en rol-afbakening (jouw overlap-probleem)

[JOUW KEUZE — grootste hefboom] Skills niet afgebakend

Elke bot draagt bijna dezelfde ~19 skill-bundels. Beeld heeft dev-skills, Web heeft beeld-skills, School heeft alles. Dit is de motor achter het overnemen.
- Voorstel per discipline (alleen eigen vak aan):
- Beeld: creative, media, lovart-api, social-media, haarvisie
- Web: software-development, github, devops, mlops, data-science, research, haarvisie
- School: haarvisie (podcast), research (licht), note-taking
- Content (beide): creative (alleen blog-writing + humanizer), research, media (youtube), social-media, haarvisie (report/podcast)
- Overal UIT: smart-home, apple, email (mail = alleen Lenovo/Conductor, teamregel), yuanbao
- Aanpak: eerst 1 bot als proef (School heeft het meeste te winnen), testen, dan de rest.

[VEILIG] "Blijf in je vak"-regel ontbreekt in elke SOUL

Geen enkele bot krijgt te horen: doe alleen jouw vak, geef ander werk door via @mention. Bot Mode (@mention) werkt technisch wél (staat default aan), maar de bots weten het niet.
- Fix: een vast "Blijf in je vak"-blok in elke discipline-SOUL, met @mention naar de juiste bot en @dirigent bij twijfel.

[VEILIG] contentcodex heeft géén geheugen

Geen memory-provider, lege memories/. Fix: memory.provider: hermes-mnemosyne + een MEMORY.md/USER.md.

[VEILIG] Dirigent z'n geheugen is 9x te groot

dirigent/memories/MEMORY.md = 20.218 tekens (limiet 2.200). Het hele team-regelboek staat er inline in. Gevolg: elke prompt is opgeblazen én de volgende geheugen-schrijf geeft een fout. Fix: regelboek eruit (staat al in gBrain), MEMORY.md slank maken.

[LET OP] beeld-geheugen bijna vol

MEMORY.md 92%, USER.md 95%. Preventief opschonen.

[JOUW KEUZE] Geheugen-goedkeuring

write_approval staat overal uit (bots schrijven vrij naar geheugen). Jij wilde kunnen goedkeuren. Zetten we memory.write_approval: true aan? Dan review je met /memory pending.

[VEILIG] oxlab + email

oxlab staat in de bot-roster en is @mentionbaar terwijl hij bewust geïsoleerd is → verbergen in de app. De email-bundel staat overal aan terwijl mail teamregel-verboden is → eruit.


3. Modellen, runtime en kosten

[VEILIG] contentcodex mist de codex-veiligheidsremmen

Kale config zonder tool_output-caps (valt terug op 50000/2000 i.p.v. de vloot-standaard 15000/800). Risico op de codex-overflow ("wartaal"). Fix: het codex-blok van web/school overnemen.

[VEILIG] show_cost staat overal uit

Je ziet nergens een dollarbedrag, ook niet bij contentclaude (de enige betaalde bot). Fix: show_cost: true op contentclaude.

[VEILIG] contentclaude draait dure Opus ook voor achtergrondwerk

De achtergrond-review + titels draaien op het hoofdmodel = betaalde Opus. Fix: die hulp-taken naar het gratis Codex-model, of de achtergrond-review uitzetten voor deze bot.


4. Installatie en werking

[JOUW KEUZE — belangrijk] Terugkerende fout: "codex model not supported"

Sommige interne hulp-calls sturen het model letterlijk als codex, en je ChatGPT-account weigert dat. Gevolg: beeldanalyse (14x), titels (13x), achtergrond-reviews en compressie vallen stil. Fix: die hulp-taken een expliciet ondersteund model geven (gpt-5.6-sol) i.p.v. de kale codex-naam. Dit wil ik graag precies goed doen, dus leg ik het je voor.

[JOUW KEUZE] Install loopt ver achter + update van 21-8 faalde

De installatie is 1421 commits achter, en de laatste update (21-8) mislukte op een git-fetch-fout. Er staan ook 2 lokaal gewijzigde kernbestanden die bij een blinde update geparkeerd worden. Updaten is aan te raden, maar zorgvuldig — niet blind.

[JOUW KEUZE] Codex-login "expired" + gBrain MCP verbindt niet

De "auth failed" is bij Codex vaak eigenlijk credits op, niet echt uitgelogd (bekende valkuil). gBrain MCP (100.88.240.64:8788) gaf verbindingsfouten. Beide even verifiëren.

[JOUW KEUZE] ~7 GB rommel

Een oude pre-update-backup van 988 MB (21-8), plus veel losse .bak/.tmp-bestanden. Opruimbaar zodra de volgende update goed staat.

[OK] Cron draait leeg

De enige cron-job (SEO-wachter) staat uit sinds 23-7 (budget op). Weer aanzetten of weggooien = jouw keuze.


Voorgestelde volgorde

  1. Nu al gedaan: geheugen-runtime fix, comms-regels, security-backups dichtgezet, dood model weg.
  2. Veilig, meteen door te voeren: "blijf in je vak"-regel, contentcodex remmen + geheugen, dirigent-geheugen slanken, show_cost, contentclaude-aux naar gratis, approvals.deny-vangnet.
  3. Jouw beslissingen: skill-scoping (proef op School), geheugen-goedkeuring, dirigent-rechten inperken, de "codex model"-fout fixen, Hermes updaten, opruimen, token roteren.

Alles reversibel (backups per wijziging).

🎙️ Bespreek met Jarvis