spaceheadlabs/ssh-bundle
A Symfony bundle that integrates SSH connectivity into your application, providing services for running remote commands and managing SSH sessions. It wraps SSH client functionality in configurable bundle services, making remote server operations easier to inject and use within Symfony projects.
phpseclib), or write a thin internal adapter. This package's abstraction is small enough — a connection registry plus a command runner — that it clarifies the "wrap it ourselves" estimate is a few hundred lines, not a project. That is the decision it actually informs.Bundle class, DI extension, and compiler passes; Laravel has no equivalent. Adopting it in a Laravel app converts a composer require into a source-level extraction plus a service-provider adapter we own forever. That is a one-way door worth naming in the roadmap review, not discovering in implementation.Consider it — as reading material, not as a dependency — only when:
SshClient contract. Read the service classes, not the bundle wiring.Look elsewhere when:
phpseclib 1.x/2.x/3.x vs. ext-ssh2 vs. shelling out to the ssh binary — the last would be disqualifying), license compatibility, and whether host-key verification exists at all and can be silently disabled by an operator.phpseclib/phpseclib directly behind your own narrow interface, evaluate spatie/ssh for simple command execution, and laravel/envoy for task-runner semantics. For orchestration across a fleet, buy (Ansible or a hosted deploy platform) rather than build.For executives (one paragraph): We evaluated an open-source PHP package for adding SSH/remote-server automation to our product. It is not a candidate for adoption: no community adoption, no dependents, no maintenance signal, and it targets a different PHP framework than ours. The underlying capability, however, is real — if we pursue server-management, deployment, or managed-site features, remote execution is a primitive we will need. Recommendation: do not add this dependency. Treat it as a free design reference, and budget a contained spike of roughly one to two sprints to build the capability on a maintained transport library behind our own interface. That avoids supply-chain and credential-handling risk at a lower total cost than owning an abandoned bundle forever.
For engineering: Two blockers, one architectural and one evidential. The package is a Symfony bundle — kernel-level wiring with no Laravel analogue — so "adopting" it means extracting its service classes and re-registering them in a service provider, then owning that code permanently. And with zero dependents we inherit no trust: nobody has run this in production. The abstraction it offers is small (connection registry + command runner), reimplementable on phpseclib in a few hundred lines against a dependency we can actually patch. Sequence: half-day source and license audit → one-to-two-day phpseclib spike against the real requirement → only extract if the audit clears and the spike shows meaningful savings. Before scoping, confirm the transport library version, the host-key verification default, and whether connections are pooled or opened per call — the pooling answer determines our entire scaling story under Octane and queue workers.
For security/compliance: Adopting this puts SSH credentials and remote execution inside code we don't control and can't get patched — no disclosure process, no CVE monitoring, unknown test coverage on exactly the paths that matter (auth failure, timeout, host-key verification). Building on a maintained library keeps key handling, host-key pinning, credential redaction from exception traces, rotation runbooks, and audit logging inside our own review boundary. We recommend an explicit named owner for that code before the first production deploy, not after.
How can I help you explore Laravel packages today?