pragmarx/artisan-tool
A lightweight web interface for running Laravel Artisan commands from the browser. Browse available commands, execute them, and view their output without opening a terminal—handy for quick admin tasks, demos, and remote environments.
app: commands. Pilot only if Nova is already in place and the guardrails (gate, allowlist, audit log, environment gating, timeout handling) are cheap for you to add.cache:clear, view:clear, queue:restart, migrate:status, route:list, queue:failed, model:show, schedule:list. Explicitly exclude free-form command input, migrate --force, db:wipe, queue workers, and anything with an interactive prompt. The pilot's purpose is to validate the guardrails, not to prove commands can execute — that part is trivial.app: commands with your own auth, logging, and queue dispatch — is a weekend of work and delivers clearer authorization and better progress reporting. Make the build-vs-buy call now, in writing, rather than discovering it during a Nova upgrade. Design your curated commands and runbook so a swap is invisible to operators.Consider it when:
app:-namespace level.run-artisan gate against a role or allowlist — "is a Nova user" is far too broad), environment gating, audit logging, execution timeouts, and explicit exit-code / stderr handling.src/ end to end before enabling it, pin the version, and own Nova compatibility going forward.Look elsewhere when:
Artisan::call() and you need isolation, hard timeouts, or reliable exit-code surfacing — a subprocess-based or queued custom runner will serve you better.To executives — one paragraph: Routine Laravel maintenance currently requires an engineer with SSH access, which creates a support bottleneck and an audit gap. This package is a low-cost experiment to put a small, permissioned set of those operations behind our existing Nova admin login, with a full audit trail of who ran what and when. It is not customer-facing and it is not a platform commitment: the vendor package is small and thinly adopted, so we'd pilot it for a sprint behind a role gate and a curated command list, measure whether SSH requests actually drop, and keep a documented one-step switch to turn it off. The realistic alternative is a small in-house tool that does the same thing with our own authorization and logging; the pilot tells us which is cheaper to own.
To engineering — the honest framing: This is a thin wrapper that runs Artisan commands from a Nova tool. Before anyone enables it, read src/ and answer three questions: does it call Artisan::call() in-process or spawn a subprocess, how does it capture stdout/stderr and exit codes, and does it accept free-form input or a fixed list. Then register the tool behind a Gate::allows('run-artisan') check in NovaServiceProvider::tools() so unauthorized users see nothing at all, not a disabled button. Assume commands run as www-data with that user's grants and filesystem permissions — test the allowlist as that user on staging, including a deliberately failing command to confirm non-zero exit codes actually surface. Prefer exposing purpose-built app: commands with baked-in logging and sane defaults over raw console commands. Queue anything over a few seconds; a slow migrate should not hold an FPM worker. Block config:cache and route:cache from the UI and keep them in the deploy pipeline. Log every invocation ourselves inside the command, so the audit trail survives a package swap. Pin the version, note the validated commit, and assume we own compatibility at every Nova bump — if the package fights our Nova version or security review, the custom runner is a weekend of work and operators won't notice the difference.
How can I help you explore Laravel packages today?