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

Terminal Laravel Package

recca0120/terminal

Run Artisan and shell commands directly in the browser with this Laravel web terminal package. It provides a configurable terminal UI, predefined command buttons, and real-time output, making it handy for local debugging, demos, or admin panels without SSH access.

Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for internal ops tooling. A web terminal is a deceptively expensive thing to build safely (PTY handling, WebSocket transport, ANSI rendering, session lifecycle, auth). This package is a ~1-line Composer dependency that answers "do we need to build an admin console?" with "not yet."
  • Admin panel / back-office feature scope. If your roadmap already includes an internal admin panel (Filament, Nova, custom), this is the cheapest way to add a "run Artisan command / inspect the box" capability without standing up a separate bastion host or SSH workflow for every engineer.
  • Developer experience and support-ops investment. Concrete use cases: an engineer on call running php artisan cache:clear or queue:restart from a phone; a support lead re-running a failed job; onboarding a new hire without distributing production SSH keys.
  • Platform-product surface decisions. For teams building a PaaS, hosting panel, or managed-Laravel offering, this is a reference implementation of "customer-facing command execution" — useful to evaluate before committing to a build.
  • Environment policy decisions. Adopting it forces an explicit answer to "which environments may host a shell in a browser?" (answer: staging and local, ideally not production), and a decision about audit logging, IP allowlisting, and session recording — all of which become requirements the moment it ships.
  • De-scoping. It lets you say "we are not building a terminal" and redirect that roadmap slot to something customer-facing.

When to Consider This Package

Consider it when all of the following hold:

  • The app is Laravel and you control the routing/middleware stack end to end.
  • The audience is internal — a small number of trusted engineers, ops, or support staff — not tenants or customers.
  • You already have authentication and can put the route behind additional layers: auth + role gate, IP allowlist, VPN/zero-trust proxy, or a non-public environment.
  • You want a terminal for diagnosis and routine Artisan work, not for orchestration, deployment, or anything requiring durable sessions and recording.
  • You value time-to-first-value over control: MIT license, Composer install, config-published middleware, no external service to run.

Look elsewhere — or build deliberately — when:

  • Untrusted or multi-tenant users would ever reach the route. This is remote code execution by design; there is no tenancy model to lean on.
  • Compliance is in scope (SOC 2, PCI, HIPAA). You need session recording, command-level audit trails, break-glass approvals, and key management — none of which a package like this provides out of the box.
  • Production exposure is mandatory. Prefer AWS SSM, Teleport, or kubectl exec/container-native access, which have real identity and audit stories.
  • You only need to trigger a handful of known commands. A whitelisted controller calling Artisan::call with a fixed command enum is smaller, safer, and easier to review than a general shell.
  • Your infra is containerized/Kubernetes-native, where the pod is the unit of access, not the Laravel app.
  • The package looks unmaintained for your risk tolerance. Last release March 2025 and a single-maintainer profile are worth a supply-chain and maintenance review; 877 stars is healthy adoption, not a guarantee.

How to Pitch It (Stakeholders)

To executives (30 seconds). Engineers currently need SSH keys, a VPN, or a colleague to run routine maintenance commands. This free, MIT-licensed package puts a password-protected, browser-based console inside the Laravel admin area, cutting the "ask someone with access" loop out of small operational tasks. Cost is near zero; the risk is entirely about who can reach it, which we control with existing auth plus an allowlist. Recommendation: pilot in staging only, behind VPN, for one quarter — measure how often it's used before deciding whether to extend it.

To engineering. It's a Composer package that registers a route and a config file; you gate it with middleware you already use. It executes real shell and Artisan commands, so treat it as a privileged surface: bind it to a specific environment flag, require an admin gate, log every session start, and never enable it by default in production. Review the dependency like any other code-execution path. If we later need recording or tenancy, we replace the transport, not the UI.

To security/compliance. This is intentionally an RCE endpoint. We are proposing it for non-production environments, behind existing SSO and network controls, with an explicit off-switch in config. If the answer is "no shell in the browser, ever," the fallback is a whitelisted Artisan command runner — roughly a day of work and materially smaller blast radius.

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