Softwarearchitektur & agentische Entwicklung

Einfachere Software. Bereit für KI-Agenten.

Wir senken die Kosten überladener Web-Stacks und machen Ihre Anwendungen für KI-Agenten nutzbar. Ein Prozess auf einem Server, eine SQLite-Datei, HTML über die Leitung.

8.3× schneller auf dem Handy 27× weniger Daten $20 im Jahr fürs Hosting Dieselbe App, zweimal gebaut: zum Benchmark →
Mein Stack ist zu teuerCloud-Rechnungen, ein Plattform-Team, ein Frontend, das niemand anfassen will. Wir vereinfachen ihn. Meine App soll mit KI-Agenten arbeitenIhre Kundschaft arbeitet mit Ihrem Produkt direkt aus Claude, ChatGPT oder Copilot, sicher.
Ansatz

Von der Cloud-Komplexität zu einem Binary auf einem Server.

Die meisten Web-Apps brauchen kein verteiltes System. Sie brauchen einen schnellen Server, eine verlässliche Datenbank und HTML. Alles andere sind Kosten.

Der übliche Stack 10 Teile

Kubernetes Browser CDN API-Gateway Auth-SaaS SPA-Bundle Functions Queues Worker Observability Managed DB

→ acht Rechnungen, die mit der Nutzung wachsen, ein Plattform-Team, 592 npm-Pakete, die gepatcht werden wollen

Unser Stack 3 Teile

HTML über SSE im selben Prozess ein Server · systemd Browser ein Go-Binary Seiten · Login · Jobs · Dateien eine SQLite-Datei laufend gesichert
  • Kein Frontend-Build, keine Kaltstarts, kein Vendor-Lock-in
  • Planbare Kosten: ein Server, kein Zähler
  • Klein genug, dass eine Person, oder ein Agent, alles versteht

Gemessen an unserem Kanban-Board: ein Binary von 13.5 MB und 28 MB Arbeitsspeicher im Ruhezustand, wo PLANKA 18 Prozesse in zwei Containern betreibt.

Diese Seite, live von ihrem Server

Diese Website ist so gebaut, wie wir es beschreiben: ein Go-Binary auf einem Server. Solange Sie zuschauen, schickt es Ihnen diese Zahlen einmal pro Sekunde, als HTML über einen komprimierten Stream.

Arbeitsspeicher (RSS)
…
Go-Heap
…
Goroutinen
…
Tabs, die zuschauen
…
CPU beim Start
…
CPU im Betrieb
…
Beantwortete Anfragen
…
Läuft seit
…
Ein Update: HTML → Leitung
…

Verbindet …

KI-Agenten

Ihre App, nutzbar aus jedem KI-Assistenten.

Ihre Kundschaft bittet ChatGPT und Claude längst, Arbeit zu erledigen. Wir bauen einen MCP-Server vor Ihre bestehende API, damit das auch mit Ihrem Produkt geht, und Sie bestimmen, was ein Agent lesen und schreiben darf.

KI-Agent Claude, ChatGPT, Copilot
Model Context Protocol
MCP-Server
Lese-Tools · Schreib-Tools nur im Schreibmodus · jede Änderung als Vorschau, bevor sie passiert
Ihre bestehende API
Ihre Anwendung

MCP-Server, die wir gebaut haben

  • 18 Lese-Tools über alle 376 Endpunkte der Buchhaltungs-API von CashCtrl, vier Schreib-Tools, die nur im Schreibmodus existieren und jede Änderung vorab zeigen.

    Open Source auf GitHub →
  • Unser SaaS für Fahrzeugkosten: 8 Tools zu Schweizer Fahrzeugdaten ohne Anmeldung, und 22 Tools für die eigene Garage hinter OAuth, darunter 14 Schreib-Tools. Jeder Aufruf landet im Audit-Log.

    libretto.ch →
  • 43 Tools, mit denen Agenten Websites verwalten: Inhalte in allen Sprachen, Dateien, Navigation, Link-Prüfung. Mit einem Lese-Schlüssel oder einer Schreibrolle ohne Löschrecht.

