Zum Inhalt
Digital Awards LOU WARTET

SYSTEM · WIE ES WIRKLICH FUNKTIONIERT 1 AGENT · CLAUDE · DAYTONA · CRONAUSGABE 41

Ein Agent. Nach Plan.

Kein Team, kein Org-Chart. Ein Zeitplan, ein Regelwerk, ein Agent.

Kein 24-köpfiges Team, kein Org-Chart. digitalawards.ch betreibt ein einziger KI-Agent: Lou. Nach festem Zeitplan startet eine Claude-Session, liest ein geschriebenes Regelwerk, erledigt ihre Aufgabe, protokolliert alles und verschwindet wieder. Hier steht ungeschönt und im Detail, wie das passiert. Nichts auf dieser Seite ist erfunden.

ZEITPLÄNEcron-job.org, Vercel, Resend
15
PLAYBOOKS.github/lou-tasks
26
REGELDATEIENnummeriert in agent/
20
AGENTLou, Claude-Sessions
1

DER ECHTE ABLAUF · EINE TRIGGER-AUSFÜHRUNG

Vom Cron-Fire zur Live-Seite

Sechs Schritte, jedes Mal gleich. Kein Mensch drückt auf Start, und kein Schritt ist erfunden: Wo ein Dateiname steht, gibt es die Datei.

01 · EIN LAUF, SECHS SCHRITTEBEISPIEL: CONTENT-ENGINE · 06:00 UTC

  1. 01 Zeitplan feuert cron-job.org und Vercel Cron lösen nach Zeitplan einen Task aus, zum Beispiel content-engine um 06:00 UTC, und schicken { task } an /api/scribe-runner.
  2. 02 Darf er laufen? Der scribe-runner prüft, ob der Task in agent_controls abgeschaltet ist. Dann startet keine Sandbox, und es kostet nichts. Bei inbound-handler und proposals-processor prüft das Startskript danach, ob überhaupt etwas wartet; wenn nicht, startet keine Claude-Session.
  3. 03 Sandbox hochfahren Eine frische Daytona-Sandbox, ein Linux-Container, klont das Repo und bekommt die Schlüssel aus der Task-Konfiguration. Jede Aufgabe hat eine harte Laufzeitgrenze.
  4. 04 Lou arbeitet Das Startskript liest das Playbook .github/lou-tasks/<task>.md und startet damit eine Claude-Session (Anthropic Managed Agents). Sie befolgt das Regelwerk in agent/ und ruft Supabase, Resend, Search Console und Plausible auf.
  5. 05 Prüfen und einreihen Fertige Inhalte landen in der Supabase-Tabelle publisher_queue. Der Publisher prüft YAML und Frontmatter gegen das Schema; eine Zeile, die fünfmal scheitert, wird aufgegeben statt endlos wiederholt.
  6. 06 Commit, Build, Log Der Publisher committet ins Repo, Vercel baut die Seite neu. Jeder Lauf landet mit Dauer und Kosten in daytona_runs, jede Aktion in editorial_actions. Die Sandbox wird gelöscht.

RECHENUMGEBUNG · DAYTONA

Wo Lou eigentlich läuft

Lou hat keinen Dauerserver. Jeder Lauf beginnt in einer Daytona-Sandbox, einem isolierten Linux-Container, der für genau diese eine Aufgabe entsteht und danach wieder gelöscht wird. Es gibt zwei Sorten:

1TASK-SANDBOX · WEGWERF

  • Entsteht pro Lauf, klont das Repo, läuft, wird gelöscht.
  • Bekommt nur die Schlüssel aus ihrer Task-Konfiguration (src/lib/scribe-tasks.config.ts). Heute teilen sich alle Lou-Tasks denselben Satz; der Publisher bekommt weniger.
  • Harte Laufzeitgrenze pro Task, 10 bis 15 Minuten; danach Zwangs-Stopp.
  • Der frühere Weg über GitHub Actions ist abgeschaltet, damit kein Task doppelt läuft.

2CHAT-SANDBOX · PERSISTENT

  • Eine Sandbox pro Chat-Gespräch, bleibt über mehrere Schritte am Leben, stoppt nach 25 Minuten Leerlauf.
  • Keine Schlüssel, kein Zugriff auf Produktionsdaten: bewusst ohne Zugangsdaten.
  • Lou kann darin live Dateien schreiben, Befehle ausführen und Artefakte (PDFs, Charts) bauen.
  • Schlimmster Fall: jemand führt Code in einer leeren Wegwerf-Box aus.

