
Open Source — die Bausteine, auf denen meine Plattform läuft.
Open-Source-Bausteine, die ich täglich produktiv einsetze — der AI- und Content-Intelligence-Stack für TYPO3, Infrastruktur-Extensions darunter, Sylius-Bundles für Agentic Commerce, eine Integration für spec-kit, dazu Werkzeuge aus dem eigenen Betrieb. Composer-/Modul-installierbar, DDD-strukturiert, mit Tests.
Warum ich Open Source baue
Ich arbeite seit über einem Jahrzehnt mit TYPO3 — und habe in der Zeit immer wieder dieselben fehlenden Bausteine gebaut. Statt sie privat zu halten, veröffentliche ich sie. Das hat drei Effekte: meine eigenen Projekte werden gegen öffentliche Standards getestet, ich bekomme Verbesserungs-Feedback aus der Community, und meine Kunden haben ein klares Vendor-Lock-out: jede Extension läuft auch ohne mich.
collab-rte
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later · noch nicht veröffentlicht
CKEditor-5-Plugin für TYPO3-Backend, das den RTE per Yjs-CRDT live mit anderen Editoren synchronisiert. Verbindet sich mit dem Hocuspocus-Server. Early-Development.
collab-presence
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later · noch nicht veröffentlicht
Presence- und Awareness-Layer auf collab-core — Live-Cursor und Avatar-Pillen im TYPO3-Backend per SSE-Stream, deterministische Farbcodierung pro Editor. Early-Development.
collab-core
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later · noch nicht veröffentlicht
Basis-Schicht der Collab-Suite — JWT-Auth, Yjs-Document-Persistenz, Presence-Tracking und REST-API für Real-Time-Co-Editing im TYPO3-Backend. Early-Development (v0.1.x).
content-distribution-receiver
TYPO3 14.x · PHP 8.3+ · noch nicht veröffentlicht
Target-Seite der Distribution-Strecke — empfängt signierte Snapshots, validiert die Signatur, mapped UUIDv7 auf den lokalen ID-Space.
content-distribution-source
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later · noch nicht veröffentlicht
TYPO3-zu-TYPO3-Content-Distribution — Source-Seite. Pusht signierte DAG-Snapshots aus Workspace-Publish an n downstream-Targets, mit Ed25519-Signatur und UUIDv7-Referenzen.
content-intelligence
TYPO3 14.0+ · PHP 8.2+
Quality-Gates und Compliance-Tracking für KI-generierte Inhalte: AI-Readiness-Score, Brand-Voice-Konsistenz, Frische-Analyse, Audit-Trail — mit Backend-Dashboard.
ai-workflows
TYPO3 14.0+ · PHP 8.2+
Mehrstufige KI-Workflows als deklaratives YAML — mit Blocking/Resume, Expression-Resolution, austauschbaren Steps und pluggable Notifiers. Engine für alles, was nicht in eine einzelne Prompt passt.
content-provenance
TYPO3 14.0+ · PHP 8.3+
Ed25519-Signaturen für Inhalte, kryptografisch verifizierbar via /.well-known/provenance-keys. Audit-Trail-Logging und EU-AI-Act-Vorbereitung.
semantic-delivery
TYPO3 14.0+ · PHP 8.2+
Multichannel-Distribution mit Schema.org-Anreicherung. Inhalte automatisch für Web, AI Agents, Voice und Social-Media-Postings transformieren — inklusive direkter Anbindung an LinkedIn, X, Bluesky.
structured-content
TYPO3 14.0+ · PHP 8.3+
AI-Context-Annotations (Audience, Tone, Channels) cascaden durch die Page-Hierarchie und werden als JSON-LD ausgespielt — das Fundament für semantisch saubere Plattformen.
webmcp
TYPO3 13.4–14.0 · PHP 8.2+
Web Model Context Protocol Server für TYPO3 — macht Suche, Navigation und Page-Content via navigator.modelContext für KI-Agenten direkt im Browser zugänglich.
Infrastruktur — die Grundlage darunter
Extensions und ein Helm-Chart, die nicht direkt mit AI zu tun haben, aber die Grundlage für alles bilden, was ich betreibe — vom Caching über Konfiguration und Secret-Resolution bis zum Betrieb auf Kubernetes.
caddy-fs-s3cache
Caddy 2.11+ · Go 1.26+ · MIT
Caddy-Dateisystem für S3 mit lokalem Disk-Cache: ein GetObject pro kalter Datei statt drei, heiße Dateien von der Platte, Revalidierung per If-None-Match. Medien aus dem Bucket ohne FUSE-Mount.
typo3-fal-s3
TYPO3 14.3+ · PHP 8.5+ · MIT
FAL-Treiber für Amazon S3: fileadmin direkt im Bucket statt als Netzlaufwerk. Bestehende Speicher werden an Ort und Stelle umgestellt, Adressen bleiben gleich. Kein Zugangsschlüssel in TYPO3.
frankenphp
TYPO3 13.4–14.x · PHP 8.3+ · MIT
TYPO3-Extension für FrankenPHP-Worker-Mode-Integration. 103 Early Hints aus dem AssetCollector, REST-basierte Cache-Invalidierung gegen Caddy/Souin, PSR-14-Auto-Invalidierung plus Backend-Modul.
cluster-file-backend
TYPO3 14.3+ · PHP 8.5+ · MIT
Clusterfähiges TYPO3-Cache-Backend ohne Shared Filesystem — Drop-in-Ersatz für FileBackend/SimpleFileBackend in Kubernetes. Metadaten zentral (DB/Redis), Payloads pod-lokal.
typo3-async
Mails verlassen den Request: im Request gerendert, in eine Queue gelegt und von einem Consumer verschickt, mit drei Wiederholungen und einer Failure-Queue. Per Umgebungsvariable geschaltet, damit nie eine Queue ohne Leser entsteht.
hocuspocus
Node 20 · TypeScript · noch nicht veröffentlicht
Standalone-Node-WebSocket-Server der Collab-Suite — @hocuspocus/server plus Yjs plus Redis Pub/Sub für Multi-Instance-Sync. Authentifiziert sich gegen collab-core. Early-Development.
secret-resolver
TYPO3 14.0+ · PHP 8.3+ · GPL-2.0-or-later
Runtime-Secret-Resolution für containerisierte TYPO3-Deployments. %secret(KEY)%-Syntax in Site-Configs, mit cascading Lookup (KEY_FILE-Env → /run/secrets/ → Env-Fallback).
typo3-config
TYPO3 11–14.0 · PHP 8.2+ · GPL-2.0-or-later
Fluent Configuration API mit Context-basierten Presets (Production, Development, CLI, Testing) und cascading Secret-Resolution. TLS/mTLS-Discovery, Mailer- und Logging-Helpers.
keyvalue-store
TYPO3 11.5–14.0 · PHP 8.2+ · PHPRedis 6.3+
Production-grade Redis/Valkey-Backend für TYPO3 — mit Sentinel-Support, TLS/mTLS-Verschlüsselung und distributed Locking. Caching-Framework, Sessions, KV-Storage aus einer Hand.
crowdsec-bridge
TYPO3 14.3+ · PHP 8.5+ · CrowdSec 1.6+ · MIT
TYPO3-14-Backend-Modul für die CrowdSec Local API. Decisions anzeigen, IPs sperren und entsperren, Alerts inspizieren, LAPI-Heartbeat — alles ohne Container-Shell, mit Foreign-Origin-Schutz und vollständigem sys_log-Audit-Trail.
typo3-indexnow
TYPO3 14 · PHP 8.5+ · MIT
IndexNow für TYPO3 14. Neue, geänderte und zeitgesteuerte Seiten in Minuten bei Bing und den KI-Suchen. Schlüssel pro Host abgeleitet, nichts von Testsystemen oder geschützten Seiten.
fa4t3
TYPO3 14.x · PHP 8.5+ · MIT
Fathom Analytics direkt im TYPO3-Backend — Dashboard-Modul, Page-Analytics-Widget pro Seite und optionale Frontend-Script-Injection. Fathom setzt keine Cookies, deshalb braucht das Tracking kein Cookie-Banner.
typo3-kubernetes-chart
Helm · Kubernetes 1.30+ · Apache-2.0
Referenz-Helm-Chart für TYPO3 auf Kubernetes mit IT-Grundschutz-Härtung: signierter Code, read-only Container, mTLS, Default-Deny-Network-Policies und Secrets ohne Values-Datei. Klein genug, um es an einem Nachmittag zu lesen.
Erweiterungen für andere Plattformen
Außerhalb des TYPO3-Stacks: eine spec-kit-Extension, die User Stories aus der spec.md als GitLab-Issues anlegt. MIT-lizenziert und ohne Service-Pitch zum Selbst-Bedienen.
spec-kit-gitlab
spec-kit · MIT
GitLab-Extension für spec-kit: User Stories aus spec.md automatisch als GitLab Issues mit Labels, Milestones und Task-Verlinkungen anlegen — via glab CLI.
Werkzeuge aus dem eigenen Betrieb
Programme, die ich für den eigenen Betrieb gebaut habe: pinup hält Abhängigkeiten aktuell und ersetzt Renovate, yasrt schneidet Releases nach dem Build statt davor, s3mail liest Post, die Amazon SES in deinen Bucket legt, pod-cert-signer stellt Pods Zertifikate aus, mit dem CA-Schlüssel in AWS KMS. Die Go-Werkzeuge kommen als ein Binary ohne Laufzeit und mit signierten Releases. Dazu grundschutz-worksheets, ein Node-Skript ohne Abhängigkeiten für Grundschutz++-Prüfungen.
s3mail
Go · macOS, Linux, Windows, iOS · Apache-2.0
Mail-Client für Post, die Amazon SES in deinen S3-Bucket schreibt. Kein Server dazwischen, Postfach im Browser, iPhone-App dazu, für ein Modell erreichbar, aber ohne Senden.
yasrt
Go · GitLab, GitHub, Forgejo · Apache-2.0
Semantic Release ohne npm-Kette: entscheidet aus Conventional Commits, dein Build läuft, erst dann kommt der Tag. GitLab, GitHub und Forgejo mit dem Job-Token allein.
pinup
Go 1.27 · GitLab, GitHub · Apache-2.0
Dependency-Updates als ein statisches Binary: liest deine Renovate-Konfiguration, schreibt vor jeder Änderung einen Plan, der auch erklärt, was nicht passiert und warum, und öffnet Merge Requests auf GitLab und GitHub.
pod-cert-signer
Go · Kubernetes 1.37, AWS KMS · Apache-2.0
Signer für die Pod-Zertifikate von Kubernetes 1.37: Policy mit Default-Deny, Zertifikate mit einem Tag Laufzeit, der CA-Schlüssel bleibt in AWS KMS. Ersetzt Passwörter zwischen Diensten.
grundschutz-worksheets
Node 24+ · BSI Grundschutz++ (OSCAL) · MIT
Macht aus dem maschinenlesbaren Grundschutz++-Katalog des BSI Prüf-Arbeitsblätter und OSCAL-Dokumente: Profil, Komponentendefinitionen, Prüfergebnisse, SSP und POA&M. Dazu ungeprüfte Mappings von NIS2, der NIS2-Durchführungsverordnung, DORA, C5:2026 und SOC 2 auf Grundschutz++. Für den Abgleich deines ISMS mit dem laufenden System statt mit der eigenen Doku.
grundschutz-checks
Node 24+ · BSI Grundschutz++ (OSCAL) · MIT
Fünf Prüfungen, die Anforderungen aus Grundschutz++ an GitLab und TLS-Endpunkten messen: Branch-Schutz, Zwei-Faktor-Pflicht, TLS, SBOM und Abhängigkeits-Updates. Sie lesen nur und schreiben das Gesehene in eine Lauf-Datei für grundschutz-worksheets. Laufen sie jede Nacht, ergeben sie eine datierte Reihe pro Anforderung.
grundschutz-viewer
Go · BSI Grundschutz++ (OSCAL) · MIT
Zeigt den Grundschutz++-Katalog zusammen mit dem, was deine OSCAL-Dokumente dazu sagen: Profil, Sicherheitsplan, Prüfergebnisse und POA&M. Eine HTML-Seite ohne Server, offline lesbar. Aus mehreren Läufen wird ein Verlauf: pro Anforderung, was sich wann geändert hat.
Agentic Commerce — die Sylius-Seite
Bundles, die einen Sylius-Shop für KI-Agenten benutzbar machen: Discovery, Agent-Authentifizierung und die agentischen Commerce-Protokolle. Ein Paket pro Protokoll, jedes einzeln einsetzbar — wer nur llms.txt braucht, bekommt keine Krypto-Abhängigkeiten mit. Alle MIT.
sylius-agent-ready
Sylius 2.0+ · PHP 8.2+ · MIT
Metapaket über die ganze Familie — Discovery, Agent-Authentifizierung und die Commerce-Protokolle in einem require. Registrierung der Bundles, Routen und Firewall bleiben Handarbeit.
sylius-agent-contracts
Sylius 2.0+ · PHP 8.2+ · MIT
Das Fundament: Provider-Interfaces, Registries und der kanal-bewusste Kontext. Liefert selbst keinen einzigen Endpunkt — eine Klasse, die eines der Interfaces implementiert, wird containerweit automatisch registriert.
sylius-robots-txt
Sylius 2.0+ · PHP 8.2+ · MIT
Kanal-bewusste robots.txt mit namentlich genannten AI-Crawlern und Content Signals. Eine Wildcard-Gruppe liest GPTBot nicht als Aussage über sich — also bekommt jeder Token seine eigene.
sylius-llms-txt
Sylius 2.0+ · PHP 8.2+ · MIT
llms.txt als Landkarte, nicht als Katalog. llms-full.txt ist doppelt begrenzt, hört zwischen Einträgen auf statt mitten drin und sagt, dass es aufgehört hat.
sylius-markdown
Sylius 2.0+ · PHP 8.2+ · MIT
Accept: text/markdown für die Storefront. Markdown entsteht aus Entity-Daten über ein Template, nicht aus gerendertem HTML — sonst landen Navigation, Footer und Cookie-Banner im Dokument.
sylius-api-catalog
Sylius 2.0+ · PHP 8.2+ · MIT
RFC 9727: der Katalog unter /.well-known/api-catalog und die Link-Header, die ihn bewerben. Gelistet wird, was die installierten Bundles anmelden — ohne dass das Paket sie kennt.
sylius-agent-skills
Sylius 2.0+ · PHP 8.2+ · MIT
Der Discovery-Index unter /.well-known/agent-skills/index.json. Der SHA-256-Digest wird über das tatsächlich ausgelieferte Dokument berechnet, nicht konfiguriert — sonst veraltet er bei der ersten Textänderung.
sylius-a2a
Sylius 2.0+ · PHP 8.2+ · MIT
Die Agent Card unter /.well-known/agent-card.json. Die Skills kommen aus der gemeinsamen Registry — drei Kopien von Hand zu pflegen ist der Weg, auf dem sie anfangen, sich zu widersprechen.
sylius-mcp
Sylius 2.0+ · PHP 8.2+ · MIT
Shop-Tools für den MCP-Server plus die Server Card nach SEP-1649. Ein Agent lernt Transport und Tool-Fläche, bevor er sich verbindet, statt es durch Ausprobieren herauszufinden.
sylius-webmcp
Sylius 2.0+ · PHP 8.2+ · MIT
Registriert Shop-Aktionen als WebMCP-Tools im Browser des Kunden, damit ein seitengebundener Agent auf der Seite suchen kann, die der Kunde gerade ansieht. Bewusst nur lesend.
sylius-mcp-oauth
Sylius 2.0+ · PHP 8.2+ · MIT
OAuth 2.1 mit dynamischer Client-Registrierung und verpflichtendem PKCE, dazu die RFC-8414- und RFC-9728-Metadaten. Zugriff ist delegiert, nie autonom: ein Token vertritt immer einen Administrator.
sylius-auth-md
Sylius 2.0+ · PHP 8.2+ · MIT
/auth.md, zusammengesetzt aus den installierten Authentifizierungsmethoden. Dieselben Deskriptoren speisen den agent_auth-Block der OAuth-Metadaten, damit beide nicht auseinanderdriften.
sylius-web-bot-auth
Sylius 2.0+ · PHP 8.2+ · MIT
Das Schlüssel-Verzeichnis unter /.well-known/http-message-signatures-directory. Nur die ausgehende Hälfte des Protokolls: es erlaubt anderen, Requests dieses Shops zu prüfen.
sylius-acp
Sylius 2.0+ · PHP 8.2+ · MIT
Agentic Commerce Protocol: Discovery-Dokument und ein SKU-genauer Produktfeed. Der Checkout wird standardmäßig verschwiegen — bei altersbeschränktem Sortiment muss der Abschluss dort passieren, wo das Alter geprüft werden kann.
sylius-ucp
Sylius 2.0+ · PHP 8.2+ · MIT
Das Discovery-Profil unter /.well-known/ucp. Liefert bewusst ein Superset, weil Spezifikation und Discovery-Scanner unterschiedliche Formen erwarten und beide in echten Clients vorkommen.
sylius-mpp
Sylius 2.0+ · PHP 8.2+ · MIT
Ein OpenAPI-3.1-Dokument unter /openapi.json mit x-payment-info auf bezahlbaren Operationen. Die Preise kommen aus derselben Tabelle, die x402 durchsetzt.
sylius-x402
Sylius 2.0+ · PHP 8.2+ · MIT
Beantwortet eine Datenroute mit HTTP 402 und den Zahlungsanforderungen, die ein Agent erfüllen kann. Standardmäßig aus — nie die Storefront, nie der Checkout, nie die Discovery-Dokumente.
Eine Extension trifft deinen Use Case?
Wenn du eine der Extensions selbst einsetzen willst — kostenfrei, im eigenen TYPO3, ohne Vertrag mit mir — findest du alles in der jeweiligen Doku-Seite. Wenn du Begleitung willst (Integration, Custom-Erweiterung, Betrieb), sprich mich an.
Oder direkt schreiben: mail@ole-hartwig.eu