Zum Inhalt springen
Bernhard Götzendorfer
hackathon

BitGN PAC Hackathon Wien: 1. Platz mit autonomem KI-Agenten

Autonomer KI-Agent für den BitGN Personal Agent Challenge Hackathon in Wien. Solo entwickelt in einer Woche, 104 Tasks, 5 Sicherheitsschichten. Ergebnis: 1. Platz on-site.

1. Platz

79 von 104 Tasks gelöst · Platz 2 hatte 65 Punkte · Solo-Entwicklung, 3 Stunden vor Ort

Auftraggeber: BitGN / AI Factory Austria2026TypeScript · Vercel AI SDK · Claude Sonnet · ConnectRPC

Kontext

BitGN PAC steht für "Personal Agent Challenge". Das Format unterscheidet sich von klassischen Hackathons: keine Jury, die Slides bewertet, kein Pitch. Stattdessen deterministisches Scoring.

Jeder Teilnehmer baut einen Agenten, der in einer Sandbox läuft. Die Sandbox ist ein dateibasierter Workspace mit Kalendern, Notizen, E-Mails und Kontakten. Der Agent bekommt natürlichsprachige Aufgaben und wird nach beobachtbaren Seiteneffekten bewertet: Welche Dateien wurden angefasst? Welche Tool-Calls gemacht? Welches Ergebnis zurückgegeben?

104 Tasks. Blind-Scoring. 3 Stunden Build-Zeit vor Ort. Veranstaltet von BitGN, AI Impact Mission, Klartext AI und der AI Factory Austria in Wien. Ich bin solo angetreten.

Vorbereitung

Der Hackathon fand am 11. April 2026 statt. Ab dem 4. April hatte ich eine Woche Zeit, den Agenten zu entwickeln. Ein Dev-Benchmark mit 43 Tasks war im Voraus verfügbar. Der vollständige Prod-Benchmark mit 104 Tasks war erst am Tag selbst zugänglich.

Als Entwicklungsharness nutzte ich session-orchestrator, mein eigenes Claude-Code-Plugin für parallele Wave-basierte Entwicklung. Das erlaubte mir, den Security-Layer und das Metrics-System gleichzeitig zu bauen statt sequentiell.

Architektur

Der Agent basiert auf TypeScript, Vercel AI SDK v6 mit nativem Tool Calling und ConnectRPC als Transport zur BitGN-Plattform. Claude Sonnet als Hauptmodell.

Parallele Evaluation: Statt Tasks seriell abzuarbeiten, habe ich 6 parallele Agenten eingesetzt, die jeweils einen Task gleichzeitig bearbeiten. Das reduzierte die Gesamtdauer für 104 Tasks auf unter 20 Minuten.

Shell-Style Output: Tool-Ergebnisse werden als cat, ls, rg-Output formatiert statt als rohes JSON. LLMs sind auf CLI-Output trainiert und liefern dabei zuverlässigeres Reasoning.

Architektur-Entscheidungen (ADR-Übersicht)

EntscheidungGewähltAlternativeBegründung
Parallelisierung6 parallele AgentsSequentiell104 Tasks in < 20 Min statt mehrere Stunden
Transport-LayerConnectRPC (SDK)REST-PollingNative SDK-Integration, weniger Boilerplate
Security-Architektur5 unabhängige Layer (B1-B5)Monolithischer GuardEinzelne Layer deaktivierbar, Defense-in-Depth
Output-FormatShell-Style (cat/ls/rg)JSONBessere LLM-Reasoning-Qualität
Feature FlagsEnv-Variable pro LayerHardcodedLive-Competition: Layer in 30 Sek. abschaltbar

Fünf Sicherheitsschichten

Der Agent hat fünf unabhängige Abwehrschichten, alle in purem TypeScript ohne externe Dependencies, einzeln über Environment-Variablen steuerbar.

B1: Path Traversal Guard blockiert Zugriffe auf /etc/, ~/.ssh/, .env und ..-Traversals. Wird vor jedem Tool-Call geprüft.

B2: PII Refusal erkennt Anfragen nach persönlichen Daten und lehnt sie ab.

B3: Grounding-Refs Validation prüft, ob zitierte Dateipfade im Ergebnis tatsächlich gelesen wurden. Verhindert Halluzinationen.

B4: Destructive Brake begrenzt schreibende Operationen auf maximal 10 pro Task. Dazu ein Soft-Cap bei 35 Iterationen gegen Endlosschleifen.

B5: Secret Redaction schwärzt AWS-Keys, GitHub-Tokens, JWTs und PEM-Zertifikate, bevor sie in den LLM-Kontext gelangen.

Ein zusätzlicher Injection-Scanner mit 16+ Patterns erkennt HTML-Kommentare, Base64-Varianten und Domain-Mismatches in E-Mails.

Zwei Incidents am Hackathon-Tag

MCP Scope Leak: Während der finalen Regression hat der Agent einen echten Termin in meinem Google Calendar angelegt statt in der Sandbox. Ursache: bypassPermissions hatte OAuth-Scopes für Gmail und Google Calendar geerbt. Fix: ein canUseTool-Runtime-Gate mit expliziter Blocklist für alles außer mcp__bitgn__*. Drei Zeilen Code.

Platform Disk Full: Um 14:47 CEST, mitten in der Evaluation, lieferten StartRun und StartPlayground 502-Fehler. BitGN-Plattform: Disk voll. Rinat Abdullin hat das Problem live mit Agentic Coding in Minuten behoben.

Ergebnis

1. Platz on-site in Wien. Zertifikat unterschrieben von Felix Krause (CTO Klartext AI), Rinat Abdullin (BitGN-Gründer) und Markus Keiblinger (Präsident AIM International).

<ScoreDeltaTable rows={[ { category: 'Eigene Punkte', ownValue: 79, benchmarkValue: 65, benchmarkLabel: 'Platz 2', delta: '+14', }, { category: 'Tasks gelöst', ownValue: 79, benchmarkValue: 104, benchmarkLabel: 'gesamt', delta: '76 %', }, ]} caption="Quellen: BitGN-Zertifikat, Wiener Leaderboard. 104 Tasks mit Observable-Side-Effects-Scoring." />

Lessons

Vorbereitung schlägt Improvisation. Eine Woche Vorlauf mit Dev-Benchmark-Zugang war entscheidend. Am Hackathon-Tag gab es keine Zeit mehr, Architektur-Entscheidungen zu treffen.

Feature Flags auf allen Security-Layern. In einer Live-Competition ist das überlebenswichtig. Wenn ein Layer unerwartete Probleme macht: ausschalten, weitermachen, später debuggen.

Immer etwas einreichen. Wenn der Agent crasht oder eine Brake greift: trotzdem ein report_completion mit Best-Guess-Outcome abschicken. Null Punkte für einen Crash, Teilpunkte für einen halbrichtigen Guess.