Ich habe mir einen Butler gebaut. Aus KI.
Francis läuft rund um die Uhr auf einem kleinen Server in Helsinki und nimmt über Telegram Aufträge an: Mails suchen und beantworten, Termine eintragen, im Web recherchieren, Rezepte ablegen. Ohne Auftrag meldet er jeden Morgen, welche Mails etwas von mir wollen und wie es dem Server geht. Den Code haben zum großen Teil Sprachmodelle getippt. Ideen, Recherche, Testing und Kreditkarte kommen von mir.
Der Bauplan
Francis ist kein einzelnes Programm, sondern ein Zusammenspiel vieler Bausteine.
Francis
Anders gedacht
Ein Chatbot ist Francis nicht. Er ist eine Sammlung fester Abläufe, die ich in normalen Sätzen steuere, getippt oder gesprochen. Ein Sprachmodell versteht den Auftrag und wählt den passenden Ablauf; was dann passiert, ist Schritt für Schritt festgelegt. Was er sich merken soll, liegt in seiner eigenen Datenbank. Er wartet auch nicht, bis man ihn ruft: Nachts wird gesichert, morgens berichtet er, sonntags zieht er Bilanz. Bevor er eine Mail verschickt, einen Termin anlegt oder ein Ticket schreibt, fragt er per Telegram nach meinem Okay.
Alles daran ist so europäisch, wie es gerade geht. Den Server miete ich bei Hetzner, einem Anbieter aus Bayern. Die meisten Sprachmodelle kommen von Mistral aus Paris. Und die Abläufe stecken in n8n, einer Automatisierungssoftware aus Berlin: Sie startet jeden Ablauf zu einer festen Uhrzeit oder sobald eine Nachricht eingeht. Meine Daten bleiben dabei meine: Niemand trainiert damit, niemand verkauft sie. Und weil keine geschlossene Plattform dazwischensitzt, kann ich jedes Teil einzeln austauschen, das Sprachmodell eingeschlossen.
Hinter den Apps
Derselbe kleine Server trägt neben Francis auch meine Bastelprojekte. Jedes entstand aus einer spontanen Idee in meinem Alltag.
MusikÜber 1.700 Lieblingslieder, sortiert und kartiert. Verfügbar
Jede Nacht exportiert eine Automation meine Spotify-Lieblingslieder in eine schlichte Datei auf dem Server. Das Dashboard sortiert sie in 15 Genre-Familien, zeichnet Jahrzehnte-Charts und eine Ähnlichkeitskarte, auf der verwandte Songs nebeneinander liegen.
Meine Lieblingsstelle ist die Weltkarte: In der Kennung jeder Aufnahme (dem ISRC-Code) steckt ein Ländercode, und so sieht man, aus welchen Ecken der Welt die eigene Musik kommt. Und wer mag, zieht seinen eigenen Spotify-Export einfach per Maus auf die Seite. Alles wird direkt im Browser neu berechnet, nichts davon verlässt den Rechner.
TranskriptionGesprochenes als Text zum Nachlesen. Verfügbar, mit Login
Aufnahme hochladen, Text zurückbekommen, dazu der Preis auf den Cent: Transkribiert wird per KI (Voxtral), abgerechnet pro Audiominute. Weil das Modell pro Anfrage nur rund eine halbe Stunde verträgt, zerlegt das Werkzeug ffmpeg lange Aufnahmen vorher in 15-Minuten-Stücke. Aus einem einstündigen Interview werden vier Anfragen, der Text wird danach wieder zusammengesetzt.
Die Bau-Anekdote: Der abgeschottete Container, in dem die Automation läuft, lässt aus Sicherheitsgründen nichts nachinstallieren. ffmpeg kam deshalb als fertig gegossener Block aus einem zweiten Container huckepack hinein. Die Seite selbst liegt hinter einem Login.
SperrmüllWo es morgen etwas zu holen gibt. Verfügbar
Bonn veröffentlicht einmal im Jahr alle Sperrmüll-Termine als Tabelle, 2.911 Straßenabschnitte. Die App setzt sie auf die Karte, mit Datumsfilter, Zu-Fuß-Radius und Kalender-Export. Man weiß ja nie, was man Tolles findet.
Die Fleißarbeit steckt im Abgleich: 2.904 davon fanden per Adresssuche ihren Punkt auf der Karte, die restlichen sieben sind Tippfehler im Amtsdeutsch. Für die echten Straßenlinien kam OpenStreetMap dazu, und da schreibt die Stadt „str.“, wo OpenStreetMap „straße“ schreibt. Erst nach dem Normalisieren saßen 99,6 Prozent der Linien. Gemapped mit dem Immobilienrichtwert 2025 färbt die zweite Datenquelle die Straßen nach Wohnlage ein: bessere Gegend, dickere Linie, besseres Loot.
BonnDie offene Stadt auf einer dunklen Karte. Verfügbar
Bäume, Sirenen, öffentliche Toiletten, Grillplätze, dazu Parkverstöße als Wärmekarte: alles offene Daten der Stadt Bonn, übereinandergelegt auf einer dunklen Karte. Ein Teil aktualisiert sich nachts von selbst, der Rest wird bei Bedarf per Skript neu gebaut.
Einen Haken gab es: Der Server rückte die Daten einfach nicht raus. Erst als das Skript behauptete, Firefox zu sein, gab er nach. Seitdem surft hier ein Python-Skript unter falscher Flagge.
EventsWas in Bonn los ist, mit Kalender-Export. Verfügbar
Bonn veröffentlicht laufend, was in der Stadt los ist: Konzerte, Märkte, Ausstellungen, jede Menge Kleinkram. Die App zieht diese Termine, lässt sich nach Kategorie und Zeitraum filtern und schickt den Fund per Kalender-Export direkt ins eigene Telefon.
Ein Wackelkontakt kam aus Bonn selbst: Die städtische Quelle lieferte gelegentlich ein kaputtes, mittendrin abgeschnittenes JSON, samt PHP-Fehlermeldung. Die Automation schluckte den Fehler zunächst still und schrieb eine leere Liste, die App wirkte dann tot. Jetzt wirft sie stattdessen einen Fehler und behält die letzte gute Liste, bis Bonn sich wieder fängt.
DemokratieEntscheidungen im Bundestag. Verfügbar
Der Bundestag beschließt ständig etwas, kaum jemand liest die Vorlagen selbst. Die App zieht die aktuellen Gesetzesvorhaben aus der offiziellen DIP-Datenbank, fasst sie nüchtern zusammen und zeigt danach, wie jede Fraktion gestimmt hat, dazu eine handverlesene Beobachtungsliste von 29 Abgeordneten.
Zwei offene Quellen mussten zueinander passen: die DIP-API für die Vorlagen, deren Schlüssel von Zeit zu Zeit von Hand erneuert werden muss, und abgeordnetenwatch für die Abstimmungen selbst. Dort kehrt sich, je nach Abstimmungstyp, die Polarität von Ja und Nein einfach um. Beim ersten Testlauf standen deshalb ein paar Balken auf dem Kopf.
SpielFrancis gegen zwei Katzen. Verfügbar
Ein kleines Arcade-Spiel, in dem Francis Tabletts durch meine Wohnung balanciert. Gejagt wird Francis von meinen Katzen Oskar und Marzipan. Mittlerweile ist „Die Tafel“ mit Bestenliste global. Der Server merkt sich den Rekord in Postgres.
Seit dem Start haben die drei Charaktere immer wieder neue Animationen bekommen, und die Ideenliste für den Feinschliff ist länger als die Zeit.
RezeptEvalWelche KI schreibt die besten Rezepte? Verfügbar
RezeptEval ist mein Benchmark für Küchenkompetenz: Jedes Modell bekommt dieselben 78 Aufgaben, vom Kochauftrag über Lebensmittelsicherheit bis zum Zeitplan für vier Gänge aus einem Ofen. Ein Python-Skript prüft alles, was sich nachrechnen lässt; was Ermessenssache ist, benotet ein festgepinntes Richter-Modell nach fester Rubrik. Am Ende steht ein Punktwert mit offenen Gewichten.
Die ehrliche Grenze steht direkt auf der Seite: Niemand hat diese Gerichte gekocht. Gemessen wird, ob ein Modell präzise und regelkonform schreibt, nicht, ob es schmeckt. Und damit kein Modell die Aufgaben auswendig lernen kann, bleiben sie unter Verschluss, die Chemie-Zutaten sind gleich ganz erfunden.
KücheMeine Rezepte, mit Zahlen statt Fotos. Verfügbar
Was bei mir gut geklappt hat, schicke ich Francis per Telegram: als Text, als Link oder als Foto einer Kochbuchseite. Er zerlegt das Rezept in Zutaten und Schritte, ordnet es nach Kategorie, Küche, Allergenen und Saison ein und rechnet die Nährwerte aus einem Zutatenlexikon, Gramm für Gramm. Eigene Rezepte stehen mit Zutaten und Zubereitung auf der Seite, fremde nur mit dem Verweis auf ihre Quelle.
Die ehrliche Grenze: Francis liest und schätzt, gerechnet wird aus dem Lexikon, und eine unbekannte Zutat lässt ein Rezept lieber „nicht bestimmt“ als falsch dastehen. Fotos gibt es keine, die Rezepte kommen ohne. An ihrer Stelle bekommt jedes Gericht ein kleines Pixelbild.
Wie so etwas entsteht
Getippt hat den Code vor allem Claude Code, für einzelne Aufgaben auch das Sprachmodell GLM. Meine Arbeit: Konzept, Regie, Recherche und Tests, laut Sitzungsprotokoll bisher 130 Stunden.
Ich beschreibe
Ich lege in Worten fest, was gebraucht wird, wie es sich verhalten soll und was tabu ist. Klare Ansage statt Zeile für Zeile Code.
Claude Code baut
Claude Code ist ein Programm im Terminal, in dem ein Sprachmodell den Code schreibt, auf dem Server bereitstellt und wartet. Es kann Dateien lesen, Befehle ausführen und seine Arbeit selbst prüfen.
Ich prüfe
Testen, beanstanden, nachbessern lassen, bis es sitzt. In dieser Runde steckt der Großteil meiner Arbeit, und hier fällt jede Entscheidung.
Alles auf Standard-Technik
n8n für die Abläufe, PostgreSQL fürs Wissen, ein kleiner Linux-Server, ein Reverse-Proxy fürs Web. Nichts Exotisches, alles frei verfügbar.
Unter der Haube
Ein kleiner Server, eine Handvoll Dienste, ein paar Sprachmodelle per API. Jede Automation ist ein Ablauf in n8n, die Werkzeuge reichen vom Kalender bis zur Web-Suche.
Francis betreibt kein eigenes Modell. Er ruft je nach Aufgabe eines per API auf.
Docker verpackt jeden Dienst in einen eigenen, abgeschotteten Container. Nach einem Neustart starten alle Dienste von selbst wieder.
Was drinsteckt
VerstandAcht Sprachmodelle, jedes für eine Aufgabe: Gespräch, Sprache, Bilder, Dokumente
- Mistral Medium
- Nimmt Aufträge an, plant die Schritte und wählt das passende Werkzeug.
- Mistral Large
- Schreibt den Wochenrückblick am Sonntag.
- Mistral Small
- Günstige Massenarbeit: Mails sichten, Stapel zusammenfassen.
- mistral-embed
- Verwandelt Sätze in Vektoren für das Langzeitgedächtnis.
- Voxtral
- Schreibt Sprachnachrichten als Text mit. Abgerechnet pro Audiominute.
- Mistral OCR
- Liest Text aus PDFs und Scans heraus.
- Claude Sonnet
- Wertet Bilder und PDFs aus, beantwortet Fragen aus dem Web.
- Gemini 3.5 Flash
- Ordnet die Zutaten neuer Rezepte dem Lexikon zu.
Jeder Aufruf landet mit Modell und Tokenzahl in der Datenbank; die Preisliste dafür holt der Server jede Woche neu. Über fünf Euro im Monat warnt der Sonntagsbericht, und die Messlatte liegt bewusst niedrig.
WissenDrei Arten Erinnerung in einer PostgreSQL-Datenbank, das Langzeitgedächtnis als Vektoren
Eine PostgreSQL-Datenbank mit drei Arten von Erinnerung:
- Gesprächsverlauf: die letzten Wortwechsel pro Chat, damit Francis dem Faden folgt.
- Freigaben: Mails, Termine und Tickets warten in einer Tabelle auf mein Ja oder Nein.
- Langzeitgedächtnis: Fakten als 1024-dimensionale Vektoren (mistral-embed), gesucht wird per pgvector nach Ähnlichkeit statt nach Stichwort.
Das Langzeitgedächtnis ist eingebaut und einsatzbereit, gefüllt wird es erst nach und nach, mit jedem Werkzeug, das Francis dazubekommt.
ZuhauseEin Server mit zwei Kernen, der sich nachts selbst sichert und aktualisiert
Ein Ubuntu-Server bei Hetzner in Helsinki, zwei Kerne, vier Gigabyte RAM, ein paar Euro im Monat. Bewusst klein, und er wartet sich weitgehend selbst:
- Backups: jede Nacht ein Datenbank-Dump plus Archiv, eine Kopie geht in einen privaten Google-Drive-Ordner außer Haus.
- Updates: Sicherheits-Patches installiert der Server nachts automatisch (unattended-upgrades). Braucht ein Kernel-Update einen Neustart, startet er selbst neu, und ein Prüflauf meldet danach, ob alle Dienste wieder laufen.
- Zugang: SSH nur mit Schlüssel, keine Passwörter. fail2ban sperrt Brute-Force-Versuche automatisch aus.
- Eingang: Von außen erreichbar ist nur der Webserver Caddy. Er nimmt jede Anfrage an und leitet sie an den zuständigen Dienst weiter.
- Beobachtung: Uptime Kuma prüft laufend, ob alle Dienste antworten, Umami zählt die Besucher der Seite, ganz ohne Cookies. Fällt etwas aus, bekomme ich eine Nachricht aufs Telefon; jeden Morgen kommt ein Lagebericht per Telegram.
Wie sich Claude Code erinnert
Claude Code arbeitet auf meinem Desktop-Rechner und greift per SSH auf den Server zu. Damit nicht jede Sitzung bei null beginnt, liegt das Wissen über das System in Textdateien im Projektordner: ein Betriebshandbuch mit Architektur und Regeln, Schritt-für-Schritt-Anleitungen für wiederkehrende Abläufe, Notizen aus früheren Sitzungen und Regeln, die je nach Datei automatisch dazukommen. Die wichtigste Regel: niemals Passwörter oder Schlüssel in den Code.
Claude Code in Zahlen
Wie viel Arbeit ist das wirklich? Die Sitzungsprotokolle auf meinem Rechner schreiben mit, ein kleines Skript zählt sie aus. Seit dem 7. Juli ergibt das:
Arbeitssitzungen mit Claude Code. Jede beginnt mit einer Aufgabe in Alltagssprache.
Wortwechsel in diesen Sitzungen. Nur rund 2.400 davon habe ich selbst getippt; der Rest ist Claude Code im Gespräch mit dem Server und seinen Werkzeugen.
Von 62 Kalendertagen. Längste Serie: zehn Tage am Stück.
Wortbausteine, rein und raus. 80 Millionen davon hat Claude Code selbst getippt; ein Token ist ungefähr eine Silbe.
Einzeln per API bezahlt hätte dieselbe Arbeit rund 13.300 Euro gekostet
KI-Arbeit wird normalerweise pro Token abgerechnet, also pro Wortbaustein. Ich nutze stattdessen Claude Pro, ein Abo für rund 20 Euro im Monat. Das Abo deckelt nicht die Gesamtmenge, sondern taktet sie: Alle fünf Stunden öffnet sich ein frisches Nutzungsfenster. Wer diese Fenster regelmäßig ausschöpft, holt ein Vielfaches des Listenpreises heraus.
Der stille Held dabei ist der Zwischenspeicher. Damit Claude Code nicht bei jedem Arbeitsschritt das ganze bisherige Gespräch neu liest, hebt der Anbieter den Verlauf auf und berechnet Wiedergelesenes zum Zehntel des Preises. So flossen insgesamt 15,45 Milliarden Token, 97 Prozent davon aus dem Zwischenspeicher. Ohne ihn stünden gut 86.100 Euro auf dem Zettel.
Und so verteilt sich die Summe anteilig auf die Modelle:
- Opus
- Das Arbeitstier, 72 Prozent aller KI-Antworten. Sein Anteil: rund 7.000 Euro.
- Fable
- Das schwere Geschütz für die kniffligen Fälle. Sein Anteil: rund 6.200 Euro.
- Sonnet
- Der günstige Alltag nebenher. Sein Anteil: rund 90 Euro.
Alles eine Schätzung zu API-Listenpreisen von Juli 2026, und zu diesen Preisen hätte ich natürlich anders gearbeitet. Aber die Größenordnung stimmt. Und sie erklärt, warum sich das Abo lohnt.
Der Stapel
Jede spontane Idee, jeder Fehler, jede Nachtschicht wurde irgendwann ein Ticket, und fast jedes davon am Ende ein Haken. Das Band zeigt die erledigten Tickets mit Nummer und Titel.
Der Stapel lädt gerade nicht. Die Zahl oben im Kopf ist die zuletzt bekannte.
Daten & Datenschutz
Francis ist ein privates Werkzeug für genau eine Person und verarbeitet keine Daten Dritter.
Francis greift nach Freigabe auf meine Dienste zu: Gmail (Mails sichten), Google Kalender (Termine) und Google Drive (Dateien). Nur meine eigenen Daten, sonst nichts.
Nichts davon wird weitergegeben, verkauft, für Werbung genutzt oder zum Training von KI-Modellen verwendet.
Was genau wie verarbeitet wird, steht in der Datenschutzerklärung. Verantwortlich ist der im Impressum genannte Diensteanbieter.
Quellen
Die Zahlen zu Claude Code stammen aus den Sitzungsprotokollen auf meinem Rechner (Stand 6. September 2026); sie aktualisieren sich nach jeder Sitzung von selbst und zählen nur die Protokolle, die noch auf der Platte liegen. Automationen und Werkzeuge zählt der Server alle 30 Minuten selbst nach, die Werkstatt-Badges kommen aus derselben Prüfung. Der Stapel kommt täglich aus dem Kanban bei GitHub, ohne vertrauliche Tickets und ohne Server-Interna. Sprachmodelle und Dienste sind von Hand gezählt. Alle Kosten sind Schätzungen zu API-Listenpreisen.