sala/console
Sala Console is a Laravel package for building and organizing custom console commands and interactive CLI workflows. It simplifies command registration and provides clean output helpers for everyday development tasks.
Framing correction that drives every decision below: this is not a Laravel package in the conventional sense. It ships no service provider, no Artisan integration, and no config/app.php hooks. It is a standalone Symfony Console 7 toolkit that borrows Illuminate components (Eloquent, DB::) and swaps Laravel Migrations for Phinx. Treat it as the CLI layer of the Sala framework, not as an add-on to an existing Laravel app.
Build vs. buy
serve, full Phinx migrate/rollback/status/breakpoint cycle, seeders, seven generators (controller, model, service, middleware, repository, view, migration), stub/config publishing, and a Tinker REPL. Realistically 2–4 engineer-weeks of scaffolding if built in-house, plus ongoing upkeep against Symfony Console 7 and Illuminate 12 churn.bin/console universal entrypoint (standalone, copied to project root, or via vendor/bin/console) with auto root-detection, .env loading, config/*.php loading, and Eloquent bootstrap is the genuinely defensible piece. That bootstrap code is tedious, subtly bug-prone, and rarely written well the first time. It is the strongest argument for adoption.Feature and roadmap decisions
composer.json rather than a per-project choice.bin/console bootstrap pattern instead of adopting the whole dependency.$app/$config preloaded, a db() helper bundling query builder plus DB::, Eloquent casters for Model and Collection, and per-project PsySH history in storage/psysh. Per-project history is a small detail with outsized effect on debugging velocity and onboarding. Worth calling out in your DX scorecard.Adoption sequencing decisions this enables
db:drop, db:export, migrate, rollback) until you have validated Phinx parity against whatever your team knows from Laravel Migrations. This is the sharpest operational edge in the package.Decisions this does not help with
Adopt when:
salaab/framework or a derivative. This is close to a no-brainer — it is the reference console for your own boilerplate.Look elsewhere when:
php ^8.4 — hard floor, no fallback. Shared hosting, older managed platforms, and conservative enterprise base images frequently lag. Confirm your deploy targets before this enters a composer.json.illuminate/* ^10|^11|^12 is a wide, three-major window. Wide ranges are convenient now and a compatibility minefield later, since the package must satisfy three Laravel majors' worth of internal API drift. Expect lag on Illuminate 13.Concrete gating criteria for a go decision: PHP 8.4 in production or staging today; no competing migration tool in the same repo; a named internal owner; and a two-sprint trial on a non-critical service that exercises migrate/rollback/breakpoint against a realistic schema before anything customer-facing.
One quality signal to weigh positively: Pest 3, Pint with the Laravel preset, and PHPStan level 5 are present from day one. That is above average discipline for an initial release and suggests the maintainer intends to keep it healthy. Level 5 is mid-tier, not strict — treat it as a good sign rather than a correctness guarantee.
To executives — one paragraph:
sala/consoleis a ready-made command-line toolkit for our Sala-based PHP services. It replaces roughly two to four engineer-weeks of scaffolding with a single Composer install, and it standardises how every new service is created, migrated, and seeded — which is where consistency across services actually comes from. The cost is one dependency line and a PHP 8.4 runtime requirement. The risk is maturity: this is a v1.0.0 from a small project, so we would adopt it behind a thin internal wrapper and validate the database commands on a non-critical service first.
To engineering — the honest brief:
bin/console bootstrap (root detection, .env, config loading, Eloquent wiring) that you would otherwise write by hand and get subtly wrong.$app/$config, a db() helper spanning the query builder and DB::, Eloquent casters, and per-project history under storage/psysh. Debugging and onboarding both get faster.composer require.db:drop, db:export, migrate, and rollback behind environment checks or a CI-only path. Never let db:drop be reachable from a laptop pointed at a shared environment.To the architecture or platform review — the framing that gets it approved:
Treat this as a tooling dependency, not a framework commitment. It touches the CLI and nothing else — no HTTP kernel, no container, no runtime path in production request handling. Exit cost is low: the only genuinely non-portable piece is the
bin/consolebootstrap, and even that is ~a day to reimplement. Adopt with a wrapper, pin the version, and re-evaluate when Illuminate 13 lands or when adoption stalls.
The one-line version for a roadmap deck:
Standardises how our Sala services are scaffolded and migrated; buys back weeks per new service; costs us a PHP 8.4 floor and a small-vendor continuity risk we can contain with a wrapper and a pin.
How can I help you explore Laravel packages today?