Bernstein: De open-source governance layer voor AI-agenten

Wat is Bernstein?

Bernstein biedt de volgende functionaliteiten:

  • Parallelle uitvoering: Draait CLI-coding agents in parallel.
  • Isolatie: Iedere agent draait in zijn eigen Git-worktree.
  • Verificatie: Controleert linting, types en tests per diff.
  • Mergen: Alleen wijzigingen die de tests passeren, worden gemerged.
  • Afsluiting: Sluit onderzoek, datasets en audit-pakketten af op basis van artifact-contracten met ondertekende lineage-bewijzen.
  • Omgeving: Draait op je laptop, on-premise of in een air-gapped omgeving.

Let op: Bernstein is bèta-software, gebouwd door één maintainer.

Installatie

Je kunt Bernstein installeren via pipx, brew, uv of docker:

$ pipx install bernstein
$ bernstein init

Het proces: in vier fasen

Een run verloopt in vier stappen:

  1. Decomponeren (Decompose): De manager verdeelt de taak in taken, rollen en signalen.
  2. Spawnen (Spawn): Agenten worden gestart in geïsoleerde worktrees.
  3. Verifiëren (Verify): De 'janitor' controleert tests, types en linting, met optionele cross-model reviews.
  4. Mergen (Merge): Alleen geverifieerde diffs worden uiteindelijk toegevoegd.

Bewijs, geen gevoel: Verifieerbare audits

Elke stap wordt ondertekend, in volgorde, op schijf opgeslagen.

Wanneer je draait met --audit, schrijft Bernstein een HMAC-chained eventlog onder .sdd/audit/, met één JSONL-bestand per UTC-dag. Elke entry verwijst naar de vorige hash. Manipulatie van de log verbreekt de verificatie. Niets verlaat je machine.

Iemand die de run niet zelf heeft uitgevoerd, kan deze controleren. De handtekening- en hash-chain-controles lezen alleen de bestanden; voor het HMAC-gedeelte is de sleutel nodig waarmee de chain is geschreven. Door zowel de bestanden als de sleutel aan een reviewer te geven, kan bernstein audit verify antwoord geven zonder dat alles opnieuw gedraaid hoeft te worden. Dit is geen screenshot of een SOC2 PDF, maar een hash-chain die opnieuw berekend kan worden.

Door een ondertekeningssleutel te configureren, schrijft een run ook een Ed25519-ondertekend bewijs (receipt) dat het journaal en de lineage-heads bindt. Met bernstein verify receipt kan dit bestand alleen worden gelezen — zonder HMAC-sleutel en zonder de .sdd/ map. Pin de publieke sleutel voor herkomstverificatie (provenance). Geen sleutel betekent geen bewijs.

Voorbeeld van een audit-verificatie:

~/proj $ bernstein audit verify
# reading .sdd/audit/2026-07-24.jsonl · 412 entries · 18m04s span

17:42:01  manager.plan     cb84a1…  13 tasks · est $4.20
17:42:18  scheduler.spawn  3e09f7…  t-001 → backend (sonnet)
17:42:18  scheduler.spawn  81c2dd…  t-002 → backend (sonnet)
17:42:19  scheduler.spawn  b50af8…  t-003 → qa      (opus)
17:55:11  janitor.verify   d014a3…  t-005 docs · pytest 84/84 · ruff 0
17:55:14  manager.merge    ee7c12…  t-005 → main · 4 files · clean
18:02:14  janitor.fail     9aa10b…  t-003 qa · pytest collect err · 3/3 retries
18:02:30  scheduler.route  71b4cc…  t-003 opus → sonnet · awaiting op
18:09:14  scheduler.pause  4d2e09…  conflict · t-001 ↔ t-007 · src/auth/refresh.py

verify chain      ok ✓  412/412 entries · last hash 4d2e09cb…
hmac key          ~/.local/state/bernstein/audit.key

Veelgestelde vragen (FAQ)

Is de scheduler een LLM? Nee. De modellen bevinden zich in andere delen: modelselectie wordt ondersteund door een LLM (capability router + recommender), en 'best-of-n' kiest een winnaar via een LLM-judge. Beide zijn optioneel en vervangbaar, zodat je je eigen planner via de routing-layer kunt koppelen. De enige plek waar een model nooit komt, is de 'tick' die beslist wie er draait, wie geblokkeerd is en wat er gemerged wordt. Als je daar een model plaatst, stopt de run met het identiek kunnen reproduceren van de resultaten.

Verstuurt het gegevens naar een externe server (phone home)? Niets verlaat je machine zonder jouw configuratie. Opt-in telemetrie is volledig en van audit-kwaliteit: HMAC-chained run trails, per-task tool calls, modelgebruik, tokenkosten en latency-percentielen. Je kunt dit versturen naar je eigen Otel-collector, Datadog, Splunk of S3-bucket. Standaard staat dit op 'local-only' omdat on-premise installaties dat vereisen, maar de enterprise-koppelingen zijn aanwezig.

Waar draait het op? Overal waar je het configureert: je laptop, on-premise achter een firewall, Cloudflare Workers als cloud-runtime, Kubernetes als multi-node cluster, of een hybride vorm. Sandbox-executiemodus wordt ondersteund (Cloudflare sandbox, lokale Docker). Je repository is de input, je tests zijn de poort; Bernstein past zich aan de host aan. Er is geen verplichting om via een SaaS-dienst te werken.

Hoe verschilt dit van Claude Code? Claude Code kan zelf sub-agenten spawnen; Bernstein doet hetzelfde voor meer dan 40 verschillende CLI-agenten tegelijk en verifieert hun output tegen jouw tests in plaats van het blind te vertrouwen. Claude Code is de meest gebruikte primaire backend binnen Bernstein — het gebruik van de een sluit de ander niet uit.

Recente updates

Bernstein 3.14.159: The stranger's ninety minutes

Een rapport over het eerste gebruik beschreef een setup-proces van negentig minuten dat nergens toe leidde. v3.14.159 lost dit op: de plan loader geeft nu benoemde fouten in plaats van malformed fields te negeren. Vijf commando's zijn verwijderd en de rest is gemarkeerd voor deprecation. De referentiedocumentatie is nu CI-gated tegen de geregistreerde CLI en de README vermeldt expliciet dat het software in bèta is. Daarnaast zijn er een Muse Code adapter, Agent Plugins v1.0.0 manifests, een offline verifieerbaar ondertekend run-bewijs en bernstein audit diagnose toegevoegd.

Agents op Cloudflare: Workers, Durable Objects, R2, D1

Integratie van Bernstein met Cloudflare voor AI-coding agents: Workers draaien de agenten, workflows beheren multi-step taken, en R2 + D1 beheren de workspace en metering state. Dit is experimenteel en draait op je eigen account.

Bernstein 1.0: Open-source orchestrator voor AI-coding agents

Orkestreer Claude Code, Codex, Gemini CLI en andere CLI-coding agents in parallelle Git-worktrees. Voorzien van een deterministische scheduler en een HMAC-ondertekende audit-chain.