Eigenbetrieb
Eigene Infrastruktur in Deutschland und der Schweiz. Stack komplett quelloffen — Postgres, SQLite, Redis, MinIO, Hono, Bun, SvelteKit, Astro. Keine Managed-Services, keine proprietären Bauteile, kein Cloud-Anbieter, der morgen das Pricing dreht.
Eigenbetrieb ist die zweite Stufe der Unabhängigkeit. Die erste ist, unabhängig Software zu bauen. Die zweite ist, sie unabhängig zu hosten und zu warten. Auf eigener Hardware, mit eigenem Stack, ohne Cloud-Anbieter im Pfad zwischen uns und den Nutzer:innen.
Konkret: Ein Mac Mini steht in Deutschland, eine GPU-Workstation daneben. Auf dem Mini laufen ~100 Container — Postgres-Datenbanken, Redis-Instanzen, MinIO-Buckets, ~20 Plattform-Services, alle Vereins-Apps. Auf der GPU-Box läuft die KI-Inferenz, soweit sie sich selbst-hosten lässt.
Und der Werkzeugkasten dahinter ist genauso selbst-betrieben: Forgejo für Git, Verdaccio für npm, Stalwart für Mail, SearXNG für die Suche. Wo wir noch Drittpartei kaufen — Stripe, APNs/FCM, die LLM-Provider — nennen wir das ehrlich.
Diese Selbständigkeit ist anstrengend. Sie ist aber die einzige Form von Eigentum an einer Plattform, die wir wirklich kennen.
Was wir tun
- Mac Mini in Deutschland als Plattform-Server, RTX-3090-Workstation als GPU-Box
- Postgres, SQLite, Redis, MinIO — alles selbst gehostet, kein Managed-Service
- Forgejo statt GitHub, Verdaccio statt npmjs, Stalwart statt Postmark, SearXNG statt Google
- Cloudflared als einziger Außen-Tunnel — bewusst dokumentierte Abhängigkeit
- Backups lokal aktiv, off-site geplant — keine fremde Cloud im Daten-Pfad
Was wir nicht tun
- Keine US-Cloud (AWS, GCP, Azure) — auch nicht für „die unkritischen Teile"
- Keine Managed-Datenbanken, keine Vendor-Lock-In-SDKs
- Bewusste, dokumentierte Ausnahmen: Stripe (Bezahlung), APNs/FCM (Push-Channel), LLM-APIs (Anthropic/OpenAI/Gemini)
Was uns dieser Wert kostet
Jeder Wert hat einen Preis. Wir benennen ihn, damit Werte keine Floskeln werden.
- Selbst-Hosting heißt: wenn die Hardware ausfällt, fällt der Verein aus — Schweiz-Replikation ist offen
- Wir betreiben deutlich mehr Dienste, als ein gleich-großes Startup tun würde — On-Call ist real
- Manche „bequeme" Lösung (Managed-Postgres, Managed-Auth) müsste man kaufen und werden nicht gekauft
Wo dieser Wert konkret im Code steht
Diese Apps, Services und Pakete führen Eigenbetrieb ausdrücklich in ihrer Werte-Liste. Werte gewinnen erst, wenn sie sich an Bauteilen festmachen lassen.
- MemoroStimme aufnehmen, automatisch in Text verwandeln, sortieren und durchsuchen — für Notizen, Meetings, Interviews oder Tagebuch.
- WordeckFreie Karteikarten zum Behalten — über 50 fertige Decks gratis, Lernen im eigenen Tempo, und jede Karte kommt zurück, kurz bevor du sie vergisst.
- Was fehlt?Sag uns, welche Software dir fehlt. Wir werten aus, priorisieren und bauen das Tragfähigste.
- SeepulsDie erste Plattform, die den Bodensee als eine Region behandelt — über alle Anrainer hinweg, ohne nationale Trennlinien.
- Chorportal ThurgauGemeinsame Plattform für die Chöre des Kantons Thurgau — Repertoire, Noten, Übungs-MP3s und Setlisten an einem Ort, untereinander teilbar.
- Amana-authIdentität, Sessions und JWKS für alle Vereins-Apps — eine Anmeldung, lokale Token-Verifikation, kein Cloud-Auth-Anbieter.
- Amana-auth-webDas Anmelde-Portal als eigene Web-App — gemeinsame Login-Seite für alle Vereins-Apps mit App-spezifischem Branding.
- Mmana-meUser-globale Profil-Referenzen — welches Foto ist gerade dein Gesicht, welches dein Körper, über alle Apps hinweg.
- Cmana-creditsDie Geldbörse der Plattform — Mana-Guthaben, Stripe-Brücke, Buchhaltung, 2-Phase-Debit über alle Apps.
- AauraPrivater Anerkennungs-Ledger für Beiträge zum Ökosystem — sechs Botanik-Ränge, kleine reale Geschenke, kein Leaderboard.
- XxpGeplantes Lern- und Kompetenz-Backbone der Plattform — Skill-XP pro App, neun Intelligenz-Domains, globaler Level, opt-in-Portfolio.
- Smana-shareFöderations-Drehscheibe für Cross-App-Datentransfers — App-Manifeste, Routing, Retry-Queue, Audit-Log.
- Lmana-linksDeep-Link-Resolver — Apps registrieren ihre URI-Schemata, andere verlinken stabil quer durch das Ökosystem.
- Emana-eventsPlattform-Pub/Sub — Topic-basiertes Event-Bus mit At-least-once-Delivery, DLQ und Wildcard-Subscriptions.
- Mmana-mcpTool-Registry und MCP-Gateway — sammelt AI-Tools aus App-Manifesten und liefert sie an Claude-Clients per Model Context Protocol.
- Smana-searchFöderierte Aggregat-Suche — verteilt eine Anfrage über alle Apps eines Users und vereint die Ergebnisse.
- Lmana-llmEine Schnittstelle vor Anthropic, OpenAI, Gemini — ein Ort für API-Keys, ein Cost-Tracking, ein Audit.
- Smana-sttSelbst gehostetes Speech-to-Text via Whisper auf eigenem GPU-Server — Sprache verlässt die Vereins-Infrastruktur nicht.
- Tmana-ttsSelbst gehostetes Text-to-Speech auf eigenem GPU-Server — Vereins-Stimme statt Big-Cloud-Stimme.
- Imana-image-editsReference-basierte Image-Edits — Plattform-Service vor OpenAI gpt-image-2 und Gemini-Image-Edits.
- Mmana-mediaObjekt-Speicher für alle Vereins-Uploads — S3-kompatibles MinIO im Eigenbetrieb, Buckets pro App.
- Tmana-transcodeVideo-Transcoding-Worker — liest BullMQ-Jobs, läuft ffmpeg, schreibt 720p/480p/Poster zurück in mana-media.
- Gmana-geocodingAdresse ↔ Koordinaten — eigener Photon-Server zuerst, Public-Photon und Nominatim nur als Fallback.
- Rmana-researchWeb-Research-Orchestrator — 16+ Provider hinter einer Schnittstelle mit Auto-Routing nach Query-Typ.
- Smana-syncEvent-Store-Server für die Event-Sourced-Plattform — Append-only Event-Log pro User pro App, JWT-Auth via mana-auth.
- Pmana-presenceLive-State + SSE-Fanout — was läuft gerade auf welchem Gerät, bidirektional zwischen Phone und Web.
- Mmana-mailTransaktionale Email für die ganze Plattform — Welcome, Passwort-Reset, Spendenbescheinigung, alles über Vereins-Stalwart.
- Nmana-notifyPush-Versand für iOS, Android und Web-Push — Templates und Throttling zentral, keine Push-SaaS-Anbieter.
- Nmana-news-poolGeteilter RSS/JSON-Feed-Pool — kuratierte Quellen, die alle Apps gemeinsam lesen können.
- Amana-adminVereins-Backoffice — Mitglieder, Spenden, DSGVO-Fan-out, Einladungen, Aura-Ledger und Gift-Versand in einem Werkzeug.
- S@mana/shared-uiVereins-UI-Komponenten — Svelte 5 mit strikter 12-Token-Disziplin. Die UI-Foundation aller mana-e.V.-Apps.
- S@mana/shared-tailwindTailwind-Preset für alle Vereins-Apps — gemeinsamer Farb-Token-Satz, Spacing-Skala, Schriften-Stack.
- S@mana/shared-iconsPhosphor-Icon-Wrapper für alle Vereins-SvelteKit-Apps — einheitliche Icon-API, bundlebar pro App nur die genutzten.
- S@mana/shared-theme12-Token-Theming-Engine — pro App ein Theme, ein Token-Satz, eine konsistente Optik.
- S@mana/shared-brandingBrand-Assets der Vereins-Apps — Logos, Favicons, App-Icons, Footer-Bausteine. Eine Quelle für visuelle Identität.
- S@mana/shared-pwaPWA-Boilerplate für Vereins-Apps — Vite-Plugin, Theme-Bridge, Install-Banner, Update- und Offline-Komponenten.
- S@mana/shared-honoHono-Server-Foundation — JWT-Auth-Middleware, Health-Endpoints, Admin-Routen, Fehlerbehandlung. Jeder Server-Service nutzt das.
- S@mana/shared-drizzle-configDrizzle-ORM-Konfiguration-Factory für alle Vereins-Services — eine DB pro Service, schema-isoliert via pgSchema.
- S@mana/shared-loggerLogging-Foundation für Mobile- und Web-Apps der Plattform — strukturiert, kontextualisierbar, datenschutz-konform.
- S@mana/shared-typesGemeinsame TypeScript-Typen für das Vereins-Monorepo — Wissens-Brücke zwischen Services und Apps.
- T@mana/tsconfigGeteilte tsconfig-Bases — Web/SvelteKit und Hono+Bun-Server in zwei sauberen Voreinstellungen.
- S@mana/shared-app-tplHono-Helpers für föderierte Vereins-Apps — Manifest-Serving, Share-Receive-Router, Tools-Router, DSGVO-Export.
- Mmana/shared-goGo-Helpers für die wenigen Vereins-Services in Go — Auth, Env, HTTP-Middleware. Pendant zu shared-hono.
- S@mana/shared-share-protocolFöderations-Vertrag des Vereins — Manifest, Share-Envelope, Drag-Payload, Search-Result. Der eine Klasse-A-Vertrag, an dem alle Apps hängen.
- E@mana/event-kitEvent-Sourcing DSL und Codegen — definiert Schemas einmal, generiert TypeScript, Swift und Kotlin daraus.
- E@mana/event-syncWeb-Client für die Event-Sourced-Plattform — IndexedDB-Store + HTTP/WebSocket-Sync zu mana-sync.
- S@mana/shared-auth-ssoSvelte-5-Auth-Klient für das SSO-Cookie-Pattern — createSession, tryRefresh, buildLoginRedirect, AuthCallback.
- N@mana/notify-clientClient-SDK für den mana-notify Push-Service — eine Zeile pro App, statt OneSignal-Setup zu pflegen.
- S@mana/shared-researchGeteilte Typen und Provider-Interfaces für den mana-research Service — eine Schnittstelle vor 16+ Such-Providern.
- S@mana/shared-rssRSS/Atom-Parser plus Mozilla-Readability-Artikel-Extraktion plus Feed-Discovery. Pure-TypeScript ohne externe Dienste.
- S@mana/shared-mapCross-App-Karten-Komponente — MapLibre GL JS, PMTiles-ready, OpenStreetMap-Kacheln. Eine Karte für alle Vereins-Apps.
- S@mana/shared-key-grantHKDF-basierte Mission-Key-Grants — Apps bekommen per-Mission-Decrypt-Access, ohne den User-Masterkey zu sehen.
- M@mana/marketing-kitAstro-Marketing-Foundation für Vereins-Apps — AppLanding-Layout, Hero/Story/Feature/Stats/CTA-Komponenten, SEO/JSON-LD-Helper.
Wogegen Eigenbetrieb ansteuert — und was wir baulich dafür tun
Werte gewinnen erst gegen die Industrie-Logik, wenn sie sich an konkreten Problemen festmachen lassen — und an strukturellen Lösungenn, die sie tragen.
- Cloud-Energiehunger als SelbstzweckCloud-Wachstum dient zunehmend sich selbst — mehr Strom, um besser zu überwachen, um besser zu monetarisieren, um mehr Cloud rechtfertigen zu können.
- Cloud-Act — extraterritoriale US-Zugriffe auf europäische DatenSolange der Mutterkonzern dem US-Recht unterliegt, gibt es keine technische oder vertragliche Konstruktion, die einen Cloud-Act- Zugriff auf europäische Daten zuverlässig ausschließen kann.
- Eigenbetrieb auf einem Mac MiniSouveränität fängt damit an, dass jemand im Verein die Stromrechnung der Hardware kennt, auf der die Daten liegen.
- Local-First + Login-OptionalDas energie-effizienteste Rechenzentrum ist die CPU, die ohnehin schon in der Hosentasche liegt — und kein Konto ist die beste Privatsphäre.
- PWA vor Native — Web-App, wo es gehtEine gute PWA ist heute auf Android und Desktop praktisch ununterscheidbar von einer nativen App — ohne Apple/Google als Distributions-Mittler.
Was diesen Grundsatz weiter trägt
- Jetzt Mukke Vocal-Studio — GPU-Phase 2: echte Modelle statt Stubs Die vier GPU-Services für Mukkes Vocal-Studio (Stems, Music-Gen, Pitch, Mix) laufen seit KW 20 live als Stub-Implementierungen. Phase 2 ersetzt sie durch die tatsächlichen Modelle auf der RTX-3090-Workstation in Tägerwilen.
- Jetzt Memoro: Vorstand-Inbox + „An Verein senden"-Knopf Memoro bekommt ein Share-Pattern pro Aufnahme, mit dem Sprachnotizen an den Verein gesendet werden — entweder als privates Strategie-Werkstück (nur Vorstand sieht es, exportierbar als Markdown für das Sprachnotizen-Archiv) oder als öffentlicher Software-Wunsch (wird später von der Wunsch-App konsumiert). Damit wird Memoro der zentrale Sprach-Eingang des Vereins — konsistent mit der Origin-Story und Eat-Your-Own-Dogfood.
- Jetzt Software-Wunsch-App — Bedarfe sammeln, priorisieren, bauen Eine kleine, eigenständige App, in der Menschen aus der Region ihre Software-Bedarfe einreichen, beschreiben und gegenseitig bewerten können. Der Verein wertet aus, priorisiert und baut. Bewusst keine Memoro- Erweiterung — als eigenes, klar umrissenes Werkzeug ein Beweis dafür, dass gezielte Software für einen gezielten Use-Case schnell und sauber entstehen kann. MVP **live auf `wunsch.mana.how`** seit 2026-05-25.
- Bald Off-Site-Backup an einem zweiten CH-Standort Der lokale Backup-Cron läuft (18 DBs, 9 Container, 46 GB nightly) — das Off-Site-Spiegel-Bein fehlt aber noch. Ohne zweiten Standort ist ein Brand- oder Diebstahl-Szenario in Tägerwilen unrettbar.
- Bald Alte news.curated_articles-Tabelle droppen (~2026-06-17) In mana_platform liegen noch 25 717 Zeilen vom abgeschalteten news-ingester. Reine Hygiene-Aufgabe — keine App liest sie mehr. Recipe steht intern, nur Ausführung fehlt.
- Später SEPA-Lastschrift direkt — Stripe als bewusste Externe ablösen Stripe ist heute eine der drei bewusst akzeptierten externen Stellen. Der Ablöse-Pfad steht in der Landing-Sektion „Bewusste Externe": SEPA-Lastschrift direkt, ohne Payment-Provider zwischen Verein und Mitglied.
- Später On-Device-LLM für alle Apps — Anthropic/OpenAI/Gemini ablösen Die LLM-APIs (Anthropic, OpenAI, Gemini) sind heute die dritte bewusst akzeptierte Externe. Ablöse-Pfad: lokale Modelle, gestaffelt — Gemma/Mistral auf dem Gerät via mana-swift-llm, größere Modelle auf der eigenen GPU-Box.
- Später Web-Push (VAPID) — APNs/FCM für PWAs ablösen APNs und FCM sind die zweite bewusste Externe. Für PWAs (unsere Android- Primärlinie) lässt sich der Push-Channel mit Web-Push + VAPID direkt aus dem Server bedienen, ohne Apple oder Google im Pfad.
- Später Knoten-Mitglieder mit Compute beteiligen (Stufe 3) Heute können Knoten-Mitglieder Backup-Spiegel anbieten. Stufe 3 wäre, dass sie Compute-Lasten mittragen — verteilte Mac-Minis oder GPU-Boxen, die KI-Inferenz oder Echtzeit-Sync föderieren.