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

Laravel Shell Laravel Package

jakyeru/laravel-shell

Run shell commands from Laravel through a simple, testable API. jakyeru/laravel-shell wraps process execution, captures output and exit codes, and fits neatly into Artisan commands, jobs, and services for reliable command-line automation.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • laravel-shell is a service-provider-based Laravel package that wraps shell/terminal execution for use inside a Laravel application. It fits the standard package contract (composer auto-discovery, config publish, facade/container binding), so it slots into a conventional Laravel app without architectural rework.
  • Fit is best in back-office, ops, or internal tooling contexts: admin-triggered artisan/console invocations, deployment or maintenance scripts, environment diagnostics. It is a poor fit for any request path reachable by untrusted users, since the package's core capability is arbitrary command execution.
  • v4.0.0 does not appear to change the package's architectural role — the release is a framework-compatibility update, not a redesign.

Integration feasibility

  • Feasible but coupled to a Laravel 13 upgrade. v4.0.0's headline change is Laravel 13 support, and the major version bump is almost certainly semver signalling "drops older framework support" rather than a package API redesign. That means v4 cannot be adopted on a Laravel 11/12 codebase in isolation.
  • Two merged PRs, both from the sole maintainer, with no external review. Small surface, but also no corroboration.
  • Blocker to resolve before committing: the exact constraint set (PHP version, illuminate/* range) is not stated in the notes and must be read from composer.json at the v4.0.0 tag.

Technical risk

  • Security (highest). A package whose purpose is executing shell commands is a privileged dependency. A vague commit titled "Updated Terminal.php" in a major release is exactly the kind of change that needs manual diff review — command construction, escaping, working directory, timeout, and output capture are all security-relevant. Treat this as unverified until reviewed.
  • Breaking-change opacity. Major version bump with a two-line changelog and no migration guide. Anything consuming the facade, config keys, or Terminal class directly must be assumed affected until proven otherwise.
  • Upstream immaturity. Adopting Laravel 13 support on day one means adopting Laravel 13 itself on day one. Framework-adjacent ecosystem packages typically lag; the constraint solver, not this package, will be the failure point.
  • Bus factor of one. All commits in this release are from a single author with no reviewer. No evidence of a security disclosure process.

Key questions

  1. Does v4.0.0 change any public API (facade methods, Terminal signatures, config keys), or is the breaking change limited to raised framework/PHP floors?
  2. What exactly changed in Terminal.php (PR #23), and does it touch command escaping, argument interpolation, or auth/permission checks?
  3. What are the composer.json constraints for PHP and illuminate/* at v4.0.0?
  4. Is there a supported upgrade path from v3 (upgrade guide, changelog entry, deprecation notice), or is it a hard cut?
  5. Does the package expose any authorization/allowlist mechanism, and is it mandatory or opt-in?
  6. Is there a security policy / CVE disclosure channel for this repo?

Integration Approach

Stack fit

  • Target stack: Laravel 13 (and whatever PHP floor it mandates — likely 8.3+) plus this package at ^4.0. Confirm the transitive dependency graph resolves before scoping work; the package is small but the framework bump is not.
  • Applications on Laravel 11/12 should pin ^3.0 and take no action from this release. There is no functional feature in v4.0.0 to justify a forced framework upgrade.

Migration path

  • Two independent decisions, sequenced: (1) do we upgrade Laravel to 13, (2) do we move this package to v4. Treat them as one work item — the package bump is a consequence of the framework bump.
  • Before upgrading: audit every call site. Grep for the facade alias, the Terminal class, and any published config file. If any of these are touched directly (rather than through injected abstractions), wrap them behind an internal adapter first so the package can be swapped or patched without touching feature code.
  • Publish and diff the config file between v3 and v4 — config key renames are the most common silent breakage in Laravel package majors.

Compatibility

  • Maintain an explicit version matrix in your dependency policy: Laravel 11/12 → package v3; Laravel 13 → package v4. Do not allow a floating constraint (* or unpinned dev branch) on a package with shell access.
  • Pin to an exact minor/patch at first adoption, not ^4.0, until the maintainer has shipped at least one patch release on the v4 line.

Sequencing

  1. Read the v3→v4 diff and composer.json; answer the key questions above.
  2. Security review of the Terminal.php change (blocking gate).
  3. Confirm the rest of your dependency set supports Laravel 13 in a scratch branch.
  4. Upgrade framework and package together in one PR; run the full suite plus any command-execution integration tests.
  5. Canary in a non-production environment with restricted filesystem/network permissions before production.

Operational Impact

Maintenance

  • Low ongoing code maintenance (small package, narrow surface), but non-trivial review maintenance: every release on this package should get a manual diff read, because a compromised or careless change here is remote code execution. Budget that explicitly; it is not a "bump the version and move on" dependency.
  • Track upstream Laravel release cadence — this package appears to follow framework majors, so expect a new package major roughly annually.

Support

  • Single maintainer, no visible release notes discipline, no security policy stated. Assume no SLA. For anything production-critical, plan to vendor/fork the package or wrap it so a fork is a drop-in.
  • Internal support burden is really internal ownership of a privileged capability: someone on your team must own the allowlist, audit logging, and access controls around it, independent of the package.

Scaling

  • Command execution is inherently a per-invocation, blocking, resource-unbounded operation. Under concurrency it competes for CPU, file descriptors, and process slots with the web tier. Do not run it in the request/response path of a horizontally scaled web fleet without a dedicated worker/queue or a segregated host.
  • No scaling characteristics change in v4.0.0; the release is neutral here.

Failure modes

  • Silent breakage on upgrade — config key or facade signature change not covered by tests. Mitigate with a smoke test that actually executes a benign command post-deploy.
  • Hanging or orphaned processes — a shell call with no timeout can pin a PHP-FPM worker indefinitely. Verify timeout handling in the reviewed Terminal.php.
  • Privilege escalation — if arguments are interpolated from user-controllable input anywhere in your call sites, you own that risk regardless of package quality.
  • Dependency-resolution failure — Laravel 13 adoption blocked by an unrelated package; discovered late. Front-load the composer resolution check.
  • Abandonment — package stops tracking framework majors, freezing you to an old Laravel. Mitigated by the adapter wrapper above.

Ramp-up

  • Low for developers (small, conventional Laravel package API), moderate-to-high for the reviewer tasked with signing off on the shell-execution path.
  • Recommended onboarding order: read the v3→v4 diff, then the package's escaping/authorization logic, then your own call sites — in that order, before anyone writes an upgrade PR.
  • Ship a short internal runbook: how to pin versions, how to review package releases, who approves the security check, and the rollback procedure (revert package + framework together; they are coupled).
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.
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
equipc/laravel-email-database-log
adedsec/nova-translated-labels