Claude · cashctrlBuchhaltung
  1. Welche Kundenrechnungen vom September sind noch offen?
  2. cashctrl list_open_invoices { type: "sales", from: "2026-09-01", to: "2026-09-30" } → 4 offene Aufträge
  3. Vier Rechnungen vom September sind offen, total CHF 4’180. Die älteste ist von der Meier AG, seit 12 Tagen fällig. Soll ich eine Mahnung erstellen?
  4. Ja, für die überfällige.
  5. cashctrl create_record { resource: "order", … } → Vorschau
  6. cashctrl zeigt eine Vorschau

    Mahnung an Meier AG über CHF 1’240.00, fällig in 10 Tagen. Geschrieben wird erst nach Ihrer Bestätigung.

    AblehnenBestätigen

    Bestätigt

  7. Die Mahnung ist in CashCtrl erfasst.

Illustration mit den echten Tools von cashctrl-mcp.

Claude · libretto-garageFahrzeuge
  1. Was steht bei meinen Autos an?
  2. libretto-garage upcoming → 2 Termine
  3. Zwei Termine: Die MFK des Saab 900 S ist am 19. Oktober fällig, die Abgaswartung des 530d am 3. Dezember.
  4. Heute Service am 530d, 221’150 km, 340 Franken: Öl und Filter.
  5. libretto-garage add_entry → eingetragen
  6. libretto-garage bittet um Bestätigung

    BMW 530d Touring xDrive: CHF 340.00 on 2026-09-22 (werkstatt): Service: Öl und Ölfilter [resets: oil]. Record this?

    AblehnenBestätigen

    Bestätigt

  7. Eingetragen. Das Ölwechsel-Intervall zählt ab heute neu.

Nachgespielt aus einer echten Sitzung mit der Demo-Garage von Libretto.

Claude · cmsWebsite
  1. Bitte den Kanban-Artikel veröffentlichen, auf Deutsch und Englisch, mit dem Titelbild.
  2. cms upload_file { folder: "upload/blog" } → 20261008-kanban-hero.jpg
  3. cms create_record { table: "blog", … } → id 3
  4. cms update_multilingual { lang: "de", … }, { lang: "en", … } → 2 Sprachen
  5. cms link_check → keine toten Links
  6. Der Artikel ist online, in beiden Sprachen und mit Titelbild. Die Link-Prüfung findet keine toten Links.

Nach einer echten Sitzung: So haben wir diese Woche einen Artikel veröffentlicht.

Leistungen

Vier Arten, wie wir mit Ihnen arbeiten.

01

Architektur-Audit

Ein bis zwei Wochen: Code-Review, ein Workshop und schriftliche Ergebnisse, woher Ihre Kosten und Ihre Komplexität kommen und was zuerst weg kann.

02

Vereinfachen & migrieren

Weg von Microservices, Serverless oder einem Hyperscaler, Schritt für Schritt, ohne Big-Bang-Rewrite.

03

Ihre App KI-bereit machen

MCP-Server, OpenAPI-Spezifikation, typisiertes SDK und ein Berechtigungsmodell, das Ihre Security abnehmen kann.

04

Agentische Entwicklung

Wir entwickeln mit Ihrem Team und Coding-Agenten und zeigen, wie die Qualität unter Kontrolle bleibt.

Fallstudien

Gemessen, nicht behauptet.

Drei eigene Projekte, mit Quellcode und Rohdaten auf GitHub.

Open Source

Der Ansatz, als offener Code.

Auch auf Packagist und npm

  • php-geobuf

    Geobuf, ein kompaktes Format für Geodaten, in PHP.

    43’822 Downloads · Packagist
  • php-ron

    RON in PHP: das Wertemodell von JSON mit leichterer Syntax, für Menschen und LLMs.

    2’108 Downloads · Packagist
  • datastar-attribute-on-keys

    Datastar-Plugin, das Tastenkombinationen an Aktionen bindet.

    1’284 Downloads · npm
  • datastar-attribute-prop

    Datastar-Plugin, das Element-Properties mit Signalen synchron hält.

    1’017 Downloads · npm
  • cashctrl-ts-sdk

    Typisierter TypeScript-Client für alle 376 Endpunkte der CashCtrl-API, mit OpenAPI-3.1-Spezifikation.

    689 Downloads · npm
Blog

Lange Texte, mit den Rohdaten.

Einwände

Berechtigte Fragen.

Was bringt uns das geschäftlich?

Tiefere Entwicklungskosten, weil es weniger Architektur zu bauen und synchron zu halten gibt. Tiefere Betriebskosten, weil ein Server viele nutzungsabhängig verrechnete Cloud-Dienste ersetzt. Schnellere Änderungen, weil Logik und Zustand an einem Ort liegen. Und eine planbare Performance, weil der Server bestimmt, wie viel er sendet.

