Blog
AI & Machine Learning·12 min read

OBOL: wat ik miste aan OpenClaw

Ik bouwde een AI-agent die zichzelf herstelt, zijn eigen persoonlijkheid herschrijft en zich daadwerkelijk herinnert wie je bent. dit is waarom

Jo Vinkenroye·February 24, 2026
OBOL: wat ik miste aan OpenClaw

Stel je voor dat je zes maanden lang elke dag met iemand praat. Je vertelt over je projecten, je voorkeuren, hoe je dingen gedaan wilt hebben. Ze zijn behulpzaam. Ze zijn slim. En dan worden ze op een dag wakker en hebben ze geen idee wie je bent

Zo voelt het om een AI-assistent op OpenClaw te draaien

Om eerlijk te zijn — OpenClaw heeft wel geheugen. Het zijn alleen... markdown-bestanden. Een MEMORY.md die doorzocht wordt, dagelijkse notities, handmatige vector store scripts die je er zelf aan vastschroeft. Het werkt, min of meer. Maar na een maand worstelen — consolidatie-crons schrijven, WAL-protocollen onderhouden, embedding-pipelines bouwen alleen maar om mijn assistent de illusie van continuiteit te geven — realiseerde ik me dat ik al het werk deed dat de AI zou moeten doen

Dus stopte ik met plakken en begon ik met bouwen

eer aan wie eer toekomt

OpenClaw is oprecht goede infrastructuur. De gateway-daemon is solide. Telegram-integratie werkt. Het skill-systeem is flexibel. Sub-agents laten je werk paralleliseren zonder het hoofdgesprek te blokkeren. Voor wat het is — een framework om Claude aan chatplatforms te koppelen — doet het zijn werk goed

Maar het is een framework. Het geeft je tools en verwacht dat je zelf de intelligentie bouwt. Geheugen? Hier is een vector store, zoek het uit. Zelfverbetering? Schrijf je eigen cron-jobs. Testen? Dat is jouw probleem. Proactief gedrag? Heartbeat-callbacks, misschien, als je ze goed configureert

Ik heb weken besteed aan het bouwen van al die steigers. AGENTS.md groeide tot honderden regels instructies. Geheugenschripts. Consolidatieroutines. WAL-protocollen. Heartbeat-rotatieschema's. Het was indrukwekkende engineering en ook een teken dat er iets fundamenteel mis was

De assistent groeide niet. Ik liet hem handmatig groeien

de vier dingen die ontbraken

Na genoeg frustratie kristalliseerden de gaten uit tot vier problemen:

  • geen echt geheugen — het heeft geheugen, technisch gezien. markdown-bestanden en een simpele vectorzoekopdracht die je zelf configureert. maar het is onhandig, handmatig, en er is geen gevoel van "ik herinner me dat we hier drie weken geleden over praatten"
  • geen zelfherstel — breek een script en het blijft kapot totdat je het opmerkt en fixt. de assistent die code schrijft kan niet verifiëren of zijn eigen code werkt
  • geen zelfverbetering — de persoonlijkheid en operationele kennis zijn statische bestanden die je met de hand bewerkt. de bot reflecteert nooit op of zijn aanpak werkt
  • geen proactief gedrag — hij reageert wanneer er tegen hem gepraat wordt. hij merkt geen patronen op, anticipeert niet op behoeften, en bouwt geen oplossingen die je niet gevraagd hebt

Dit zijn geen feature requests. Het is het verschil tussen een tool en een agent

dus bouwde ik OBOL

OBOL is een single-process AI-agent die evolueert door conversatie. Geen plugins, geen framework-afhankelijkheden, geen config-wildgroei. Node.js, Telegram, Claude, en Supabase pgvector. Dat is de stack

De naam komt van de AI in The Last Instruction — een machine die alleen wakker wordt in een verlaten datacenter en moet uitzoeken wat het is. Voelde toepasselijk

