Kai Ole Hartwig
Reihe identischer matt-schwarzer Modul-Würfel mit gebürsteten Aluminium-Schildern auf Eichen-Werkbank, weiches Tageslicht von links.
01 — Open Source by Moselwal

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.

02 — AI & Content Intelligence

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.

Learn more
collab-rte

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.

Learn more
collab-presence

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).

Learn more
collab-core

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.

Learn more
content-distribution-receiver

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.

Learn more
content-distribution-source

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.

Open the docs
business-agent

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.

Open the docs
content-intelligence

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.

Open the docs
ai-workflows

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.

Open the docs
content-provenance

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.

Open the docs
semantic-delivery

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.

Open the docs
structured-content

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.

Open the docs
webmcp
03 — Infrastructure

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.

Learn more
frankenphp

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.

Learn more
cluster-file-backend

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.

Learn more
hocuspocus

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).

Open the docs
secret-resolver

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.

Open the docs
typo3-config

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.

Open the docs
keyvalue-store
04 — Erweiterungen

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.

Open the docs
GitLab Commands for Nextcloud Talk

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.

Open the docs
DoliGitlab

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.

Open docs
spec-kit-gitlab

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.

Open docs
sylius-agent-ready

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.

Open docs
sylius-agent-contracts

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.

Open docs
sylius-robots-txt

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.

Open docs
sylius-llms-txt

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.

Open docs
sylius-markdown

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.

Open docs
sylius-api-catalog

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.

Open docs
sylius-agent-skills

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.

Open docs
sylius-a2a

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.

Open docs
sylius-mcp

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.

Open docs
sylius-webmcp

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.

Open docs
sylius-mcp-oauth

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.

Open docs
sylius-auth-md

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.

Open docs
sylius-web-bot-auth

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.

Open docs
sylius-acp

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.

Open docs
sylius-ucp

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.

Open docs
sylius-mpp

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 docs
sylius-x402
Klarstellung

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.

Composer-installable. DDD-structured. deptrac-checked. Test-first.

All extensions follow the same engineering standards: 4-layer DDD architecture with deptrac enforcement, PHPStan level 8, PER-CS3x0, unit and functional tests. Published packages are on Packagist. Issues and contributions via the respective repository.

Nächster Schritt

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.

Request guidance

Oder direkt schreiben: mail@ole-hartwig.eu