Open source · Release candidate · PHP 8.2+

Simple as WP. Built for the agent era.

A typed core that coding agents can extend, and a deploy story your client can still run.

Themes are schemas. Plugins declare what they touch. Content is JSON, not pasted HTML. Upload the zip on $5 shared hosting, or pull the Docker image — same architecture either way.

admin.typedock.local Security baseline
TypeDock admin dashboard screenshot
PHP 8.2+ Apache 2.0 SQLite / MySQL / PostgreSQL Server-rendered admin $5 shared hosting or Docker

Why TypeDock

A schema where WordPress had a free-for-all.

WordPress themes were full PHP and plugins could reach anywhere — and three years later, even the developer who wrote it is afraid to open the theme file. TypeDock keeps themes to Latte templates and CSS, gives plugins explicit extension points, and lets coding agents scaffold against a contract that a non-engineer can still run.

ThemesLatte templates and CSS only — no PHP, typed by theme.json for AI
PluginsManifest-declared extension points, iframe-isolated admin UI
ContentTiptap JSON — a clean AST, not pasted HTML
DeployZip + installer on $5 hosting, or Docker

Core capabilities

Built for publishing systems that need visible edges.

{content}

Content model

Pages, posts, revisions, scheduling, media, SEO, search, menus, slots, and author profiles.

{editor}

Block editor

Tiptap 3 stores structured JSON. Frontend output is rendered by TypeDock, not pasted HTML.

{auth}

Auth and RBAC

Sessions, API keys, TOTP 2FA, brute-force lockout, roles, and named permissions.

{plugin}

Drop-in plugins

Trusted PHP packages with manifest claims, provider checks, and iframe admin UI.

{theme}

Theme boundary

Themes render. Dynamic data moves through slots, components, and declarative fetch.

{source}

External sources

Read-only headless CMS mode for Contentful, GitHub Issues, and generic JSON APIs.

Shared-hosting friendly

$5 shared hosting. Or Docker.

The developer workflow can be modern. The deployment path can still be something a small-site operator can actually own — no SSH, no Node, no Composer required on the final host.

01Upload

Put the distribution zip contents on the server.

02Configure

Use the browser installer or generate config.php locally.

03Publish

Create the admin user, pick a theme, and start editing.

theme.json
"templates": {
  "home": {
    "fetch": {
      "latest_posts": {
        "source": "posts",
        "sort": "-published_at"
      }
    }
  }
}

Developer surface

A surface an agent can write against.

Components, slots, declarative fetch, plugin manifests, and driver-agnostic migrations give coding agents — and humans — a contract that stays legible as projects grow.

theme.json plugin.json Tiptap JSON {component} / {slot}

Project notes

Latest from the build.

Release candidate

A CMS an engineer can recommend without inheriting chaos.

View the repository