---
title: "zwei und eins gmbh: einfachere Software, bereit für KI-Agenten"
description: "Schweizer Softwarearchitektur: Wir senken die Kosten überladener Web-Stacks und machen Ihre Anwendungen für KI-Agenten nutzbar."
url: https://zweiundeins.gmbh/de
language: de
---

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.

[Kontakt aufnehmen](https://zweiundeins.gmbh/de#contact) [Wie wir arbeiten](https://zweiundeins.gmbh/de#approach)

[**8.3×** schneller auf dem Handy · **27×** weniger Daten · **$20** im Jahr fürs Hosting · Dieselbe App, zweimal gebaut: zum Benchmark →](https://zweiundeins.gmbh/de/blog/spa-vs-hypermedia-performance-unter-realen-bedingungen)

[**Mein Stack ist zu teuer** · Cloud-Rechnungen, ein Plattform-Team, ein Frontend, das niemand anfassen will. Wir machen daraus einen Server und eine Datenbank.](https://zweiundeins.gmbh/de#approach) [**Meine App soll mit KI-Agenten arbeiten** · Ihre Kundschaft arbeitet mit Ihrem Produkt direkt aus Claude, ChatGPT oder Copilot, sicher.](https://zweiundeins.gmbh/de#llm-ready)

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

- Acht Rechnungen, die mit der Nutzung wachsen
- Ein eigenes Plattform-Team für den Betrieb
- 592 npm-Pakete, die gepatcht werden wollen

### Unser Stack 3 Teile

- Kein Frontend-Build, keine Kaltstarts, kein Vendor-Lock-in
- Planbare Kosten: ein Server zum Fixpreis statt Gebühren nach Nutzung
- Klein genug, dass eine Person, oder ein Agent, alles versteht

### Diese Seite, live von ihrem Server

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

[Unsere Prinzipien und die Einwände, die wir hören →](https://zweiundeins.gmbh/de/vorgehen)

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

- **cashctrl-mcp** · Buchhaltung
  
  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 →](https://github.com/zweiundeins/cashctrl-mcp)
- **Libretto** · Fahrzeuge
  
  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 →](https://libretto.ch)
- **PHP-CMS** · Website
  
  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.

**cashctrl-mcp: Buchhaltung**

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.
   
   Bestätigt
7. Die Mahnung ist in CashCtrl erfasst.

Illustration mit den echten Tools von cashctrl-mcp.

**Libretto: Fahrzeuge**

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?
   
   Bestätigt
7. Eingetragen. Das Ölwechsel-Intervall zählt ab heute neu.

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

**PHP-CMS: Website**

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.

Kollaborative App · Go

### [Ein Live-Kanban-Board, ohne Single-Page-App](https://zweiundeins.gmbh/de/blog/spa-vs-hypermedia-ein-kollaboratives-kanban-board-im-vergleich-mit-planka)

Mehrere Leute verschieben Karten auf demselben Board, gerendert auf dem Server: ein Go-Binary, eine SQLite-Datei, HTML über SSE. Gemessen gegen PLANKA (React, PostgreSQL) auf einem gedrosselten Handy.

27×

früher auf dem Bildschirm

2.8×

früher bestätigt verschoben

1

Prozess statt 18

Zu den Messungen →

KI-Chat-App · PHP

### [Dieselbe App, zweimal gebaut](https://zweiundeins.gmbh/de/blog/spa-vs-hypermedia-performance-unter-realen-bedingungen)

Wir haben Vercels Next.js-KI-Chatbot als serverseitig gerenderte Hypermedia-App nachgebaut und beide auf einem Mittelklasse-Handy über langsames 4G gemessen.

8.3×

schneller interaktiv

27×

weniger Daten beim Laden

33×

weniger Abhängigkeiten

Zu den Messungen →

Echtzeit-Multiplayer · php-via

### [Multiplayer-Game-of-Life, ohne App-JavaScript](https://zweiundeins.gmbh/de/blog/multiplayer-game-of-life-mit-php-und-sse)

Ein gemeinsames Spielfeld mit 2’500 Zellen, fünfmal pro Sekunde an alle gesendet, über einen komprimierten SSE-Stream, aus einem einzigen PHP-Prozess auf unserem Framework php-via.

~500×

Kompression im Stream

127 KB

für zwei Minuten Spiel statt 60 MB

0

Zeilen App-JavaScript

Spielen und nachlesen →

Open Source

## Der Ansatz, als offener Code.

### [lith](https://github.com/zweiundeins/lith)

Laufzeit für Go-Apps mit SQLite und Datastar: Ein Writer führt alle Schreibzugriffe nacheinander aus, jede geänderte Ansicht wird einmal pro Tick für alle gerendert, die sie offen haben, und geht komprimiert über SSE hinaus. Auch diese Website läuft darauf.

Go · SQLite · Datastar

### [starbase](https://github.com/zweiundeins/starbase)

Galerie von Datastar-Webkomponenten. Go, templ, SQLite, CQRS: der Stack, den wir empfehlen, von vorne bis hinten.

Go · 31 Sterne

### [kanban](https://github.com/zweiundeins/kanban)

Kollaboratives Kanban-Board: ein Go-Binary, SQLite, Datastar. Gemessen gegen PLANKA, mit allen Skripten und Rohdaten.

Go · Fallstudie

### [cashctrl-mcp](https://github.com/zweiundeins/cashctrl-mcp)

MCP-Server für die Schweizer Buchhaltung CashCtrl. 376 Endpunkte, nur lesend ausser im Schreibmodus, Änderungen mit Vorschau.

TypeScript · MCP · 79 Downloads

### [nfsen-ng](https://github.com/mbolli/nfsen-ng)

Responsiver NetFlow-Visualisierer auf Basis von nfdump. Unser Projekt mit den meisten Sternen.

PHP · 283 Sterne · 25k Docker-Pulls

### [php-via](https://github.com/mbolli/php-via)

Echtzeit-Engine für reaktive Web-Apps in PHP, auf Swoole und Datastar. Treibt das Game of Life aus unserem Blog an.

PHP · 90 Sterne · 755 Downloads

### [ai-chatbot](https://github.com/mbolli/ai-chatbot)

Vercels Next.js-KI-Chatbot, nachgebaut in PHP mit Swoole und Datastar: die App hinter unseren Messungen, mit den Rohdaten.

PHP · Fallstudie

### Auch auf Packagist und npm

- [php-geobuf](https://packagist.org/packages/mbolli/php-geobuf)
  
  Geobuf, ein kompaktes Format für Geodaten, in PHP.
  
  43’934 Downloads · Packagist
- [php-ron](https://packagist.org/packages/mbolli/php-ron)
  
  RON in PHP: das Wertemodell von JSON mit leichterer Syntax, für Menschen und LLMs.
  
  2’777 Downloads · Packagist
- [datastar-attribute-on-keys](https://www.npmjs.com/package/@mbolli/datastar-attribute-on-keys)
  
  Datastar-Plugin, das Tastenkombinationen an Aktionen bindet.
  
  1’285 Downloads · npm
- [datastar-attribute-prop](https://www.npmjs.com/package/@mbolli/datastar-attribute-prop)
  
  Datastar-Plugin, das Element-Properties mit Signalen synchron hält.
  
  1’017 Downloads · npm
- [cashctrl-ts-sdk](https://www.npmjs.com/package/@zweiundeins/cashctrl-ts-sdk)
  
  Typisierter TypeScript-Client für alle 376 Endpunkte der CashCtrl-API, mit OpenAPI-3.1-Spezifikation.
  
  690 Downloads · npm

[Alle Projekte auf GitHub →](https://github.com/zweiundeins)

Blog

## Lange Texte, mit den Rohdaten.

Technik im Detail · 20. Oktober 2026 · 19 Min. Lesezeit

### [lith: Die Laufzeit unter unseren Go-Apps](https://zweiundeins.gmbh/de/blog/lith-die-laufzeit-unter-unseren-go-apps)

lith ist die Open-Source-Laufzeit unserer Multiplayer-Apps in Go, SQLite und Datastar: ein Writer, ein Render pro Tick, komprimierte HTML-Streams, gemessen.

Fallstudie · 8. Oktober 2026 · 13 Min. Lesezeit

### [SPA vs. Hypermedia: Ein kollaboratives Kanban-Board im Vergleich mit PLANKA](https://zweiundeins.gmbh/de/blog/spa-vs-hypermedia-ein-kollaboratives-kanban-board-im-vergleich-mit-planka)

Ein Kanban-Board, auf dem mehrere Leute gleichzeitig Karten ziehen, komplett auf dem Server gerendert und auf einem gedrosselten Handy gegen PLANKA gemessen.

[Alle Artikel →](https://zweiundeins.gmbh/de/blog)

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.

[Alle Prinzipien und Einwände →](https://zweiundeins.gmbh/de/vorgehen)

![Porträt von Michael Bolli](https://zweiundeins.gmbh/s/gen/img/michael-359.d0f1641efb.webp)

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

Aarberg, Schweiz · [github.com/mbolli](https://github.com/mbolli) · [LinkedIn](https://linkedin.com/in/mbolli)

Kontakt

## Erzählen Sie uns, was zu kompliziert ist.

### Lieber per E-Mail?

- [info@zweiundeins.gmbh](mailto:info@zweiundeins.gmbh)
- zwei und eins gmbh  
  Kistlerweg 1  
  3270 Aarberg
