● Projekt · Francis

Ich habe mir einen Butler gebaut. Aus KI.

Francis läuft rund um die Uhr auf einem kleinen Server in Helsinki und erledigt meinen digitalen Kleinkram: Mails sichten, Termine organisieren, Daten pflegen, morgens Bericht erstatten. Getippt hat den Code eine KI. Ideen, Recherche, Testing und Kreditkarte kommen von mir.

Francis ist kein einzelnes Programm, sondern ein Zusammenspiel vieler Bausteine. Starte eine seiner echten Aufgaben und schau ihm bei der Arbeit zu.

Francis bei der Arbeit
Francis – der digitale Butler Francis

Die üblichen KI-Assistenten wohnen in der Cloud von irgendeinem Konzern. Man ruft sie, sie antworten, und beim nächsten Gespräch fangen sie wieder bei null an. Francis läuft stattdessen auf meinem gemieteten Server und führt dort sein eigenes Gedächtnis. Er wartet auch nicht, bis man ihn ruft: Nachts sichert er, morgens berichtet er, sonntags zieht er Bilanz. Nur bevor er etwas Heikles anfasst, holt er sich per Telegram mein Okay.

Der Unterbau ist so europäisch, wie es gerade geht. Der Server steht bei Hetzner in Helsinki. Gedacht wird bei Mistral in Paris. Und den Takt gibt n8n vor, eine Automatisierungssoftware aus Berlin. Meine Daten bleiben dabei meine: Niemand trainiert damit, niemand verkauft sie. Und weil keine geschlossene Plattform dazwischensitzt, kann ich jedes Teil einzeln austauschen. Heute denkt Mistral. Morgen, wer weiß.

Nebenbei trägt derselbe Unterbau den Rest meiner Bastelprojekte: die morgendliche Mail-Sichtung, ein Musik-Dashboard mit gut 1.700 Lieblingssongs, Karten über Bonn, einen Sperrmüll-Finder und die Bestenliste eines kleinen Arcade-Spiels. Alles zusammen: zwei Kerne & 4 GB RAM für ein paar Euro im Monat. Und gebraucht hat das streng genommen niemand. Aber darum ging es nie...

Ein kleiner Server, eine Handvoll Dienste, ein paar Sprachmodelle per API. Hier die ehrlichen Zahlen mit Einzelheiten zum Aufklappen.

29
Automationen
Abläufe in n8n, die zu festen Zeiten anspringen oder auf Nachrichten reagieren.
14
Werkzeuge
Vom Kalender bis zur Web-Suche. Einige sind heikel und handeln nur nach meiner Freigabe per Telegram.
6
Sprachmodelle
Für jede Aufgabe das passende: Mistral Small fürs Sortieren, Claude Sonnet für Bilder und PDFs, Voxtral fürs Zuhören.
5
Dienste in Containern
Docker verpackt jeden Dienst in einen eigenen Container: eine abgeschottete Box mit allem, was er braucht. Nur der Webserver ist vom Netz erreichbar; nach einem Neustart kommt alles von allein wieder hoch.
Verstand Welches Modell denkt wann?

Francis betreibt kein eigenes Modell. Er ruft je nach Aufgabe eines per API, jedes für seine Stärke:

Mistral MediumDas Gespräch, die Planung, das Formulieren der Berichte.
Mistral SmallGünstige Massenarbeit: Mails sichten, Stapel zusammenfassen.
mistral-embedVerwandelt Sätze in Vektoren für das Langzeitgedächtnis.
VoxtralHört Sprachnachrichten zu und macht Text daraus. Abgerechnet pro Audiominute.
Mistral OCRLiest Text aus PDFs und Scans heraus.
Claude SonnetVersteht Bilder und PDFs, beantwortet Fragen aus dem Web.

Jeder Aufruf landet mit Modell und Tokenzahl in der Datenbank; die Preisliste dafür aktualisiert sich wöchentlich selbst. Über fünf Euro im Monat schlägt der Sonntagsbericht Alarm. Bislang bleibt Francis deutlich darunter.

Wissen Woraus das Gedächtnis besteht

Eine PostgreSQL-Datenbank mit drei Arten von Erinnerung:

  • Gesprächsverlauf: die letzten Wortwechsel pro Chat, damit Francis dem Faden folgt.
  • Freigabe-Zwischenlager: heikle Aktionen warten in einer Tabelle, bis ich per Telegram Ja oder Nein sage.
  • Langzeitgedächtnis: Fakten als 1024-dimensionale Vektoren (mistral-embed), gesucht wird per pgvector nach Ähnlichkeit statt nach Stichwort.

TBH: Das Langzeitgedächtnis ist eingebaut und einsatzbereit, aber aktuell noch fast leer. Es füllt sich mit der Zeit, wenn Francis mehr Tools bekommt.

Zuhause Wo Francis lebt und wie er wacht

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 automatisch (unattended-upgrades). Nur Neustarts nach Kernel-Updates entscheide ich.
  • Zugang: SSH nur mit Schlüssel, keine Passwörter. fail2ban sperrt Brute-Force-Versuche automatisch aus.
  • Eingang: Von außen ist ein einziger Dienst erreichbar, ein Webserver namens Caddy. Er nimmt jede Anfrage entgegen und reicht sie ins Haus weiter. Alles andere bleibt hinter verschlossener Tür.
  • Beobachtung: Uptime Kuma fühlt den Diensten den Puls, Umami zählt die Besucher der Seite, ganz ohne Cookies. Fällt etwas aus, klingelt mein Telefon; jeden Morgen kommt ein Lagebericht per Telegram.