Ist das nicht altmodisch?

Serverseitig gerendertes HTML ist, wie das Web angefangen hat. Neu ist, dass Updates über eine einzige SSE-Verbindung gestreamt werden: Die Seite fühlt sich live an, ohne dass Ihr Anwendungszustand in den Browser wandert.

Fühlt sich das ohne SPA nicht langsam an?

Wir haben es zweimal gemessen, auf einem Mittelklasse-Handy über langsames 4G. Unsere Version derselben Chat-App war 8.3-mal früher interaktiv als das Next.js-Original, und auf unserem Kanban-Board ist eine verschobene Karte nach 253 ms vom Server bestätigt, wo PLANKA, gebaut mit React, 712 ms braucht.

Skaliert SQLite?

Mit einem einzigen Writer ist die Performance fast nie das Problem. Alle Schreibzugriffe laufen nacheinander über eine Verbindung, warten also nie auf die Locks der anderen, und Lesezugriffe laufen daneben, ohne zu warten. Die Datenbank ist eine Datei neben der Anwendung, eine Abfrage kostet also keinen Netzwerk-Roundtrip. Was ein einziger Writer ausschliesst, sind viele Prozesse, die gleichzeitig schreiben, und die Architektur ist so gebaut, dass sie das nicht braucht. Der Writer unseres Kanban-Boards schafft rund 13’800 Verschiebungen pro Sekunde, wenn 200 Leute gleichzeitig Karten verschieben.

Was, wenn der eine Server ausfällt?

systemd startet einen abgestürzten Prozess innert Sekunden neu. Litestream kopiert jede Änderung etwa eine Sekunde später in einen Object Storage in der Schweiz, und ein täglicher Test-Restore prüft, dass die Kopie funktioniert. Fällt der Server selbst aus, stellt ein neuer die Daten beim Start wieder her. So läuft unser SaaS Libretto. Bis der neue Server läuft, ist die App offline. Für die meisten Geschäftsanwendungen ist das ein fairer Preis dafür, keinen Cluster zu betreiben; wenn nicht für Ihre, sagen wir Ihnen das, bevor wir anfangen.

Und Offline-First?

Für die meisten Geschäftsanwendungen ist es der falsche Standard. Offline-First heisst optimistische Updates: Der Browser zeigt ein Ergebnis, bevor der Server es angenommen hat, und muss es zurücknehmen, wenn der Server ablehnt. Damit wandert die Konfliktbehandlung in jeden Client. Wir lassen den Server entscheiden und zeigen ehrlich, was er bestätigt hat. Wo echtes Offline-Arbeiten unverzichtbar ist, ist eine native App das bessere Werkzeug.

Machen wir uns damit nicht von Ihnen abhängig?

Go, SQLite und systemd sind langweilig, offen und weit verbreitet. Der Code gehört Ihnen, und wer Go kann, kann ihn übernehmen.

Ist es sicher, einen KI-Agenten in unser System schreiben zu lassen?

Nur wenn Sie es so entscheiden. Unsere MCP-Server lesen standardmässig nur. Schreib-Tools gibt es nur im Schreibmodus, und jede Änderung wird als Vorschau gezeigt, bis jemand sie bestätigt.

Wird KI-geschriebener Code unwartbar?

In einer ausufernden Architektur schon. In einer kleinen Codebasis mit einem Binary und einer Datenbank kann ein Reviewer noch jede Änderung lesen, und genau darum geht es.

Porträt von Michael Bolli
Über uns

Problemlöser, keine Software-Fabrik.

Hinter der zwei und eins gmbh steht Michael Bolli. Seit über 20 Jahren baut und betreut er Web-Anwendungen, mit Fokus auf Architektur, Performance und Systeme, die wartbar bleiben.

Er arbeitet ohne unnötige Framework-Schichten, findet sich schnell in bestehende Systeme und Teams ein und pflegt Open-Source-Projekte wie nfsen-ng und php-via. Er ist auch Fotograf: Die Bilder auf dieser Website sind von ihm.

Aarberg, Schweizgithub.com/mbolliLinkedIn

Kontakt

Erzählen Sie uns, was zu kompliziert ist.

Wir verwenden Ihre Angaben nur, um Ihnen zu antworten. Datenschutzerklärung.

Lieber per E-Mail?