stepanenko3/nova-command-runner
Run Artisan commands directly from Laravel Nova. This Nova tool adds a command runner panel where you can execute and manage artisan commands without leaving your admin dashboard, with output display and a simple interface for developers and admins.
Architecture fit
The package is a Laravel Nova tool — the canonical, supported extension point for adding functionality to Nova's admin SPA. It sits as a thin layer: a Composer package, a service provider, a tool registration in NovaServiceProvider, a Vue component, and a backend controller that shells out via Symfony Process. There is no data model, no queue integration, and no background worker. That is architecturally clean for its purpose and imposes almost no structural constraint on the host application.
The fit is conditional on two things being true already: you run Nova 4 or higher (Nova is a paid, per-site licensed product — this package is worthless without it), and you accept that the tool's core function is remote command execution from a browser session. The second condition is the entire evaluation. Everything else is a one-day install.
Integration feasibility
Composer install, register the tool, publish config and assets, define the command surface. Realistic engineering effort for a working install: half a day to two days. The real cost is the security and change-management review, which is measured in days-to-weeks depending on your compliance posture, not hours. Note that with 36 stars and zero dependents, there is no ecosystem validation — no third party has stress-tested edge cases on your behalf.
Technical risk
Key questions to resolve before adoption
Stack fit
Requires an existing Laravel application on Nova 4+, PHP 8.1+. Pure Composer install; no database migrations expected, no queue or scheduler dependency. Frontend assets are typically pre-built in the package, so no npm toolchain requirement on the host. It coexists cleanly with Forge, Envoyer, GitHub Actions, or whatever deploy pipeline you already run — it does not replace any of them.
Migration path
This is an additive capability, not a migration. The decision to sequence is not "how do we move off X" but "which of our existing SSH-and-terminal workflows do we deliberately allow through the browser, and which do we explicitly forbid." Write that policy before you composer require. The most common failure here is adopting it as a convenience shortcut and discovering six months later that mutating production operations happen outside your audit trail.
Compatibility
Pin the version explicitly. Verify three constraints before install: Nova major version alignment, PHP constraint, and that no other Nova tool in your install registers conflicting routes or dashboard panels. Because it is a UI-layer tool, breakage on a Nova upgrade is likely to be cosmetic-then-fatal (blank tool panel) rather than data-destructive — but it will happen silently on a routine composer update unless pinned.
Sequencing
Maintenance
You are buying a dependency with one maintainer and no dependents, which means no crowd-sourced bug discovery and no implicit upgrade pressure. Assume you may need to fork and vendor it. Budget a named owner and a review cadence (semiannual, plus on every Nova major). If it becomes load-bearing for incident response, the fork is no longer hypothetical — plan for it early.
Support
Community issues only; no SLA, no vendor escalation. Write an internal runbook covering install, allowlist changes, and rollback (removing the tool registration is a safe, immediate kill switch — document that as the incident lever).
Scaling
Each invocation occupies one PHP request. Long-running commands consume PHP-FPM workers, reduce capacity for real user traffic, and have no concurrency control — two engineers can launch the same destructive command simultaneously. This package does not scale as a job runner and should never be used as one. Anything over ~30 seconds belongs in a queue or CI.
Failure modes
.env, no SSH agent, different PHP binary. Commands that work in your terminal fail here, often confusingly.storage/, bootstrap/cache, or log files under the web user.Ramp-up
Adoption friction is near zero — the Nova UI is familiar and the tool is a single panel. Training effort is not about the tool but about the policy: who has access, what is on the allowlist, when to use SSH or CI instead, and how to log an invocation in the incident timeline. That is a 30-minute briefing plus a written policy, not a training program.
Bottom line for a TPM: the integration cost is trivial and the operational cost is not. Approve this only with a command allowlist, a dedicated authorization gate, independent audit logging, and a read-only-only production scope. If the source review in phase 1 cannot confirm allowlisting and audit logging, the correct decision is to decline or to fork it and add those controls yourself — a 36-star package should not be the boundary between your admin panel and a production shell.
How can I help you explore Laravel packages today?