
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, integrations for Dolibarr and spec-kit, plus three Go tools from my own operations. 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 spec-kit extension that creates user stories from spec.md as GitLab issues. Both MIT-licensed, both ready for self-service without a service pitch.
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.
Tools — one binary, no runtime
Three Go programs I built for my own operations that need neither Node, Docker nor a database: pinup keeps dependencies current and replaces Renovate, yasrt cuts releases after the build instead of before it, s3mail reads mail Amazon SES drops into your bucket. Each with signed releases, each documented here.
s3mail
Go · macOS, Linux, Windows, iOS · Apache-2.0
Mail client for mail Amazon SES writes into your S3 bucket. No server in between, mailbox in the browser, an iPhone app alongside, reachable for a model but without sending.
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