Derselbe kleine Server trägt neben Francis auch meine Bastelprojekte. Jedes entstand aus einer spontanen Idee in meinem Alltag. Zum Aufklappen.

Musik

1.708 Lieblingslieder, sortiert und kartiert.

Verfügbar

Jede Nacht um drei exportiert eine Automation meine Spotify-Lieblingslieder, aktuell 1.708 Stück, 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.

Selbst stöbern: /app/music/ →

Transkription

Audio rein, Text raus, Preis dazu.

Verfügbar · 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üll

Wo 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 der 2.911 Abschnitte 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.

Selbst suchen: /app/loot/ →

Bonn

Die 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.

Selbst erkunden: /app/bonn-dashboard/ →

Events

Was 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.

Selbst durchblättern: /app/events/ →

Demokratie

Entscheidungen 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.

Selbst nachlesen: /app/democracy/ →

Spiel

Francis 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.

QOL-Maßnahmen sind noch viele geplant & die drei Charaktere werden regelmäßig mit neuen Animationen geupdated.

Selbst servieren: /app/dinner/ →

Den Code hat eine KI getippt. Meine Arbeit: >60 Stunden Konzept, Regie, Recherche und Tests.

1
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.
2
Claude Code baut
Eine KI im Terminal schreibt den Code, stellt ihn auf dem Server bereit und wartet ihn. Sie kann Dateien lesen, Befehle ausführen und sich selbst prüfen.
3
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.
4
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.

Wie sich Claude Code erinnert

Claude Code arbeitet auf meinem Desktop-Rechner und greift per SSH auf den Server zu. Keine Sitzung beginnt bei null: Das Wissen über das System liegt in schlichten Textdateien im Projektordner.

# CLAUDE.md (Auszug, vereinfacht) ## Goldene Regel Niemals Passwörter oder Schlüssel in den Code schreiben. ## Der Operator ist kein Entwickler Erkläre jeden Schritt in einfacher Sprache. Frage nach, bevor etwas Unwiderrufliches geschieht. ## Arbeitsweise Bevorzuge einfache, stabile Lösungen vor cleveren.

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 2. Juni ergibt das:

137
Sitzungen
Arbeitssitzungen mit Claude Code. Jede beginnt mit einer Aufgabe in Alltagssprache.
36.157
Nachrichten
Wortwechsel in diesen Sitzungen. Nur rund 800 davon habe ich selbst getippt; der Rest ist die KI im Gespräch mit dem Server und ihren Werkzeugen.
23
Aktive Tage
Von 33 Kalendertagen. Längste Serie: fünf Tage am Stück.
42 Mio.
Token
Wortbausteine, rein und raus. 37 Millionen davon hat die KI selbst getippt; ein Token ist ungefähr eine Silbe.
Preisschild Was das per API gekostet hätte

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. Nachgerechnet: Einzeln per API bezahlt hätte dieselbe Arbeit rund 4.300 Euro gekostet.

Der stille Held dabei ist der Zwischenspeicher. Damit die KI 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 4,25 Milliarden Token, 93 Prozent davon aus dem Zwischenspeicher. Ohne ihn stünden gut 21.000 Euro auf dem Zettel.

Und so verteilen sich die rund 4.300 Euro anteilig auf die Modelle:

Opus 4.8Das Arbeitstier, 81 Prozent aller KI-Antworten. Sein Anteil: rund 3.200 Euro.
Fable 5Das schwere Geschütz für die kniffligen Fälle. Sein Anteil: rund 1.000 Euro.
SonnetDer günstige Alltag nebenher. Sein Anteil: rund 60 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.

Stand: 4. Juli 2026. Ausgezählt aus den lokalen Sitzungsprotokollen; die Zahlen aktualisieren sich nach jeder Claude-Code-Sitzung von selbst.

189 Tickets erledigt, und es werden mehr.

Jede spontane Idee, jeder Fehler, jede Nachtschicht wurde irgendwann ein Ticket. Und fast jedes davon am Ende ein Haken. Hier ziehen sie vorbei, ganze Reihen davon. Zum Lesen ist keins gedacht, es geht nur ums Gefühl, wie viel sich angesammelt hat.

Du kannst Francis hier frei über Matteo und sich selbst ausfragen. Diese Demo antwortet, aber sie hat keine Tools und kein Gedächtnis. Die echte Francis läuft auf dem Server.

Francis Digitaler Butler · Demo
Guten Tag. Fragen Sie mich gern etwas über Herrn Möller oder über mich.

Francis ist ein KI-System und antwortet auf Basis von Large Language Models. Francis kann und wird Fehler machen.

Der Ordnung halber: Francis ist ein privates Werkzeug für genau eine Person und verarbeitet keine Daten Dritter.

Wozu Google-Daten?
Francis greift nach Freigabe auf meine Dienste zu: Gmail (Mails sichten), Google Kalender (Termine) und Google Drive (Dateien). Nur meine eigenen Daten, sonst nichts.
Keine Weitergabe
Nichts davon wird weitergegeben, verkauft, für Werbung genutzt oder zum Training von KI-Modellen verwendet.
Alle Einzelheiten
Was genau wie verarbeitet wird, steht in der Datenschutzerklärung. Verantwortlich ist der im Impressum genannte Diensteanbieter.
Alle Projekte