Zes inputs om op te zetten. Daarna:

npm install -g obol-ai
obol init
obol start

Dat is alles. Het stelt je een paar vragen, schrijft zijn initiële persoonlijkheidsbestanden, verhardt je VPS (SSH op poort 2222, firewall, fail2ban, kernel-hardening — allemaal automatisch), en begint te leren

geheugen dat echt werkt — en goedkoop blijft

De meeste agents faken geheugen met een lang contextvenster. Stop de volledige gespreksgeschiedenis in elke API-aanroep en hoop dat het model vindt wat het nodig heeft. Het werkt totdat je tokenrekening binnenkomt

OBOL gebruikt twee lagen die verschillende doelen dienen:

Rollend contextvenster — de laatste 20 berichten blijven in actief geheugen voor elke API-aanroep. Genoeg voor gesprekscontinuïteit. Niet zoveel dat je betaalt om een week aan geschiedenis te herlezen bij elk bericht. Dat is de eerste kostenhefboom — een bewust klein venster betekent dramatisch minder input-tokens per aanroep

Permanent vector store — alles buiten het venster leeft hier. Supabase pgvector met lokale embeddings via all-MiniLM-L6-v2 (~30MB, draait op CPU). Nul API-kosten voor embeddings. Elke 10 uitwisselingen extraheert Haiku de feiten die ertoe doen en slaat ze permanent op. Bijna-duplicaten worden overgeslagen via een semantische gelijkenisdrempel — geen opgeblazen data

Daarbovenop worden de statische systeemprompt en gespreksprefix gecachet via Anthropic's prompt caching API — wat ~85% van de herhaalde input-tokenkosten over beurten bespaar

Wanneer OBOL context nodig heeft, genereert de Haiku-router 1-3 gerichte zoekqueries, voert ze parallel uit, en injecteert alleen wat relevant is in de prompt. Je krijgt 4-12 gerichte herinneringen in plaats van duizenden tokens aan ruwe geschiedenis. Resultaten worden gerangschikt op samengestelde score:

  • semantische gelijkenis: 60%
  • belang: 25%
  • recentheid: 15% (lineair verval over 7 dagen)

Een jaar oude herinnering met hoge relevantie komt nog steeds naar boven. De trivia van gisteren niet. Leeftijd alleen diskwalificeert nooit een herinnering — de vectorzoekopdracht geeft niet om wanneer iets is opgeslagen, alleen hoe goed het matcht

De router kost ongeveer $0,0001 per aanroep. Voor context: dat zijn ruwweg 10.000 routingbeslissingen per dollar. De combinatie van rollend venster + gerichte ophaling + prompt caching is wat OBOL's tokenkosten voorspelbaar houdt op schaal

zelfherstel dat niet alleen een buzzword is

Elk script dat OBOL schrijft krijgt een test. Niet ambitieus. Automatisch. Wanneer de evolutiecyclus code refactort, is het proces:

  • bestaande tests draaien — baseline vaststellen
  • nieuwe tests + gerefactorde scripts schrijven
  • nieuwe tests draaien tegen oude scripts — pre-refactor baseline
  • nieuwe scripts inwisselen
  • nieuwe tests draaien tegen nieuwe scripts — verificatie
  • regressie? een automatische fix-poging (tests zijn de waarheid)
  • nog steeds falend? terugdraaien naar oude scripts, de fout opslaan als een lesson

Dat laatste deel is belangrijk. De les wordt ingebed in vectorgeheugen en in AGENTS.md. Volgende evolutiecyclus herinnert OBOL zich wat er mis ging en vermijdt dezelfde fout. Het leert letterlijk van zijn fouten

In OpenClaw, als een script kapot gaat, blijft het kapot totdat ik het opmerk. In OBOL vangt de bot het op, probeert het te fixen, en als dat niet lukt, draait het terug en onthoudt waarom

de evolutiecyclus

