Skip to content

kitloom vs Pollora: WordPress inside Laravel, or a site that moves to Laravel ​

Search for Laravel and WordPress together and you will find Pollora and kitloom side by side. Both are installed with Composer into a Laravel 13 application, both read the WordPress database, and both draw the site with Laravel. They take opposite roads, though. Pollora keeps WordPress running inside Laravel, with its admin and its plugins. kitloom keeps WordPress's data and runs none of its code. Here is where each road leads, and which one fits your site.

What each one is ​

Pollora is a framework where a Laravel application runs WordPress. Composer installs WordPress core into public/cms, and Pollora loads it while Laravel boots, with Laravel's configuration and database connection. On each request WordPress starts with its active plugins and resolves the query, so its conditional tags work. The response is drawn by Laravel: your own routes first, then Route::wp() routes that match conditional tags (single, archive, /), then the template hierarchy rendered with Blade. The admin is WordPress's own at /cms/wp-admin/, with Gutenberg and the Site Editor. Post types, taxonomies, hooks, REST routes, typed meta and roles are declared with PHP 8 attributes (#[PostType], #[Action], #[Filter], #[Meta]) and found by auto-discovery. Media can live on any Laravel disk, S3 or R2 included. WordPress's models come from Colt, Pollora's fork of Corcel. It is MIT-licensed and free, and its version numbers follow Laravel's: v13.39 in October 2026.

kitloom is a Laravel CMS whose storage is the WordPress database. Point it at one and the same site answers at the same URLs, with the same users and their passwords, and with the plugins' data read in the plugins' own formats. There is no WordPress code inside: the request is handled the way WordPress handles it (permalinks, the main query, the template hierarchy), but by Laravel code. The models speak Laravel ($post->title, $post->field('price'), Settings::get()). On top of that it brings:

  • an admin in Filament 5 or Laravel Nova 5;
  • more than 40 modules, among them a shop, bookings, courses, listings, languages, SEO, redirects and forms;
  • 14 themes in Blade, Vue or React;
  • an MCP server, so an AI agent can run the site with the rights you give it.

Side by side ​

Pollorakitloom
What it isA Laravel framework that runs WordPressA Laravel CMS on WordPress's data model
WordPress code at run timeCore and every active plugin, on each requestNone
AdminWordPress's own (/cms/wp-admin/)Filament 5 or Laravel Nova 5, with the same modules in each
EditingGutenberg and the Site Editor; block themes workA visual editor; existing Gutenberg blocks are drawn, there is no block editor for new content
WordPress pluginsThey keep running as plugins; WooCommerce gets Blade templates from pollora/woocommerceThey do not run; modules read their data and take over their behaviour: ACF, Contact Form 7 and Flamingo, WooCommerce, Rank Math, LearnPress and others, with Yoast SEO and Redirection brought over by a command
Your own codeWordPress hooks, post types and REST routes declared with attributes; Laravel routes and controllers beside themLaravel all the way: Eloquent models, contracts, container tags and Laravel events (PostSaved, PostPublished); no hooks
Front endBlade with Sage Directives, Vite, Gutenberg blocks rendered with BladeBlade, Vue or React themes; every page as JSON, and the wp/v2 REST API
Speed, 13 typical pages, no page cache33.8 ms, 1.72× the same WordPress alone (19.6 ms in that run)18.3 ms with what a bare WordPress has (0.86×), 32.8 ms with every module and the admin (1.53×), against 21.4 ms for WordPress in that run
UpdatesWordPress core and plugins through Composerkitloom packages through Composer; no WordPress to update
AI agentsNectar, on Laravel Boost, gives the agent that writes your code guidelines, skills and MCP tools that read the environment; the separate MCP Connector plugin lets a client manage posts, media and menus over OAuthBuilt in (kitloom/ai): an 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
RequirementsPHP 8.4 for a new project, Laravel 13, WordPress 7.1, MySQL or MariaDBPHP 8.4, Laravel 13, a database: SQLite, MySQL or MariaDB
PriceMIT, free$149 for one site or $299 for every site you build, with a year of updates (then $75 or $149 a year); one admin per license, Filament or Nova
AgeSince October 2024, a small team, about 9,000 installsVersion 1 in October 2026, a small community

When Pollora is the better choice ​

  • A plugin you depend on has no kitloom module. WPML, Gravity Forms, a membership plugin, a page builder: under Pollora they keep running as they are, because WordPress is still there. kitloom reads the data of the plugins it has modules for and nothing else.
  • Your editors live in Gutenberg. The block editor, patterns and the Site Editor stay exactly as they are. kitloom draws the blocks a site already has, but new content is written in a visual editor, not in blocks.
  • You want to keep WordPress and write the code the Laravel way. Pollora's attributes and auto-discovery make post types, hooks and REST routes tidy PHP classes instead of a long functions.php, and Laravel's routing, Blade and testing come with them. If leaving WordPress is not the goal, that is a lot of comfort for nothing.
  • It must be free. Pollora is MIT. kitloom has no free edition: you see everything in the demos first, and there is a 14-day refund.

When kitloom is ​

  • An AI agent runs the site, under your control. kitloom ships an MCP server for the agent that does the site's work, not only the one that writes its code. Claude, Cursor or your own agent connects to /mcp, calls describe_site first, then works through the same code as the admin: create_content and update_content for posts and pages, upload_media, menu_save, product_save and orders_list, and the tools of SEO, redirects, forms, bookings, courses and translations. Ask it to "find the 404s from last week and redirect them to the closest page", or to "fill in the SEO descriptions of the products that have none". It acts as the user whose key it holds: an author's key writes drafts, a read-only key only reads. The settings that decide who gets in or what code runs on every page are locked, trash_content is the only way out of a record and restore_content brings it back, every change goes into the activity log, and revoking the key stops it at once. See Run your site from Claude or Cursor.
  • You want the site to be a Laravel application, not a WordPress one in a Laravel frame. With kitloom there is one framework at run time: one boot, one set of events, Eloquent and Laravel's queues and cache all the way down, and nothing of WordPress's PHP or its plugins' to patch. Under Pollora both frameworks start on each request, and it shows: on our benchmark's database, with the same Twenty Twenty-One theme as the bare WordPress, Pollora answers thirteen typical pages in 33.8 ms against WordPress's 19.6 ms and serves 0.6 times as many pages a second. In a later run on the same machine WordPress took 21.4 ms, and kitloom took 18.3 ms with what a bare WordPress has, serving 1.14 times as many pages a second, and 32.8 ms as the whole skeleton with every module and the admin, serving 0.66 times as many.
  • Your team works in Filament or Nova. The admin is the one they know, and a module's screens are ordinary Filament or Nova resources they can extend. With Pollora the admin stays wp-admin, and whatever you add to it is written the WordPress way.
  • The site sells, books or teaches. The shop, bookings, courses and listings are modules of the same product, tested together, with admins in Filament and Nova. Under Pollora each is a WordPress plugin with its own data model and its own updates.
  • The site is on WordPress now, and you want it to leave. Every URL keeps working, users keep their passwords, and the plugins' data keeps working, not just reads: a Contact Form 7 form still sends, WooCommerce orders can still be refunded, Rank Math's redirects still redirect. You can rehearse the move on the live database first. See Migrate WordPress to Laravel without moving the content.

Try both ​

Pollora is free: composer create-project pollora/pollora my-site and the setup asks for the database. Its documentation is at pollora.dev.

For kitloom, open a sandbox in one click, no sign-up: Filament demo or Nova demo. Connect an agent to it from the dashboard and give it something to do. 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.
Contact · Pricing · Services · License · Refunds · Privacy · Community · YouTube · [email protected]