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

Artisan Remote Laravel Package

philo/artisan-remote

philo/artisan-remote is a Laravel package for executing Artisan commands on remote applications through a secure, configurable connection. Run migrations, clear caches, and inspect command output without SSH, simplifying maintenance across environments.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. philo/artisan-remote inverts Laravel's normal operational model: Artisan is designed to run in-process via CLI, the scheduler, or queue workers, not to be invoked over HTTP by an external caller. For most production Laravel estates this is an architectural anti-pattern — it creates a network-reachable command-execution endpoint that bypasses the deployment, CI, and SSH/Bastion controls that normally gate privileged operations. The legitimate fit is narrow: internal ops dashboards, ephemeral demo/lab environments, legacy hosts where shell access is unavailable, or tooling where a scheduler cannot be reached. A TPM should treat this as an exception path, not a platform component, and require an explicit justification before adoption.

Integration feasibility. Low-to-moderate effort to install (Composer, service provider auto-discovery, published config), high effort to make safe. Three gates must clear before any pilot:

  • Authorization model. Verify whether the package ships authentication, IP allowlisting, token verification, or Laravel middleware binding. If the only control is a config flag, the integration is effectively "expose RCE to anyone who can reach the route."
  • Command surface. Confirm whether commands are allowlisted or whether arbitrary command name + argument passthrough is possible. Argument injection (--env, --force, shell metacharacters in args) is the dominant exploit vector.
  • Execution mode. Confirm synchronous Artisan::call() with buffered output. That is fine for cache:clear, dangerous for migrate, queue:work, or anything long-running.

Technical risk. High, and concentrated in three areas. Security: an HTTP-exposed Artisan endpoint is a remote code execution surface; the package's own hygiene is not a substitute for network isolation and WAF rules. Currency: last release January 2021, zero dependents, 82 stars — it predates Laravel 9/10/11/12 and PHP 8.2+, and is almost certainly untested against modern Symfony Process and Illuminate Console internals; expect composer update conflicts. Bus-factor: single-maintainer, low-visibility package with no downstream consumers means no community pressure to patch. Treat it as an unmaintained dependency from day one.

Key questions for the maintainer/sponsor.

  1. What specific operational task requires HTTP-invoked Artisan that the scheduler, queue, or CI cannot perform?
  2. What is the authentication and network-perimeter story — mTLS, IP allowlist, VPN-only, or nothing?
  3. Is there a command allowlist, and who owns changes to it?
  4. Are we prepared to fork and maintain this, or is this a throwaway spike?
  5. What is the audit requirement — who ran what, when, with what exit code?
  6. Which Laravel/PHP versions must be supported, and has anyone validated them?

Integration Approach

Stack fit. Reasonable only for Laravel 6–8-era applications on PHP 7.4/8.0. For Laravel 9+ or PHP 8.2+, assume incompatibility until proven otherwise; budget a compatibility spike before committing. It is a poor fit for multi-tenant SaaS, PCI/HIPAA-scoped workloads, or any environment where a new internet-reachable endpoint triggers a security review.

Migration path. Do not adopt as a long-term dependency. Two viable paths:

  • Spike path (recommended for evaluation): install behind a VPN/localhost-only binding, wrap in auth + custom IP middleware, allowlist 3–5 benign commands (cache:clear, config:cache, queue:restart), and run for two weeks to validate the actual operational need.
  • Fork path (if the need is real): vendor the package under an internal namespace, pin Laravel/PHP constraints, add command allowlisting, structured audit logging, output size caps, timeouts, and a kill switch. This is roughly 3–5 engineer-days and converts an unmaintained dependency into owned code.

The alternative worth putting on the table immediately: a small internal controller (30–50 lines) calling Artisan::call() behind existing middleware achieves the same outcome with no third-party dependency. That is usually the right answer for a TPM.

Compatibility. Expect friction on Symfony Process version, Illuminate\Console\Application signature changes, and PHP 8 deprecations. No published compatibility matrix and no dependents to learn from — validation is entirely on us.

Sequencing.

  1. Confirm the operational need is real and unfilled by scheduler/queue/CI (1 day).
  2. Security review of the auth and command-surface model (2–3 days).
  3. Compatibility spike against the target Laravel/PHP matrix (2 days).
  4. Isolated pilot behind VPN with an allowlist and audit logging (1–2 weeks).
  5. Go/no-go: fork-and-harden, replace with in-house controller, or retire.

Operational Impact

Maintenance. Effectively unmaintained. No releases in over four years, no dependents to surface regressions, single maintainer. Ownership of patches, security advisories, and Laravel upgrades transfers to our team the moment it ships. Budget an ongoing ~10–15% of one engineer for the fork, plus re-validation at every framework upgrade.

Support. Community support is minimal — 82 stars implies a thin issue tracker and no vendor SLA. Internal escalation means reading the source. Document the allowlist, the auth model, and the failure semantics before go-live, because there is no upstream to ask.

Scaling. Poor. Execution is synchronous and in-request: each command occupies a PHP-FPM worker for its full duration. Long commands (migrate, queue:work, storage:link on large buckets) will exhaust workers under concurrency, and there is no queue, retry, or backpressure. Output is buffered in memory, so verbose commands risk memory-limit failures. This is an admin tool, not a control plane — cap concurrency at 1–2 and keep it off the public request path.

Failure modes to design around.

  • Command injection via unvalidated arguments — the top risk.
  • Auth bypass or missing middleware due to route-level misconfiguration.
  • Partial execution: a timeout mid-migrate leaves the schema in an indeterminate state.
  • Output truncation or memory exhaustion on verbose commands.
  • Silent success: HTTP 200 with a non-zero Artisan exit code unless explicitly checked.
  • Runaway processes with no timeout or kill path.
  • Concurrent invocations racing on the same resource (cache, config, DB).

Ramp-up. Installation is under an hour; safe operation is not. Expect 1–2 days for an engineer to understand the auth model, build the allowlist, wire audit logging, and write runbook entries. The TPM-facing cost is the security review and the exception approval, not the engineering. Ramp-up for on-call is low if the endpoint is isolated and allowlisted; it becomes a pager-noise source the moment it is broadly reachable.

Recommendation. Treat philo/artisan-remote as a short-lived evaluation artifact, not a platform dependency. The 0.72 score, zero dependents, four-year release gap, and RCE-shaped surface argue for the in-house controller alternative in nearly every case. Approve only for a time-boxed pilot behind network isolation, with a named owner, an explicit allowlist, and a scheduled decision to fork or retire.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings