Appearance
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
| Corcel | kitloom | |
|---|---|---|
| What it is | A library of Eloquent models | A CMS: models, site, admin, modules, themes |
| Where content lives | The WordPress database | The WordPress database |
| Who edits content | WordPress's admin, which keeps running | Filament 5 or Laravel Nova 5; WordPress is retired |
| URLs | The routes you write in your app | WordPress's permalinks, rewrite rules and canonical redirects, read from the database; the same URLs answer |
| Users' passwords | A corcel auth provider validates WordPress users in Laravel | A wordpress auth driver and hasher (phpass and WordPress 6.8's bcrypt); users sign in as before |
| Plugin data | Meta through the models; ACF through corcel/acf | Modules for ACF and Secure Custom Fields, Contact Form 7 and Flamingo, WooCommerce, Rank Math, LearnPress, Houzez, Listeo and others, with their admins and behaviour |
| Writing | Models and meta methods | Writers with permissions and events; new arrays stored as JSON |
| Front end | Yours to build | Blade, Vue or React themes, or page JSON and the wp/v2 REST API |
| WordPress code still running | Yes, as the admin, if you keep it | None |
| AI agents (MCP) | None: it is a set of models, so an agent is something you build | Built 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 model | Free, 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-adminand 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
/mcpand 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.