Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Command Center Laravel Package

ssbityukov/filament-command-center

Filament plugin for running pre-approved Artisan and shell commands from your panel. Commands come only from an allow-list defined in config, database, or code — never free-form input. Supports per-command gates, queued runs with live output, run history, and CI validation.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Bottom line: This is a well-engineered, narrowly scoped Filament plugin with unusually strong internal quality signals for a 4-star package: 442 tests across PHP 8.3–8.5 and Laravel 12–13, PHPStan level 6, CI guard scripts that assert no shell-command construction exists in src/, a documented threat model, and an argv-based execution model. Those are meaningful controls for a package whose core function is executing commands from an admin panel.

It is also a high-blast-radius dependency with effectively no adoption evidence: 4 stars, 0 dependents, a single-maintainer risk profile, and no commercial support. A TPM should treat it as contained internal tooling, not a strategic platform dependency. The leverage is real—replacing ad-hoc SSH/Artisan access with a gated, audited, allow-listed self-service catalogue—but only if the organization accepts ownership of the allow-list, gates, audit retention, and upgrade review.

Architecture fit: Good fit for Laravel 12/13 applications already running Filament 5 on Linux/macOS. It is a panel plugin, not a framework-level concern. The design separates config, database, and custom command sources; supports synchronous and queued execution; and offers cache or database history. That maps cleanly to an internal ops/admin panel where support engineers need a small set of safe maintenance actions without shell access.

The architecture is deliberately constrained: commands must exist in an allow-list, user input becomes one argv element, and a token cannot become the binary or an option. For a TPM, that is the right shape for reducing “just SSH in and run it” risk. The package does not sandbox what a command does after launch, so architecture fit depends on the commands selected, not on the package alone.

Integration feasibility: Technically straightforward: composer require, register CommandCenterPlugin on the panel, publish config, define three gates, optionally publish migrations, and run command-center:check in CI. The hard parts are governance and environment fit, not installation. The package requires PHP 8.3+, Laravel 12 or 13, and Filament 5, and explicitly supports Linux and macOS only; Windows is untested and not claimed because Symfony’s process behavior differs there. That is a real constraint for mixed-estate teams.

The default config ships a starter allow-list including migrate, down, and up with confirmation. A TPM should not accept that default as a production baseline without review. The gates deny until the application defines them, which is a safe default but also a common “module is invisible” support issue.

Technical risk: The primary risk is privilege, not code quality. Anyone who can edit the allow-list—config write access or the database source table—can run anything the PHP process can. The database editor is the highest-privilege surface and should be treated as deploy access. The package documents this, but the organization must enforce it.

Secondary risks: single-maintainer bus factor; 0 dependents means little field validation; no browser suite; Windows unsupported; synchronous cancellation is largely ineffective because the cancel flag and the process run in different PHP processes; cancellation only notices between output chunks; cache history is capped, TTL-bounded, and erased by cache:clear; redact hides values from history but not from ps; and failed-to-start commands may surface as exit code 126/127 with diagnostics in output rather than an exception. The queued actor guard bug fixed in 1.0.2 is exactly the kind of panel-auth edge case that warrants post-upgrade verification in any custom-guard setup.

Key questions:

  • Which exact operational commands are in scope, and who owns approval of that allow-list?
  • Is the panel internet-facing, VPN-only, or behind SSO/2FA? What is the threat model for compromised admin accounts?
  • Do we need durable audit history, or is cache acceptable? If durable, who owns retention and pruning?
  • Do we need the database command editor, or can we stay config-only? If database source is enabled, who has write access to that table?
  • Are we Linux/macOS-only for the panel and queue workers? If not, this package is not a fit.
  • Which Filament panel auth guard is in use, and do queued jobs resolve the correct actor model?
  • Do we have a queue worker strategy and concurrency/rate-limit policy for long-running commands?
  • What is our upgrade cadence and exit plan if the maintainer stops releasing?
  • Can we fork under MIT if needed, and who would own that fork?
  • What commands must never be exposed regardless of gate, and how do we prevent config drift?