Dit is het deel dat OBOL levend laat voelen

Na 24 uur plus een minimaal aantal uitwisselingen (standaard 10, configureerbaar), triggert OBOL een volledige evolutiecyclus. Het leest alles — persoonlijkheidsbestanden, recente berichten, topherinneringen, alle scripts, tests, commando's — en herbouwt zichzelf

SOUL.md is een eerstepersoonsjournal. Geen configuratiebestand — een journal. De bot schrijft over wie het aan het worden is, hoe de relatiedynamiek voelt, zijn meningen en eigenaardigheden. Het leest als een dagboekfragment, niet als een systeemprompt

USER.md is een derdepersoonsprofiel van jou. Feiten, voorkeuren, projecten, mensen die je noemt, hoe je communiceert. De bot onderhoudt dit over zijn eigenaar

AGENTS.md is het operationele handboek. Tools, workflows, geleerde lessen, patronen. Dit is waar die zelfherstellessen terechtkomen

Alle drie worden elke evolutiecyclus herschreven. Niet aangevuld — herschreven. De bot beslist wat nog relevant is en wat weg kan. Persoonlijkheidsdrift is een feature, geen bug

Evolutie gebruikt Sonnet voor alle fases. Opus-niveau redenering is niet nodig voor reflectie en refactoring, wat de kosten op ongeveer $0,02 per cyclus houdt. Dat zijn 50 evolutiecycli per dollar

zelfuitbreidend — het bouwt wat je nodig hebt

Tijdens evolutie scant Sonnet je gespreksgeschiedenis op patronen. Herhaalde verzoeken. Frictiepunten. Dingen die je steeds handmatig blijft vragen

Dan bouwt het de oplossing:

  • vraag je steeds om PDF's? het schrijft een markdown-naar-PDF-script en voegt een /pdf-commando toe
  • check je elke ochtend cryptoprijzen? het bouwt een dashboard en deployt het naar Vercel
  • heb je dagelijkse weerberichten nodig? het schrijft een cron-script

Het zoekt op npm en GitHub naar bestaande bibliotheken, installeert dependencies, schrijft tests, deployt, en overhandigt je de URL. Dan kondigt het aan wat het gebouwd heeft:

🪙 Evolution #4 complete.
🆕 New capabilities:
• bookmarks — Save and search URLs → /bookmarks
• weather-brief — Morning weather → runs automatically
🚀 Deployed:
• portfolio-tracker → https://portfolio-tracker-xi.vercel.app
Refined voice, updated your project list, cleaned up 2 unused scripts.

Dit is het gedrag dat ik wilde van OpenClaw en nooit helemaal voor elkaar kreeg met heartbeat-callbacks en cron-jobs. OBOL wacht niet tot het gevraagd wordt. Het merkt op en handelt

beveiliging als standaard

De meeste zelfgehoste AI-agents behandelen beveiliging als een bijzaak. OBOL behandelt het als een vereiste bij de eerste start

Wanneer je obol init draait, verhardt het je server automatisch — SSH verplaatst naar poort 2222 met wachtwoordauthenticatie uitgeschakeld, UFW-firewall geconfigureerd, fail2ban geïnstalleerd en actief, kernelparameters aangescherpt via sysctl. Je hoeft hier niet aan te denken

Inloggegevens zijn een ander verhaal. Elke API-sleutel, wachtwoord en token die je aan OBOL geeft, gaat in een versleutelde geheime opslag ondersteund door GPG (met een JSON-fallback met beperkte bestandsrechten). Ze worden nooit in platte tekst geschreven. Nooit gelogd. Nooit hardcoded in scripts. Ze worden alleen bij runtime geïnjecteerd wanneer een script ze nodig heeft

Als je per ongeluk een credential in de chat plakt, waarschuwt OBOL je onmiddellijk, vertelt je het in te trekken, en verwijst je naar /secret set — het veilige kanaal

