Kalimera: From laravel new to a Production-Ready App in One Run
- Topic
- Laravel
- By
- Petro Lashyn
- Published
- Reading
- 7 min
An open-source interactive installer that takes you from laravel new to a fully configured, quality-checked app running in Sail — Pint, PHPStan, Rector, Vet, Horizon, Scout, Boost and an AI-agent guard included — in one guided CLI flow.
Last week I wrote about the Laravel ecosystem in 2026 and how easy it has become to get the framework ready for a production-ready app straight from your local machine. This is the follow-up: the tool I built so that step takes one command instead of an afternoon.
More ideas, more new projects
With Claude Code or Codex at hand, there are so many ideas circling around, and we can do so much with them: pet and fun projects, experiments, something genuinely helpful for internal or external processes, and of course real client work.
The number of times we go from an idea in our head to a new project on the local machine, with Claude Code wired up, has grown enormously. And each of those starts repeats the same routine.
By default, laravel new is already a very well-optimised starting point. But in practice there are always post-install steps:
- Static analysis and code style: Pint, Rector, PHPStan with Larastan, and now Laravel Vet.
- The ecosystem packages you nearly always need: Horizon, Scout, Fortify, Laravel AI.
- The packages you bring into every project. Many of us reach for Spatie's.
- Sail with PostgreSQL or MySQL and Redis, on ports that don't clash with the three other projects you already have running.
- Laravel Boost, configured for your agents, plus your own playbook of skills.
Doing all of this by hand each time is slow, and worse, it is never quite the same twice. So, for Laravel in particular, I automated it.
Kalimera ☀️
Kalimera is an open-source interactive installer that takes you from laravel new to a fully configured, quality-checked app running in Sail, in one guided CLI flow.
It is not a boilerplate. A boilerplate is a frozen copy of someone else's choices that goes stale: it is a snapshot of whatever was current the day it was made, and every project started from it inherits that day's decisions plus whatever manual setup nobody wrote down. Kalimera automates the initialization step itself. Every run gives you a fresh, current Laravel application, prepared the way you want it, the same way every time.
Getting started
You need PHP 8.4+, Composer, the Laravel installer, git and a running Docker daemon on your machine. Node.js is not needed on the host, because npm install runs inside the container.
composer global require welldigit/kalimera
Then, from the folder where your projects live:
kalimera new my-app
Before anything is installed, Kalimera checks that every tool it needs is there and that Docker answers, and stops with a clear message if something is missing. A few flags are worth knowing from day one:
kalimera new my-app --dry-run # print every command, execute nothing
kalimera new my-app --defaults # accept the preselected answers, no prompts
kalimera new my-app --continue # resume a failed run where it stopped
What one run does
It asks everything upfront. Starter kit (React, Vue, Livewire, Svelte or none), Sail services, PHP version, ecosystem packages, quality tools, additional packages, Boost agents and the GitHub repositories your skills live in. Then it shows a summary, asks for one final confirmation, and runs unattended. You can go and make a coffee.
It sets up Sail with your services and picks free ports. Host ports such as APP_PORT and FORWARD_DB_PORT are chosen right before they are bound, so parallel projects never clash.
It wires the quality tools from the first commit. Pint, PHPStan with Larastan, and Rector come with their configs and a set of composer scripts, plus an aggregate:
sail composer quality
That script starts green. The fresh skeleton is formatted with Rector and Pint, and the published stubs PHPStan would reject are repaired, with no baseline hiding anything.
It prepares Laravel Vet. Vet reviews the code of every package before it lands in vendor/. Kalimera records the trust file from the packages it just downloaded, so from then on each composer install, update or require shows you the code it is about to write and fails on a version nobody has read. Supply-chain attacks on package registries are no longer theoretical, and this is the cheapest moment to start taking them seriously.
It installs the ecosystem. Horizon, Fortify (skipped when the starter kit already ships it), Laravel AI with its config and conversations migration, and Scout with the database driver, so full-text search works on PostgreSQL or MySQL without an extra service.
It installs your package set. The built-in catalog is the Spatie collection: laravel-data, view models, query builder, backup, permission, activity log and translatable. Replace it with your own (more on that below).
It installs Laravel Boost for your agents. Pick Claude Code, Cursor, Codex, Copilot or others upfront, and Boost is installed with guidelines, skills and the MCP server, fully unattended. Then your own skills are pulled from GitHub, one repository at a time, and Boost is updated so the guidance is current rather than whatever the release bundled.
It adds an AI-agent guard. This is my favourite part. Kalimera publishes a small service provider that blocks destructive database commands (db:wipe, migrate:fresh, migrate:refresh, migrate:reset, migrate:rollback) whenever an AI agent is driving the app, exactly as they are already blocked in production. Detection comes from the agent detector that ships with new Laravel apps and recognises Claude Code, Cursor, Codex, Copilot, Gemini and others. An agent that "just resets the database to fix the migration" is a story most of us have heard by now; this makes it impossible by default.
Finally, it migrates, installs the frontend dependencies, generates the IDE helper files and makes the first commit.
Your preferred stack
Kalimera works with zero configuration: the built-in setup is the stack we use at Well Digit. To adapt it, drop a kalimera.config.json next to where you run it:
{
"preselected": {
"starterKit": "vue",
"sailServices": ["pgsql", "redis", "mailpit"],
"phpConstraint": "^8.4",
"boostSkillRepos": ["acme/boost-skills"]
},
"additionalPackages": [
{
"package": "spatie/laravel-medialibrary",
"label": "medialibrary — file attachments for Eloquent models",
"preselected": true
},
{
"package": "barryvdh/laravel-debugbar",
"label": "debugbar — in-browser debug toolbar",
"dev": true
}
]
}
preselected holds the default answer to every prompt, and it is exactly what --defaults installs. additionalPackages replaces the Spatie catalog with yours. Every file is validated on start, so a typo fails before anything is installed rather than halfway through. Commit the file to a shared repository and the whole team starts projects the same way.
Let the agent run it
The repository also ships an agent skill in the open Agent Skills format. With it, Claude Code (or Cursor, or Codex) becomes the prompt layer: it asks you Kalimera's questions in its own interface, writes the answers into a config file, runs the installer unattended with --defaults, verifies the result and resumes a failed run if it needs to. For Claude Code it is one symlink:
ln -s ~/.composer/vendor/welldigit/kalimera/skills/kalimera ~/.claude/skills/kalimera
So "start a new Laravel project for this idea" really can be the first message of a session.
Why bother
A good start compounds. A project that begins with static analysis green, packages vetted, conventions loaded into the agent and destructive commands guarded keeps more of that discipline for the rest of its life. A project that begins with "I'll add PHPStan later" usually doesn't.
Kalimera is MIT licensed. Have a look at kalimera.dev, the source on GitHub, or the project page. Issues and ideas are very welcome.
Kalimera means "good morning" in Greek. Good morning, fresh Laravel.
Thanks for reading.