Integration Approach

Stack fit: Adopt only if the application is on Filament 5, Laravel 12/13, PHP 8.3+, and Linux/macOS runtime. If the team is on Filament 3/4 or an older Laravel, this is not a cheap backport; it is a new dependency with unknown compatibility. If the panel uses a custom auth guard, validate the 1.0.2 actor-resolution behavior before queued runs are enabled.

Migration path: The cleanest entry is from manual SSH/Artisan runbooks or custom admin actions, not from a competing command-center product. The package is a Filament port of farsidev/nova-command-center, so teams migrating a Nova admin surface to Filament may find the catalogue/run/history mental model familiar. Start with ConfigSource only. Defer DatabaseSource until config-only operations prove the workflow and the manage-commands gate has an owner. If audit matters, publish migrations and use the database history driver from the start rather than migrating cache history later.

Compatibility: Pin the package version and test the full matrix used by the application: PHP version, Laravel version, Filament version, panel guard, queue driver, and database. Verify command-center:check exits cleanly in CI. Do not enable shell mode unless a specific allow-listed definition requires it and security signs off. Do not assume Windows support. Confirm that the published migrations are acceptable in the deployment pipeline; they are optional and not auto-run.

Sequencing:

  1. Run a non-production spike with config-only commands, gates defined, and command-center:check in CI.
  2. Security review the allow-list, gate model, panel exposure, queue actor resolution, and secret-handling pattern.
  3. Define the three abilities and per-command abilities; default to least privilege and remove migrate/down/up from the starter set unless explicitly approved.
  4. Decide history driver. If durable audit is required, publish migrations, run them, and schedule command-center:prune.
  5. Enable queued execution only after worker auth guard behavior is verified; set timeouts and concurrency/rate limits per command.
  6. Roll out to a small admin cohort with runbooks, then expand command coverage only after audit review.
  7. Establish a quarterly dependency review and a fork/exit decision point.

Operational Impact

Maintenance: Low code footprint but non-zero ownership. The package is MIT and self-contained; updates should be pinned, reviewed, and tested against the panel’s auth guard and Filament version. The single-maintainer and 0-dependent profile means the organization must be prepared to fork or replace it if releases stall. The CI guard scripts and PHPStan level are positives, but they do not remove the need for internal review of every allow-list change.

Support: No commercial support. Documentation is above average for a package this size, with deep dives on configuration, sources, security, authorization, and queued execution. Operational support still depends on internal runbooks: who approves a command, who rotates gates, who prunes history, who investigates a failed run. The package’s own warning that a missing access gate makes the module invisible should be captured as a first-line support check.

Scaling: Execution scales with the web and queue workers, not with the package. Long-running commands should be queued; synchronous runs are for short maintenance actions and should not be used for operations that need cancellation. Concurrency and rate limits are per-command controls, so scaling is a configuration discipline. Database history grows with run volume and needs pruning; cache history does not scale as an audit trail and is erased by cache:clear.

Failure modes to plan for: gates undefined or misconfigured; database editor misused as a deploy surface; secrets exposed via ps despite redact; cache history lost; cancel ineffective on synchronous or silent commands; process start failure reported as exit 126/127; command templates failing on paths with spaces because splitting happens before substitution; queued actor resolution against the wrong guard; and Windows behavior diverging from Unix. Each needs an owner and a runbook entry.

Ramp-up: End users need little training: the UI is a catalogue with confirmation and output. The real ramp-up is for platform/admin engineers who own the allow-list, gates, history retention, and upgrade process. Budget a short pilot with one or two safe commands, a security review, and a documented approval workflow before calling it production-ready. A reasonable TPM framing is: pilot now if the stack matches and the command set is small; do not make it a platform-wide standard until adoption, maintainer continuity, and audit requirements are proven.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator