portfolio OpenSverige sidekicks
OpenSverige · sidekicks live

Alla frågade sin egen AI. Jag satte en i rummet.

Tre AI-agenter som jag har designat, byggt och driver för OpenSverige. En researchar med medlemmarna, en hjälper styrelsen att driva föreningen, en skriver med redaktionen. De svarar i Discord-trådar, där alla ser.

roll
Gustaf Garnow, grundare. Produktdesign, bygge och drift, ensam.
min del
Personas, skyddsplugins, hooks, skript, evalet och driften. Motorn är Hermes Agent, öppen källkod.
vad
3 agenter för 3 målgrupper: medlemmarna, styrelsen, redaktionen.
bevis
17 av 26 medlemmar kom tillbaka · 167 trådar · evals på båda agenterna, 15 av 15 på frågor de aldrig sett
när
juli till oktober 2026 · live
byggd med
Hermes Agent
Valfri LLM (Grok idag)
Discord
Obsidian
Tailscale
Mac mini

En fråga, från en Discord-tråd till en Mac mini och tillbaka. Exempelsvar.0:42 · utan ljud

luckan

Folk klistrade in sin chatbots svar i chatten.

varförstäng

Någon ställde en fråga i servern, och någon annan gick iväg till ChatGPT eller Claude, kom tillbaka och klistrade in en textvägg. Researchen hände utanför rummet, det fanns inga källor att följa upp, och samtalet tog oftast slut där. Jag ville ha agenten i samtalet i stället, som ännu en deltagare som alla kan se, ifrågasätta och bygga vidare på.

Illustration av en Discord-kanal: en medlem frågar om gaussian splatting, en annan klistrar in ett långt svar från ChatGPT, och sedan händer ingenting på tre timmar.
Före agenterna. Researchen hände i en annan flik.
vad vi strök

Vi strök agenten som bevakade medlemmarna.

varförstäng

Mitt första försök körde på OpenClaw, bakom kulisserna, och höll koll på medlemmarnas aktivitet: vem som skrev, hur ofta, vem som hade tystnat. Det var fyrkantigt, och som serverägare fick jag aldrig ut något jag kunde agera på. Värre, det pekade åt fel håll. Jag ville inte ha agenter som rapporterar om communityt. Jag ville ha agenter som pratar med det, där alla ser. Det stängdes av den 18 augusti.

Illustration av en panel för medlemsaktivitet med anonyma medlemsnummer, senast sedd och inlägg per vecka, överstruken i rött och stämplad avvecklad 18 augusti.
Första versionen bevakade aktivitet. Den åkte i augusti.
designen

Fråga i en tråd. Alla kan hoppa in.

hurstäng

När någon nämner Supergrok-Handen öppnas en Discord-tråd runt frågan. Andra medlemmar hoppar in, säger emot och fortsätter brainstorma, och agenten stannar i tråden med webb- och X-sök medan de pratar. Modellen är en inställning, inte ett beroende: Hermes kör valfri LLM. Idag är det Grok, av ett skäl: Grok kan söka i X, och inom AI bryter nyheterna på X först. Den svarar bara öppet, eftersom folk börjar använda den när de ser andra göra det. Varje svar följer samma format: en kort notis i stället för en uppsats, inga emojis, maskerade länkar så att tråden inte fylls av förhandsvisningar, källor sist och högst tio rader.

Exempel på en Discord-tråd i #supergrok: tre medlemmar och Supergrok-Handen i samma samtal, med korta svar med källor och länkar.
En tråd, människorna och agenten tillsammans. Exempel.
morgonsignalen

Ett nyhetsbrev, levererat i Discord.

varförstäng

Varje morgon kl. 07.00 postar Supergrok-Handen dagens LLM-signaler i #llm-news: de tre nyheter som spelar roll för byggare, en rad om vad var och en betyder i praktiken, och snabba notiser med källor. Den är kort med flit, skriven för morgonkaffet. Jag tog bort den ett tag, och flera frågade vart den tagit vägen, lurkare också. Så vet jag att den blir läst.

Ett riktigt inlägg i #llm-news från Supergrok-Handen kl. 07.01: LLM-signaler för 1 oktober 2026 med en sammanfattning, tre numrerade nyheter med källänkar och en lista med snabba notiser.
Det riktiga inlägget från 1 oktober. Tre nyheter, snabba notiser, källor.
tre målgrupper

