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

Nova Command Runner Laravel Package

guratr/nova-command-runner

Run Artisan commands directly from Laravel Nova. This package adds a command runner to your Nova dashboard, letting you execute and monitor artisan commands without leaving the admin panel. Quick to install and configure, it streamlines maintenance and deployment tasks for Laravel developers.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is a Nova tool (ServiceProvider + tool class + Vue components) that surfaces php artisan commands in the Nova admin UI. It slots into the existing Nova service provider pattern with no host-app rewiring, so architectural fit is high if Nova is already the internal ops surface.
  • Execution almost certainly goes through Laravel's Artisan::call() / Symfony\Process in the web request lifecycle. That is a synchronous, in-process model — it inherits PHP-FPM max_execution_time, web server timeouts, and memory limits. Architecturally fine for short idempotent commands (cache:clear, queue:restart, route:list), unsuitable for long-running or interactive commands.
  • Authorization is delegated to Nova's tool-level canSee/gate mechanism. This is coarse — it gates the whole tool, not individual commands. Command-level least-privilege is not a first-class feature, which is the central architectural gap for a TPM.

Integration feasibility

  • Low friction: composer require, register the tool in NovaServiceProvider::tools(), publish config if present. Estimate 0.5–1 engineer-day for a staging POC.
  • Real constraint is the compatibility matrix: Nova is a paid, fast-moving product (v4 → v5 changed tool scaffolding and front-end conventions). A 43-star community package has a narrow tested range. Expect to pin both Nova and Laravel minor versions until verified.
  • Requires a Nova license line item and an existing operational admin surface — this is not usable in a non-Nova Laravel app.

Technical risk

  • Arbitrary command execution over HTTP is the dominant risk. Mitigations must be layered: Nova gate restricted to a small allowlisted operator group, IP/SSO restriction at the edge, command allowlist rather than denylist, CSRF (Nova provides), and immutable audit logging of who ran what and when.
  • Destructive commands (migrate:fresh, db:wipe, queue:flush, config:clear in prod) are one misclick from an incident. Assume no built-in confirmation guardrails unless verified.
  • Output handling: long output can blow response buffers or truncate; streaming behavior is unverified.
  • Supply chain: MIT, small maintainer footprint, 43 stars — treat as low-bus-factor. Vendoring/forking is the realistic long-term posture. Opportunity score of 1.89 corroborates weak ecosystem pull.

Key questions to resolve before adoption

  1. Which Nova and Laravel versions are explicitly supported, and is CI matrix-tested?
  2. Is there a command allowlist/denylist, or does it enumerate all registered commands?
  3. Synchronous only, or does it support queued execution with job tracking?
  4. How is the invoking user captured for audit, and is there a persisted run history?
  5. Is output streamed, buffered, or truncated?
  6. What is the maintainer's release cadence and responsiveness to Nova major bumps?

Integration Approach

Stack fit

  • Target stack: Laravel 10/11 + Nova 4/5, PHP 8.1+. Fit is good for teams already running Nova as the internal back office; poor for anyone without Nova (license cost + surface area for marginal benefit).
  • Position it as an operator convenience tool for a named, small group (platform/SRE), not a general developer or support-facing feature.

Migration path

  • No data migration expected (config-only publish). Introduce behind a feature flag / Nova tool toggle so it can be disabled without a deploy.
  • Fork-and-vendor recommended over direct composer require in production if the risk review flags abandonment: pin to a tag, vendor into a private registry, retain the ability to patch.

Compatibility

  • Freeze a tested trio: Nova version, Laravel version, PHP version. Add a CI smoke job that boots the tool and lists commands on upgrade to catch breakage early.
  • Validate against staging with production-shaped config; Nova tool behavior can differ under APP_ENV=production gates.

Sequencing

  1. Discovery (2–3 days): source review of authorization, command enumeration, execution model; answer the key questions above.
  2. Staging POC (1 week): install, restrict gate, wire audit logging, test 5–10 benign commands and one deliberately destructive command against a throwaway DB.
  3. Hardening: command allowlist, SSO/IP restriction, run-history table (own it, don't rely on the package), alerting on destructive-command invocation.
  4. Production, gated: single operator group, one environment first (staging ops), then production read-only commands, then mutating commands.
  5. Review gate at 30 days: usage data, incident count, maintainer responsiveness; decide keep / fork / retire.

Operational Impact

Maintenance

  • Primary burden is Nova upgrade tax: each Nova major release likely needs a package bump or a local patch. Budget ~1–2 engineer-days per Nova upgrade cycle. Low code volume means patches are tractable.
  • Secondary burden is security review on every change to the command surface — treat new allowlist entries as reviewable config, not casual additions.

Support

  • Support load is concentrated on permissions ("why can't I see the tool?") and execution failures ("it timed out"). Pre-empt with documentation: allowlist policy, timeout behavior, what to do when a command hangs.
  • No vendor SLA. Escalation path is the maintainer's GitHub issues, then your own fork. Name an internal owner explicitly.

Scaling

  • Scales with operator count, not traffic — inherently low QPS. Risk is concurrency: two operators running migrate simultaneously. Add a mutex/lock per command or a simple "in-flight" guard.
  • Synchronous execution means web-tier capacity is irrelevant; the limiting factor is per-request timeout. Anything beyond ~30s belongs in a queue or a CLI session.

Failure modes

  • HTTP/PHP timeout on long commands → orphaned process continuing server-side with no UI feedback. Highest-probability operational surprise.
  • Memory exhaustion on verbose commands; truncated output misread as success (exit code not surfaced).
  • Destructive command executed against the wrong environment due to misconfigured APP_ENV or stale .env.
  • Package abandonment → silent breakage on Nova upgrade, discovered at the worst time.
  • Privilege creep: the tool's gate gets attached to a broader group over time until it is effectively admin-wide.

Ramp-up

  • Very low for engineers already fluent in Artisan (near-zero learning curve; UI mirrors CLI). Near-zero for the Vue/Nova layer since the team won't modify it.
  • The real ramp-up is procedural, not technical: writing the allowlist policy, the audit review routine, and the on-call runbook for "command stuck / wrong command run." Budget ~2–3 days of PM/ops time for governance artifacts, and treat those artifacts as the deliverable that makes the package safe to adopt.
  • Recommendation: adopt narrowly (Nova shops, SRE-only, staging-first, forked and allowlisted) or not at all; the package is a convenience layer, not infrastructure, and should be evaluated on governance readiness rather than feature depth.
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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core