Pohono
v0.4.0 · Public testing Read the roadmap

WordPress without the WordPress.
TypeScript-native. Deployed to the edge.

01Import in one command
02Hooks → TypeScript
030 CVEs · 291 tests
04310 edge regions
01 · Why another CMS?

WordPress won for a reason. Then it aged.

WordPress powers a huge slice of the web because three things were right: a hook system any plugin could extend, a REST API with shapes that stay stable across decades, and a theme model agencies could own.

What aged badly is everything underneath — PHP, MySQL, the plugin-update security treadmill. Every WordPress site is one stale plugin away from an RCE.

Kept
Replaced
Hooks — addAction, addFilter
PHP → TypeScript
wp-json REST shapes
MySQL → Cloudflare D1
Themes + plugins + admin
Gutenberg → HTML / Markdown
02 · Migration is the product

Your site, moved in one command.

Most "WordPress alternatives" assume you're starting from zero. You aren't. You have 400 posts, 60 pages, 2 GB of media, WooCommerce products, custom fields, SEO redirects, and users who expect URLs not to break.

admin.pohono.dev / setup / source
Step 2 of 5
01Workspace
02Choose source
03Credentials
04Dry-run
05Commit

Where is your content coming from?

Four input formats. Pick the one your WordPress site can produce.

WXR
SELECTED

WordPress eXtended RSS

Standard wp-admin export. Posts, pages, comments, custom fields.

SQL
RECOMMENDED

mysqldump

Full fidelity including users, Woo orders, and taxonomy meta.

.ph
BETA

Pohonopack archive

Another Pohono instance. Slugs, redirects and IDs preserved 1:1.

EMPTY

Start fresh

No import. Scaffold an empty site with the starter theme.

pohono · setup · source

Four input formats. Pick the one your WordPress site can produce.

Dry-run mode ID map export Side-by-side verification report
~/my-site — bash
$ pohono migrate --source https://mysite.com --admin-user <u>
reading wp-json ................. ok
412 posts · 60 pages ............ ok
188 woo products ................ ok
2.1 GB media → R2 ............... ok
37 redirects generated .......... ok
✓ deployed to workers · 4m 12s
03 · The honest numbers

We are not pretending this is 1.0.

0
Automated tests passing
0
Open CVEs
<0ms
TTFB target, any geography
0
Plugins included

Public testing. Zero merchants running 30 days yet. That's the exit criterion for 1.0 — see the roadmap.

04 · Edge-first, not retrofitted

No PHP interpreter in wasm. No legacy assumptions.

Sub-100ms TTFB

Cached pages respond in under 100 ms from any region.

SQLite on the edge

Cloudflare D1 replicated to every Cloudflare region.

Zero cold starts

Workers isolate model, not containers.

No React on the frontend

Themes emit HTML strings. Readers don't download a bundle to see your homepage.

05 · Plugins, but typed

16 plugins included. Each one auditable in an afternoon.

Commerce
& essentials
WooCommerce SEO Custom Fields Forms
Operations
Security Redirects Mail Spam
Platform
Analytics Backup Duplicate i18n Membership
Premium scope
Gravity Forms Booking LMS Jetpack Search

Every bundled plugin is a typed TypeScript module. No reflection, no dynamic code execution, no serialized-array voodoo. Read the whole source in one sitting.

06 · Who it's for right now

You are probably the right kind of early adopter if…

For

  • You've been burned by a WordPress plugin CVE.
  • You're an agency prototyping on an internal site before a client rollout.
  • You'd rather write TypeScript than PHP.
  • You run WooCommerce on a host billing you for premium cache while your TTFB is 900 ms.

Not yet

  • Anyone who needs a visual page builder.
  • Anyone whose content is Gutenberg blocks. They're dropped during migration.
  • Anyone needing multi-site.
  • Anyone needing managed hosting.

Clone it. See for yourself.

no cookies · no newsletter · no tracking