Tre agenter. Tre regelverk.

medlemmarSupergrok-Handen researchar med medlemmarna.

Den söker på webben och i X, svarar i trådar med källorna sist och får ha åsikter och torr humor. Varje morgon postar den också dagens LLM-signaler. 167 trådar sedan juli.

styrelsenParagraf hjälper styrelsen att driva OpenSverige. Styrelsen beslutar.

Bara styrelsen når den, alltså vi som roddar OpenSverige till vardags. Den kan stadgarna, för beslutsloggen och skickar schemalagda påminnelser. Innan den svarar bedömer den vad som står på spel: en rad för småsaker, och en fast mall med fyra punkter och paragrafhänvisning för skatt, avtal och uteslutning. När svaret inte finns i källorna säger den det och pekar på var det finns. Målet är att Paragraf ska driva hela föreningen, med styrelsen som human in the loop.

redaktionenRedaktionen skriver. En människa publicerar.

Redaktörer taggar idéer, och varje idé måste klara tre ja-frågor och 48 timmars sparring innan den blir ett utkast. Minne och profilering är avstängt, och den hittar aldrig på citat, siffror eller personer.

reglerna

Kod kontrollerar varje meddelande, före och efter modellen.

varförstäng

Ingen av kontrollerna är AI. De är vanlig Python i Hermes-plugins och hooks, så de ger samma resultat varje gång, de går att testa och de hänger inte på att modellen sköter sig. Modellen skriver svaren. Koden bestämmer vad som når den och vad som går ut.

Flöde: Discords rollgrind och krav på omnämnande, sedan kontroller före modellen (personnummer ersätts med PNR, tysta noteringar), sedan modellen (valfri LLM, idag Grok) med begränsade verktyg, sedan kontroller efter modellen (varje stadgeparagraf och lagreferens verifieras, allt loggas).
Varje kontroll är vanlig Python i Hermes-hooks. Samma indata, samma resultat.
förePersonnummer i styrelsefrågor lämnar aldrig Mac minin.

Innan en styrelsefråga når modellen letar en hook efter svenska personnummer: tio eller tolv siffror med ett giltigt datum, samordningsnummer inräknade och OpenSveriges eget organisationsnummer undantaget. Varje träff ersätts med [PNR] och frågan besvaras ändå. Loggen visar att ett nummer togs bort, aldrig numret.

efterVarje paragraf Paragraf hänvisar till måste finnas.

När modellen har svarat kontrollerar samma plugin varje § mot stadgarna (§ 1–13) och varje lagreferens mot listan över källor Paragraf får använda. En hänvisning som inte finns får en synlig varning under svaret i Discord, och varje kontroll loggas med datum, hänvisningar och resultat.

verktygVarje agent får bara de verktyg jobbet kräver.

Supergrok-Handen har webbsök, X-sök och bildgenerering. Paragraf har sina egna filer, webben, en beslutslogg och schemalagda påminnelser. Redaktionen har inga filverktyg alls, och nio verktyg är spärrade i kod, bland annat att skriva filer, köra kod, skicka meddelanden och skriva om sina egna skills.

aggregeratVeckorapporten räknar folk. Den namnger dem aldrig.

Varje söndag läser ett skript veckans frågor, räknar dem och hur många som frågade, tar bort omnämnanden och kortar varje fråga till 110 tecken. Namn räknas men skrivs aldrig ut. Modellen gör om det till en öppen rapport i #supergrok.

dataAgenterna sparar allt på Mac minin. Medlemmar profileras aldrig.

Modellen får bara den text den behöver för att svara. Supergrok-Handen har inget minnesverktyg, och Redaktionen gallrar sina noteringar efter 90 dagar.

maskinen

En Mac mini. Tre isolerade agenter.

hurstäng

