Skip to content

kitloom vs Corcel: Eloquent models over WordPress, and the rest of the site ​

If you are a Laravel developer with a WordPress database in front of you, you have probably met Corcel. It does one thing and does it plainly: Eloquent models for WordPress's tables, so Post::published()->get() works in a Laravel app. kitloom starts from the same idea. The difference is everything that comes after the models: who edits the content, who answers the URLs, and what happens to WordPress.

What each one is ​

Corcel is a collection of model classes that read the WordPress database, built on Eloquent. Its README describes the intended setup: WordPress stays the back end, the admin panel where posts are written, and you use Laravel (or any PHP project) in front to create routes, views and controllers that fetch WordPress data through Corcel. It covers posts, pages, custom post types, taxonomies, attachments, revisions, options, menus and users. Meta can be read and written (saveMeta(), createMeta()). ACF fields come through a separate corcel/acf package. Shortcodes are registered in config and parsed by a shortcode library. A corcel user provider lets Laravel's Auth validate WordPress users. It is released under the MIT license.

kitloom is a Laravel CMS whose storage is the WordPress database. It has Eloquent models over the same tables, with Laravel names ($post->title, $post->field('price'), Settings::get()), and on top of them:

  • request handling the way WordPress does it: permalink settings, rewrite rules, the main query, canonical redirects and the template hierarchy;
  • writers (PostWriter, TermWriter, CommentWriter) that make slugs unique, fill dates and check what the acting user may do, with events other code listens to;
  • an admin in Filament 5 or Laravel Nova 5;
  • about 40 modules, many of which read a plugin's data in that plugin's own format;
  • themes in Blade, Vue or React, every page as JSON, and an MCP server for AI agents.

WordPress itself is retired. Its PHP does not run.

Side by side ​

Corcelkitloom
What it isA library of Eloquent modelsA CMS: models, site, admin, modules, themes
Where content livesThe WordPress databaseThe WordPress database
Who edits contentWordPress's admin, which keeps runningFilament 5 or Laravel Nova 5; WordPress is retired
URLsThe routes you write in your appWordPress's permalinks, rewrite rules and canonical redirects, read from the database; the same URLs answer
Users' passwordsA corcel auth provider validates WordPress users in LaravelA wordpress auth driver and hasher (phpass and WordPress 6.8's bcrypt); users sign in as before
Plugin dataMeta through the models; ACF through corcel/acfModules for ACF and Secure Custom Fields, Contact Form 7 and Flamingo, WooCommerce, Rank Math, LearnPress, Houzez, Listeo and others, with their admins and behaviour
WritingModels and meta methodsWriters with permissions and events; new arrays stored as JSON
Front endYours to buildBlade, Vue or React themes, or page JSON and the wp/v2 REST API
WordPress code still runningYes, as the admin, if you keep itNone
AI agents (MCP)None: it is a set of models, so an agent is something you buildBuilt in (kitloom/ai): Claude, Cursor or your own agent connects to /mcp and works on content, media, settings and every installed module, with the rights of the key's user; locked settings, nothing deleted for good, every change in the activity log
Price modelFree, MIT$149 for one site or $299 for unlimited sites, once, with 12 months of updates and a 14-day refund

When Corcel is the better choice ​

  • You only need to read WordPress data inside your own app. A Laravel application that shows the latest blog posts, a dashboard over WooCommerce data, an app that signs in WordPress users. Corcel is a small dependency for that, and kitloom would be far more than you need.
  • WordPress stays the CMS. If editors keep writing in wp-admin and WordPress keeps drawing most of the site, Corcel lets Laravel read alongside it. kitloom is not meant to share a database with a WordPress that keeps writing to it: kitloom writes new arrays as JSON, which WordPress does not read.
  • You are not on Laravel. Corcel works in any PHP project. kitloom needs PHP 8.4 and Laravel 13.
  • It has to be free and open source. Corcel is MIT. kitloom is a paid, commercial product.

When kitloom is ​

kitloom is for the case where the Laravel app is meant to become the site, and WordPress is meant to go:

  • An AI agent runs the site, under your control. kitloom ships an MCP server. Claude, Cursor or your own agent connects to /mcp and does the work: posts and pages, media, menus, SEO and redirects, form messages, the shop's products, orders and sales, bookings, courses, translations. It acts as the user whose key it holds, through the same code as the admin. An author's key writes drafts, a read-only key only reads, and the settings that decide who gets in or what code runs on every page are locked. Nothing is deleted for good, every change is in the activity log, and revoking the key stops it at once. See Run your site from Claude or Cursor.
  • Every URL has to keep working. Single posts, pages under pages, category and tag archives, date archives, author pages, pagination, search, the static front page, old slugs. With Corcel each of those is a route and a query you write. kitloom handles them the way WordPress does, from the site's own settings.
  • Editors need an admin. Without WordPress, Corcel leaves you with no place to write posts. kitloom brings one: posts, pages, media, menus, widgets, users and roles, plus each module's screens.
  • The plugins' data has to keep working, not just be readable. A Contact Form 7 form that still sends, Flamingo messages someone still reads, WooCommerce orders that can be refunded, Rank Math redirects that still redirect, LearnPress students who keep their progress. That is behaviour on top of the data, and in kitloom each of those is a module. Polylang and WPML sites are converted once. What is not read yet, such as Yoast SEO's meta (in progress), is listed on WordPress Compatibility.
  • Writes have to follow the rules. Unique slugs, dates, term counts, who may publish what, events that a cache or a search index listen to. In kitloom that is the writers' job, not each controller's.

Corcel and kitloom share a view of the problem: the WordPress schema is fine, it is the code around it that teams want to replace. Corcel replaces the read side. kitloom replaces the whole application.

Rehearsing the move ​

Because kitloom reads the database as it is, you can look at your site through it before deciding anything. Give it a MySQL user that may only SELECT, point it at the live database, and run the comparison script against the WordPress site. It reports, address by address, where status codes, redirects, titles, canonical tags, content or archive lists differ, and where a shortcode reached the page as text. See Look at your WordPress site in Laravel before you move it.

Try both ​

Corcel is on GitHub and installs with Composer.

For kitloom, open a sandbox in one click, no sign-up: Filament demo or Nova demo. Then follow Migrate from WordPress on your own data, starting read-only. Prices and the refund are on Pricing.

Last updated:

kitloom — modules and themes for Laravel.
Pricing · Services · License · Refunds · Privacy · Community · [email protected]