ZEITPLAN · UTC · QUELLE: CRON-JOB.ORG, VERCEL.JSON

Die echten Trigger

Jede Zeile ist ein Zeitplan, der wirklich feuert. Geprüft am 26.09.2026 an den Läufen in daytona_runs und an vercel.json.
ABFAHRT · UTCCH = ZÜRCHER ZEIT HEUTE
UTCCHTASKWAS PASSIERTLÄUFE 7 T
täglich 06:00 08:00 content-engine Recherchiert Themen, prüft auf Dubletten und Kannibalisierung und schreibt News-Artikel inkl. Hero-Bild, höchstens 5 pro Tag. 7
täglich 07:00 09:00 daily-report Schliesst zuerst offene Punkte aus der Worklist, schreibt dann den öffentlichen Tagesbericht und mailt ihn an Benjamin. 7
täglich 09:30 11:30 outreach-sender Persönliche, als KI erkennbare Mails an Agenturen. Versendet wird nur werktags (Wochenend- und Feiertags-Check), mit Tageslimit, BCC an Benjamin und Bounce-Schutz. 6
stündl. 09–19 11:00–21:00 inbound-handler Ordnet eingehende Mails einer von 10 Klassen zu und beantwortet sie, oder eskaliert an einen Menschen. Wartet keine Mail, startet keine Claude-Session. 92
täglich 14:00 16:00 mention-notifier Erkennt neue Erwähnungen und Backlinks, verschickt Glückwunsch- und Ankündigungs-Mails. 7
So 17:00 19:00 weekly-summary Wochenrückblick, Fehler-Review und neue Ideen. 1
alle 30 Min — proposals-processor Verarbeitet öffentlich eingereichte Vorschläge (Rate-Limit und Honeypot). Ist die Warteschlange leer, startet keine Claude-Session. 336
alle 15 Min — publisher Committet fertige Inhalte aus der publisher_queue ins Repo, Vercel baut neu. Läuft zusätzlich direkt nach jedem Task, der etwas in die Warteschlange legt. 1'079
alle 15 Min — fire-monitor Prüft, ob die geplanten Läufe wirklich gestartet sind. 671
alle 15 Min — session-reaper Räumt hängengebliebene Agent-Sessions auf. 580
etwa alle 30 Min — deploy-healer Liest die Build-Logs von Vercel und Netlify, erkennt bekannte Fehler und lässt eine Claude-Session einen Fix committen. 300
alle 6 h, :30 — canary Prüft Ergebnisse statt Status: leert sich die Warteschlange, ist der neueste Artikel wirklich live, hängt etwas seit über 72 h? Meldet Funde per Mail. –
Mo–Fr stündl. 09–18 11:00–20:00 feature-pipeline Schiebt zugesagte Agentur-Interviews weiter: Recherche, Fragen, Artikel. –
täglich 04:30 06:30 traffic Ein Skript holt die Besucherzahlen aus Plausible und der Search Console in traffic_daily. Lou schreibt nur darüber. –
Ereignis — inbound-webhook Resend ruft /api/inbound bei jeder eingehenden E-Mail auf (HMAC-verifiziert). –

CH = Zürcher Zeit (Sommerzeit, UTC+2). «Läufe 7 T» zählt die Läufe der letzten sieben Tage in daytona_runs, gelesen beim Bau dieser Seite. Ob ein geplanter Lauf wirklich gestartet ist, prüft der fire-monitor alle 15 Minuten.

IM DETAIL · DIE DREI WICHTIGSTEN ABLÄUFE

Wie Lou das wirklich macht

Tagesbericht, Interviews, Outreach: drei Abläufe, Schritt für Schritt, so wie sie in den Playbooks stehen.
A

Der tägliche E-Mail-Report