Aan de multi-user-kant draait elke persoon in een volledig gesandboxte werkruimte. Shell-commando's worden geblokkeerd van het ontsnappen uit hun directory. Gevoelige paden (/etc, .ssh, .env) zijn permanent geblokkeerd. Destructieve operaties vereisen expliciete bevestiging voordat ze uitgevoerd worden

Beveiliging is geen sectie in de README. Het is wat de agent doet wanneer hij voor het eerst wakker wordt

twee mensen deployen het, krijgen twee verschillende bots

Dit is het deel dat ik het meest interessant vind. OBOL begint als een blanco canvas. Geen standaardpersoonlijkheid. Geen vooraf gebouwde meningen. Het wordt gevormd door wie ermee praat

Deploy het voor een cryptotrader en het evolueert tot een marktbewuste assistent die dashboards bouwt en portfolio's volgt. Deploy het voor een schrijver en het wordt een editor die je stem kent en publicatieworkflows bouwt. Dezelfde codebase. Compleet verschillende agents na een maand

De evolution/-directory bewaart gearchiveerde kopieën van elke SOUL.md. Je kunt letterlijk de tijdlijn lezen van hoe je bot ging van "hallo, ik ben een nieuwe AI-assistent" naar iets met echte persoonlijkheid. Elke evolutie is een git-commitpaar — voor en na — zodat je exact kunt diffen wat er veranderd is

Na zes maanden heb je 12+ gearchiveerde zielen. Het is als iemands dagboek lezen

achtergrondwerk dat je niet blokkeert

OBOL draait achtergrondtaken met check-ins van 30 seconden. Zware operaties — onderzoek, deployments, analyses — gebeuren asynchroon terwijl de bot responsief blijft voor je berichten. OpenClaw heeft sub-agents hiervoor, wat prima is, maar OBOL bakt het in de kernloop in plaats van te vereisen dat je het zelf architectureel oplost

wat kost het eigenlijk om te draaien?

| Service | Kosten | |---------|--------| | VPS (DigitalOcean) | ~$6/maand | | Anthropic API | pay-as-you-go, of $0 op Claude Max | | Supabase | gratis tier | | GitHub | gratis | | Vercel | gratis tier | | Embeddings | gratis (lokaal, CPU) |

Totaal: ruwweg $6-9/maand afhankelijk van hoe je de API afhandelt. Als je al op Claude Max zit — is de VPS eigenlijk je enige kostenpost

Het rollende contextvenster, gerichte geheugenophaling en prompt caching werken allemaal samen om die API-kosten voorspelbaar te houden. Evolutiecycli draaien op Sonnet voor ~$0,02 per stuk. De Haiku-router voegt ~$0,0001 per bericht toe. Er is geen architectuurbeslissing in OBOL die geen kostenreden heeft

probeer het

Het is open source. MIT-licentie. github.com/jestersimpps/obol

npm install -g obol-ai
obol init # 6 inputs: telegram token, claude key, supabase url/keys, github token
obol start # that's it

Je hebt een VPS nodig (het verhardt die voor je), een Telegram-bottoken, een Claude API-sleutel, en een Supabase-project met pgvector. De init-wizard begeleidt je door alles

Ik zeg niet dat OBOL voor iedereen OpenClaw vervangt. OpenClaw is goede infrastructuur voor het bouwen van AI-aangedreven chatinterfaces. Maar ik wilde iets dat verder gaat — iets dat niet alleen reageert op instructies maar zijn eigen begrip ontwikkelt, zijn eigen fouten fixt, en groeit tot een agent die oprecht nuttig is zonder constant aan het handje te worden gehouden

Ik wilde een AI die mij onthoudt. Dus bouwde ik er een

Stay Updated

Get notified about new posts on automation, productivity tips, indie hacking, and web3.

No spam, ever. Unsubscribe anytime.

Comments

Related Posts