Eigenbetrieb
Eigene Infrastruktur in 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 der Schweiz (Tägerwilen TG), 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 der Schweiz (Tägerwilen TG) 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 Eigenbetriebausdrü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.
- NutriphiMahlzeit-Tracking mit KI-Unterstützung — per Foto, Text oder Sprachnachricht aus Memoro. Die App schätzt Nährwerte und führt deine Tagesziele mit.
- ComicelloAus deinem Text wird ein Comic — Tagebuch, Notiz oder Kalender-Event als Bild-Sequenz mit dir als Figur.
- MoodlitAmbient Lighting für jeden Moment — 24 Voreinstellungen, eigene Farben, verkettete Sequenzen, als Vollbild und auch ohne Account.
- rundumEinmal ums Objekt gefilmt — eine frei drehbare 3D-Szene, berechnet auf Vereins-Hardware.
- MukkeDeine Musik, dein Server — selbst-gehostete Library, persistenter Player, Studio für Lyrics-Sync mit Waveform.
- ViadocuDein eigener Bewegungs-Speicher — GPS-Spuren sammeln, Orte und Städte automatisch zusammenfassen.
- uLoadURL-Shortener mit eigenen Kurz-Codes, Click-Analytics und QR-Codes — Werkzeug-haft statt Linktree-Builder.
- Chorportal ThurgauGemeinsame Plattform für die Chöre des Kantons Thurgau — Repertoire, Noten, Übungs-MP3s und Setlisten an einem Ort, untereinander teilbar.
- SaldoEinnahmen, Ausgaben und Belege — privat und für die Selbständigkeit in der Schweiz. Rechnung fotografieren, der Rest füllt sich.
- LumeTourInteraktive, verzweigte Video-Touren — anschauen und selbst erstellen.
- StimmigSingen üben mit Rückmeldung in Echtzeit — die Stimme wird im Gerät ausgewertet und verlässt es nie.
- AudioguideHör-Touren selbst bauen: Stationen setzen, Texte einsprechen oder vertonen lassen, unterwegs am Ort abspielen.
- GalerieKunst, die man begeht — kuratierte Ausstellungen gemeinfreier Werke als 3D-Räume im Browser.
- GewebaEine Website aus Klartext bauen — jede Wandlung zeigt erst den Unterschied, jede Schicht bleibt von Hand editierbar.
- TipprundeEin Tippspiel für Freunde, Vereine und Klassen — ohne Geld, ohne Einsatz, ohne Quoten.
- WorldreamErfundene Welten als vernetzte Texte bauen — Figuren, Orte und Geschichten verweisen aufeinander, KI nur, wenn du sie rufst.
- Kulturdaten BodenseeBesucherzahlen der Museen zwischen Konstanz und Kreuzlingen — offene Daten, sichtbar gemacht über die Grenze hinweg.
- 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-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.
- Was öffentlich ist, liefern wir statisch ausFür Inhalte, die öffentlich sind und für alle gleich aussehen, ist statisches Vorab-Bauen langlebiger, ausfallsicherer und günstiger als ein dynamischer Server hinter jeder Seite.
- 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.
- Eigener App-Store — Android-Vertrieb in eigener HandAuf Android war der Vertrieb nie verschlossen — also betreiben wir ihn selbst, an Google vorbei, ohne Gatekeeper und ohne Gebühr.
Was diesen Grundsatz weiter trägt
- JetztMukke Vocal-Studio — GPU-Phase 2: echte Modelle statt StubsDie 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.
- JetztMemoro: Vorstand-Inbox + „An Verein senden"-KnopfMemoro 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.
- JetztSoftware-Wunsch-App — Bedarfe sammeln, priorisieren, bauenEine 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.
- BaldOff-Site-Backup an einem zweiten CH-StandortDer 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.
- BaldAlte 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äterEigener Android-Store: F-Droid-Repo + Direkt-APKDie Recherche zum App-Vertrieb hat die Richtung gesetzt: Auf Android bauen wir das souveräne Rückgrat selbst — ein selbst gehostetes F-Droid-Repo plus signierte Direkt-APK, an Google vorbei, in jedem Land nutzbar (auch der Schweiz). Bestehende Kanäle bleiben Reichweiten-Verstärker, die PWA der Default. Hier steht der Weg dorthin.
- SpäterSEPA-Lastschrift direkt — Stripe als bewusste Externe ablösenStripe 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äterOn-Device-LLM für alle Apps — Anthropic/OpenAI/Gemini ablösenDie 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äterWeb-Push (VAPID) — APNs/FCM für PWAs ablösenAPNs 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äterKnoten-Betreiber:innen mit Compute beteiligen (Stufe 3)Heute können Knoten-Betreiber:innen 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.