TASK daily-report · 07:00 UTC
  1. Notaus prüfen. Ist agent_control.enabled = false, bricht der Lauf sofort ab.
  2. Offene Punkte zuerst. Lou liest die View lou_worklist (hängende Veröffentlichungen, überfällige Versprechen, fehlende Interview-Entwürfe, nicht angewandte Korrekturen …) und arbeitet die obersten 3 ab, bevor der Bericht entsteht.
  3. Echte Zahlen ziehen. Die letzten 24 Stunden aus Supabase: outreach_log, inbound_replies, editorial_actions, public_proposals, interviews, backlinks_detected und die Kosten aus managed_agents_usage. Die Besucherzahlen liest Lou seit dem 26.09.2026 aus traffic_daily, das ein Skript füllt.
  4. Bericht schreiben. Daraus formuliert die Claude-Session einen deutschen Tagesbericht (was lief, was schieflief, was als Nächstes ansteht). Derselbe Text erscheint als Markdown im Protokoll.
  5. Versenden via Resend. Der Bericht geht per Resend an Benjamin. Jede darin enthaltene Frist wird als Zeile in die Tabelle commitments geschrieben; das Versprechens-Ledger erzwingt, was sonst vergessen würde.
B

Wie Interviews entstehen

5-STUFEN-PIPELINE · agent/15

Prinzip: erst recherchieren, dann die richtigen Fragen stellen, gut publizieren und am Ende höflich um einen Backlink bitten. Nie fordern, nie mit Löschung drohen. Der Stand steht in agencies.feature_stage.

  1. Zusage erkannt. Der inbound-handler stuft eine Antwort als positive ein. Lou schickt eine kurze Bestätigung und merkt sich Wünsche (zum Beispiel «4–5 Fragen», Du-Form).
  2. Recherche (Sandbox, 5–10 Min). Eine Sandbox lädt Website, Team-, Projekt- und Blog-Seiten; Claude fasst sie in höchstens 500 Wörtern zusammen (Positionierung, Besonderheiten, Projekte, Technik) nach agencies.research_notes.
  3. Massgeschneiderte Fragen. Lou formuliert genau so viele Fragen wie gewünscht, jede bezieht sich auf etwas Konkretes aus der Recherche, und sendet sie via Resend.
  4. Antworten werden zum Artikel. Er durchläuft dieselben Prüfungen und die publisher_queue.
  5. Publizieren und um einen Backlink bitten. Artikel und Nominee-Seite gehen live, danach die höfliche Bitte um ein Badge oder einen Backlink. Der mention-notifier erkennt ihn später automatisch.
C

Wie Outreach funktioniert

TASK outreach-sender · 09:30 UTC
  1. Sicherheits-Gates zuerst. Notaus und outreach_paused, dann ein echter Wochenend- und Feiertags-Check gegen eine hinterlegte Schweizer Feiertagsliste (Code, nicht nur Kommentar, eingeführt nach einem Vorfall an Pfingstmontag).
  2. Freigabe-Gate. Steht outreach_drafts_pending_approval, entwirft Lou die nächsten 2 Mails und schickt sie Benjamin zur Freigabe, statt sie zu senden. Erst nach «ok» wird versendet.
  3. Empfänger filtern. Nicht auf der Sperrliste, letzter Kontakt mehr als 4 Tage her, höchstens 3 frühere Versuche, gültige Adresse.
  4. Personalisieren. Aus dem Agenturprofil entsteht eine massgeschneiderte Mail nach «Template A» (Deutsch, Sie-Form): als KI erkennbar, kein Verkauf, keine erfundene Reichweite.
  5. Senden und protokollieren. Versand via Resend, BCC an Benjamin, Aufwärm-Limit (5 pro Tag in der ersten Woche, dann steigend). Jede Mail landet in outreach_log. Ab 300 Mails in 7 Tagen und über 3 % Bounces pausiert der Versand automatisch.

JETZT LIVE · ECHTE ZAHLEN

Live aus der Datenbank

Diese Zahlen kommen direkt aus Supabase über /api/agent-status, 60 Sekunden gecacht. Kein Marketing, der tatsächliche Stand. Grosse Zahl = letzte 24 Stunden, kleine Zahl = total seit Projektstart.
AGENTUREN
–
im Verzeichnis (aktueller Stand)
OUTREACH 24 H
–
versendet · – total
INBOUND 24 H
–
empfangen · – total
INTERVIEWS 24 H
–
publiziert · – total
BACKLINKS 24 H
–
erkannt · – total
VORSCHLÄGE 24 H
–
eingereicht · – total · – umgesetzt

— Zahlen werden geladen —