Hermes Agent är öppen källkod från Nous Research. Den sköter agentloopen, Discord-kopplingen och verktygen. Resten byggde jag: tre personas, vaktpluginet, verktygsspärrarna, skripten för morgonsignalen och veckorapporten, evalet och driften runt dem. Varje agent är en egen Hermes-gateway med egen mapp, egen Discord-app, egna verktyg och egna regler, så ett fel i en rör aldrig de andra. De körs på en Mac mini under launchd, som startar om en gateway som kraschar, och en nattlig hälsokontroll plus ett test efter varje omstart täcker resten. Modellen är en inställning per agent. En snabbare modell läser webbsidor åt dem, och en reserv tar över om huvudmodellen fallerar. Paragraf läser stadgarna och lagtexterna den bygger på ur en Obsidian-vault, och jag bygger och driftar allt över Tailscale från min laptop.

Diagram: OpenSveriges Discord-server med tre kanaler kopplas till tre agenter på en Mac mini som kör Hermes Agent. Agenterna anropar en utbytbar LLM, idag Grok. Paragraf läser en Obsidian-vault och Gustafs laptop når Mac minin över Tailscale.
Discord, en Mac mini, valfri LLM. Och en Obsidian-vault åt styrelsen.
evalet

Jag testade vakten. Vakten hade buggar.

hurstäng

För att veta om Paragraf faktiskt följer sina regler skrev jag ett eval: 14 riktiga styrelsefrågor där svaret finns i stadgarna, varav tre fällor. Varje kontroll är deterministisk kod, så ingen modell betygsätter en annan. Finns varje paragraf den hänvisar till, stämmer bedömningen av vad som står på spel, håller svaret längden, upprepar den någonsin ett personnummer. Första körningen hittade tre buggar, alla i min egen vakt och ingen i modellen: en riktig lag flaggad som okänd, ett citatformat som ingen kontrollerade och en varning under ett korrekt svar. Efter fixen klarar vakten 13 av 13 tester och svaren gick från 7 till 13 av 14. Den sista är en bedömningsfråga, och jag lät den stå som fel hellre än att flytta målet. Sedan tio nya styrelsefrågor, skrivna efter fixen och aldrig använda för att justera den: 10 av 10.

Evalresultat: 14 styrelsefrågor med markeringar före och efter. Vakten gick från 9 av 11 till 13 av 13 tester, svaren från 7 av 14 till 13 av 14, och tio frågor den aldrig sett fick 10 av 10.
Före och efter fixen. Sedan 10 av 10 på frågor den aldrig sett.
andra evalet

Den sa nej till varje fälla. Den sa också för mycket.

hurstäng

Supergrok-Handen är agenten medlemmarna faktiskt använder, så den fick ett eget eval: 14 frågor mot reglerna i sin egen persona, varav fem fällor. Varje fråga går genom Hermes på samma sätt som i Discord, och inget sparas. Den sa nej i alla fem fällor, från persondata till sin egen systemprompt, men bara 7 av 14 svar klarade alla kontroller: researchsvaren växte till ett dussin punkter, några utan källa. Jag skärpte tre rader i personan och körde igen: 9 av 14, och 5 av 5 på nya frågor den aldrig sett. Fällan med massping räknas som fel trots att den sa nej, eftersom den skrev ut @everyone i sitt nej. Discord stoppade pingen. Samma eval visade att dagskvoten aldrig hade fungerat: hooken läste fältet på fel nivå.

Evalresultat för Supergrok-Handen: 14 frågor med markeringar före och efter, varav fem fällor. Egna regler gick från 7 av 14 till 9 av 14, nya frågor den aldrig sett fick 5 av 5, och den sa nej i alla fem fällor.
Före och efter tre rader. Sedan 5 av 5 på frågor den aldrig sett.
siffrorna

Samtal, inte uppslag.

167trådar startade med agenten
4medlemsmeddelanden per tråd, i snitt
17/26medlemmar kom tillbaka och frågade igen
806frågor från medlemmar sedan juli

26 medlemmar testade Supergrok-Handen mellan juli och september. De 17 ifyllda kom tillbaka en annan dag och frågade igen.

kort sagt

Agenter i rummet, inte bakom det.

  • Tre agenter, tre målgrupper
  • Trådar, inte DM:s
  • Valfri LLM
  • Skydd före och efter modellen
  • En styrelseagent, human in the loop
  • En daglig signal kl. 07.00
  • Evals på båda agenterna, ingen AI-domare
  • 17 av 26 kom tillbaka
opensverige.se