
Open source — the building blocks my platform runs on.
Open-source building blocks I use productively every day — the AI and content intelligence stack for TYPO3, the infrastructure extensions underneath it, eighteen Sylius bundles for agentic commerce, plus integrations for Dolibarr and Nextcloud. Composer-/module-installable, DDD-structured, with tests.
Why I build open source
I've been working with TYPO3 for over a decade — and in that time I've kept building the same missing pieces over and over. Instead of keeping them private, I publish them. That has three effects: my own projects get tested against public standards, I get improvement feedback from the community, and my customers have a clear vendor lock-out: every extension runs without me too.
collab-rte
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later
CKEditor 5 plugin for the TYPO3 backend that syncs the RTE live with other editors via Yjs CRDT. Connects to the Hocuspocus server. Early development.
collab-presence
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later
Presence and awareness layer on top of collab-core — live cursors and avatar pills in the TYPO3 backend via SSE stream, deterministic colour coding per editor. Early development.
collab-core
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later
Base layer of the Moselwal Collab Suite — JWT auth, Yjs document persistence, presence tracking and the REST API for real-time co-editing in the TYPO3 backend. Early development (v0.1.x).
content-distribution-receiver
TYPO3 14.x · PHP 8.3+ · Coming soon
Target side of the distribution line — receives signed snapshots, validates the signature, maps UUIDv7 onto the local ID space. Coming soon.
content-distribution-source
TYPO3 14.x · PHP 8.3+ · GPL-2.0-or-later
TYPO3-to-TYPO3 content distribution — source side. Pushes signed DAG snapshots from workspace publish to n downstream targets, with Ed25519 signatures and UUIDv7 references.
business-agent
TYPO3 13.4–14.0 · PHP 8.3+ · Open Source
Context-aware conversational agent with a RAG pipeline for TYPO3 content. Access-class routing (Public / Partner / Internal / Admin), MCP tool integration, embeddable chat widget.
content-intelligence
TYPO3 14.0+ · PHP 8.2+
Quality gates and compliance tracking for AI-generated content: AI-readiness score, brand voice consistency, freshness analysis, audit trail — with a backend dashboard.
ai-workflows
TYPO3 14.0+ · PHP 8.2+
Multi-step AI workflows as declarative YAML — with blocking/resume, expression resolution, swappable steps, and pluggable notifiers. The engine for everything that doesn't fit into a single prompt.
content-provenance
TYPO3 14.0+ · PHP 8.3+
Ed25519 signatures for content, cryptographically verifiable via /.well-known/provenance-keys. Audit-trail logging and EU AI Act preparation.
semantic-delivery
TYPO3 14.0+ · PHP 8.2+
Multichannel distribution with Schema.org enrichment. Transform content automatically for web, AI agents, voice, and social media posts — including direct connections to LinkedIn, X, and Bluesky.
structured-content
TYPO3 14.0+ · PHP 8.3+
AI context annotations (audience, tone, channels) cascade through the page hierarchy and are rendered as JSON-LD — the foundation for semantically clean platforms.
webmcp
TYPO3 13.4–14.0 · PHP 8.2+
Web Model Context Protocol server for TYPO3 — makes search, navigation, and page content accessible to AI agents via navigator.modelContext directly in the browser.
Infrastructure — the foundation underneath
Three extensions that don't directly relate to AI but form the foundation for everything I run — from caching and configuration through to secret resolution.
frankenphp
TYPO3 13.4–14.x · PHP 8.3+ · GPL-2.0-or-later
TYPO3 extension for FrankenPHP worker-mode integration. 103 Early Hints from the AssetCollector, REST-based cache invalidation against Caddy/Souin, PSR-14 auto-invalidation plus a backend module.
cluster-file-backend
TYPO3 14.3+ · PHP 8.5+ · MIT
Cluster-aware TYPO3 cache backend without a shared filesystem — drop-in replacement for FileBackend/SimpleFileBackend in Kubernetes. Metadata central (DB/Redis), payloads pod-local.
hocuspocus
Node 20 · TypeScript · GPL-2.0-or-later
Standalone Node WebSocket server for TYPO3 backend collaborative editing. Yjs plus Redis pub/sub for multi-instance sync, authenticates against collab-core via REST plus JWT. Early development.
secret-resolver
TYPO3 14.0+ · PHP 8.3+
Runtime secret resolution for containerised TYPO3 deployments. %secret(KEY)% syntax in site configs, with cascading lookup (KEY_FILE env → /run/secrets/ → env fallback).
typo3-config
TYPO3 11–14.0 · PHP 8.2+ · MIT licence
Fluent configuration API with context-based presets (Production, Development, CLI, Testing) and cascading secret resolution. TLS/mTLS discovery, mailer and logging helpers.
keyvalue-store
TYPO3 11.5–14.0 · PHP 8.2+ · PHPRedis 6.3+
Production-grade Redis/Valkey backend for TYPO3 — with Sentinel support, TLS/mTLS encryption, and distributed locking. Caching framework, sessions, and KV storage from a single source.
Extensions for other platforms
Two smaller packages outside the TYPO3 stack: a Dolibarr module that wires ERP/CRM into GitLab, and a Nextcloud Talk app that brings GitLab slash commands into the chat. Both MIT-licensed, both ready for self-service without a service pitch.
GitLab Commands for Nextcloud Talk
Nextcloud 30–32 · PHP 8.5+ · MIT
Nextcloud app that brings GitLab slash commands into Talk: issues, MRs, pipelines via chat. Per-user auth, AES-256-CTR encrypted tokens, app-based bot with no external webhook server required.
DoliGitlab
Dolibarr 20+ · PHP 8+ · MIT
Dolibarr ERP/CRM module with deep GitLab integration: bidirectional issue/ticket sync, time tracking, release browser, wiki viewer — all assigned per user, automated by triggers and cron.
spec-kit-gitlab
spec-kit · MIT
GitLab extension for spec-kit: automatically create user stories from spec.md as GitLab issues with labels, milestones and task links — via glab CLI.
Agentic commerce — the Sylius side
Seventeen bundles that make a Sylius shop usable for AI agents: discovery, agent authentication and the agentic commerce protocols. One package per protocol, each one usable on its own — if you only need llms.txt, you don't pull in any crypto dependencies. All MIT.
sylius-agent-ready
Sylius 2.0+ · PHP 8.2+ · MIT
Metapackage across the whole family — discovery, agent authentication and the commerce protocols in a single require. Registering the bundles, the routes and the firewall stays manual work.
sylius-agent-contracts
Sylius 2.0+ · PHP 8.2+ · MIT
The foundation: provider interfaces, registries and the channel-aware context. It ships no endpoint of its own — a class that implements one of the interfaces is registered automatically across the container.
sylius-robots-txt
Sylius 2.0+ · PHP 8.2+ · MIT
Channel-aware robots.txt with AI crawlers named explicitly and content signals. A wildcard group does not read GPTBot as a statement about itself — so every token gets its own.
sylius-llms-txt
Sylius 2.0+ · PHP 8.2+ · MIT
llms.txt as a map, not a catalogue. llms-full.txt is bounded twice, stops between entries rather than in the middle of one, and says that it stopped.
sylius-markdown
Sylius 2.0+ · PHP 8.2+ · MIT
Accept: text/markdown for the storefront. The Markdown is built from entity data through a template, not from rendered HTML — otherwise navigation, footer and cookie banner end up in the document.
sylius-api-catalog
Sylius 2.0+ · PHP 8.2+ · MIT
RFC 9727: the catalogue at /.well-known/api-catalog and the Link headers that advertise it. What gets listed is what the installed bundles register — without the package knowing them.
sylius-agent-skills
Sylius 2.0+ · PHP 8.2+ · MIT
The discovery index at /.well-known/agent-skills/index.json. The SHA-256 digest is computed over the document that is actually served, not configured — otherwise it goes stale with the first text change.
sylius-a2a
Sylius 2.0+ · PHP 8.2+ · MIT
The Agent Card at /.well-known/agent-card.json. The skills come from the shared registry — maintaining three copies by hand is the route by which they start contradicting each other.
sylius-mcp
Sylius 2.0+ · PHP 8.2+ · MIT
Shop tools for the MCP server plus the Server Card per SEP-1649. An agent learns the transport and the tool surface before it connects, instead of finding out by trial and error.
sylius-webmcp
Sylius 2.0+ · PHP 8.2+ · MIT
Registers shop actions as WebMCP tools in the customer's browser, so a page-bound agent can search on the page the customer is looking at. Deliberately read-only.
sylius-mcp-oauth
Sylius 2.0+ · PHP 8.2+ · MIT
OAuth 2.1 with dynamic client registration and mandatory PKCE, plus the RFC 8414 and RFC 9728 metadata. Access is delegated, never autonomous: a token always stands for an administrator.
sylius-auth-md
Sylius 2.0+ · PHP 8.2+ · MIT
/auth.md, assembled from the installed authentication methods. The same descriptors feed the agent_auth block of the OAuth metadata, so the two do not drift apart.
sylius-web-bot-auth
Sylius 2.0+ · PHP 8.2+ · MIT
The key directory at /.well-known/http-message-signatures-directory. Only the outbound half of the protocol: it lets others verify requests from this shop.
sylius-acp
Sylius 2.0+ · PHP 8.2+ · MIT
Agentic Commerce Protocol: a discovery document and an SKU-accurate product feed. The checkout is withheld by default — with age-restricted assortments the purchase has to happen where age can be verified.
sylius-ucp
Sylius 2.0+ · PHP 8.2+ · MIT
The discovery profile at /.well-known/ucp. It deliberately serves a superset, because the specification and discovery scanners expect different shapes and both occur in real clients.
sylius-mpp
Sylius 2.0+ · PHP 8.2+ · MIT
An OpenAPI 3.1 document at /openapi.json with x-payment-info on payable operations. The prices come from the same table that x402 enforces.
sylius-x402
Sylius 2.0+ · PHP 8.2+ · MIT
Answers a data route with HTTP 402 and the payment requirements an agent can meet. Off by default — never the storefront, never the checkout, never the discovery documents.
Open source vs. commercial extension
All extensions but one are open source and usable under a free licence. Only business-agent-pro is commercial and proprietary. The reasoning: the commercial variant contains channel adapters (WhatsApp Business, Twilio-based telephony, social media APIs) with ongoing third-party costs and responsibility. That was hard to deliver as a free OSS product without crippling the open-source variant.
My approach: business-agent stays fully functional, free and productively usable. If you need more channels, you can licence the Pro variant on top — or build your own channel adapter with my help.
One of the extensions matches your use case?
If you want to use one of the extensions yourself — free of charge, in your own TYPO3, with no contract with me — you'll find everything on the respective documentation page. If you want guidance (integration, custom extension, operations), get in touch.
Oder direkt schreiben: mail@ole-hartwig.eu