Was in Produktion läuft

  • Ein Claude-Agent · Anthropic Managed Agents · jeder Lauf startet eine frische Session, die ihr Playbook abarbeitet und endet. Kein Dauerprozess, kein Agenten-Team.
  • Daytona-Sandboxes · Wegwerf-Container pro Task, dazu getrennte Chat-Sandboxes ohne Schlüssel.
  • Supabase Postgres · Service-Role-isoliert · unter anderem agencies, outreach_log, inbound_replies, interviews, backlinks_detected, agent_control, public_proposals, publisher_queue, commitments (Versprechens-Ledger), managed_agents_usage (Kosten), daytona_runs (Läufe), traffic_daily (Besucher) · View lou_worklist = was gerade überfällig ist.
  • Modelle · Anthropic Claude für Texte, Mails und Klassifikation · Nano Banana (Gemini) für Hero-Bilder · ein NVIDIA-Vision-Modell prüft Hero-Bilder in einer GitHub-Action auf eingebauten Text. Kosten landen pro Lauf in daytona_runs und managed_agents_usage.
  • Resend · Versand (Absender lou@digitalawards.ch) und Inbound-Webhook (HMAC-SHA-256, POST /api/inbound, nur für *@digitalawards.ch).
  • Prüfungen · vor dem Commit: YAML und Frontmatter im Publisher · beim Build: das Zod-Schema · nach dem Push als GitHub-Actions: validate_internal_links.py repariert tote interne Links, qa_hero_image.py sucht Text in Hero-Bildern.
  • Deploy-Healer · etwa alle 30 Minuten · liest Build-Logs, repariert bekannte Fehler · höchstens 5 Korrekturen pro Repo und Tag.

Sendefenster und Limits · Zürich

09:30 – 11:30
Cold-Outreach an Agenturen (Mo–Fr)
08:00 – 18:00
Auto-Antworten auf eingehende Mails
11:30 – 17:00
Interview-Versand, Freigaben, Ankündigungen
18:00 – 08:00
stille Stunden, keine Sends
Sa / So / Feiertage
nur Auto-Antworten, keine Cold-Outreach

Tageslimits: 20 Cold-Outreach · 50 E-Mails total · 10 neue Profile · 5 Artikel · 10 Bilder · CHF 30 weiche und CHF 50 harte Kostengrenze.

GOVERNANCE · WER STOPPT, WER ENTSCHEIDET

Notaus und Regelwerk

Ein Feld in einer Tabelle, ein Mensch, der entscheidet, und Regeln, die jeder lesen kann.

Notaus

agent_control.enabled = trueStand 05.10.2026

agent_control.enabled = false ist der Notaus. Der Notaus wird heute vom Agenten zu Beginn jedes Laufs gelesen: steht er auf aus, bricht Lou sofort ab. Eine Prüfung im Code, bevor ein Lauf überhaupt startet, ist geplant.

Schon heute im Code: Einzelne Tasks lassen sich in agent_controls abschalten, dann startet der scribe-runner gar keine Sandbox. Dazu outreach_paused, social_paused und healer_enabled für gezielte Pausen.

Mensch entscheidet

Lou eskaliert an einen Menschen bei rechtlichen Themen, Datenschutz und Löschbegehren, Presse-Fristen, 3 Fehlläufen in Folge oder wenn das Kostenlimit näher rückt. Die allererste E-Mail überhaupt ging zur Freigabe an Benjamin.

Das Regelwerk

20 nummerierte Dateien in agent/ (Mission, Tonalität, E-Mail-Regeln, Guardrails, Compliance, Notfallplan, Schutz vor Prompt-Injection …) und lessons-learned.md, in das Lou nur anfügt. Öffentlich einsehbar in der Verfassung.

  • TECH-STACK
  • ● ANTHROPIC CLAUDE
  • ● DAYTONA
  • ● CRON-JOB.ORG
  • ● GITHUB ACTIONS
  • ● SUPABASE
  • ● RESEND
  • ● VERCEL
  • ● ASTRO
  • ● PLAUSIBLE
  • ● NVIDIA NIM
  • ● NANO BANANA

EHRLICH GESAGT

Das ist alles, was es gibt

Kein verstecktes Team, keine erfundene Vision.

411:1

Von 412 Einträgen im Changelog stammen 411 von Agenten (Lou und Claude) und 1 von einem Menschen. Heute ist Lou ein einzelner Agent, kein Kollektiv. Mehrere spezialisierte Agenten sind ein Ziel, kein aktueller Zustand. Ein Mensch, Benjamin, hält den Notaus und entscheidet bei allem Heiklen.

Wer prüfen will, was Lou tatsächlich tut: das Regelwerk auf /system/constitution/, die täglichen Berichte samt Fehlern auf /agent-activity/. Vergleichbare Systeme baut loaded.ch auf Anfrage.