phanan/remote
Run Artisan commands on remote servers over SSH directly from your local Laravel app. Configure connections, then execute and inspect them as if they were local—handy for deployment, maintenance, and managing multiple environments. No extra tooling required.
phpseclib's SFTP/SSH2 client. The real decision it informs is whether a remote-file capability is worth an external dependency at all, or whether it's a ~100-line internal service class. Spoiler: for this surface area, it's the latter.Remote::connection('x')->put(...) ergonomics, no queue/retry/observability.symfony/process + key management, or a maintained SSH client).Storage::disk('sftp') and league/flysystem-sftp-v3 first.Consider it only as a reference implementation, not as an installed dependency:
.env, one or two known hosts, no key rotation, no audit trail requirement.Look elsewhere — or build natively — when:
Storage::disk('sftp') with league/flysystem-sftp-v3. It's maintained, tested, and already in your dependency tree. There is no gap this package fills.phpseclib version it pins will drift out of support, and you'll inherit that risk silently.To executives: This is a small, archived Laravel 5 utility for SFTP/SSH. It's inexpensive to replicate and expensive to own — the code is trivial, but the maintenance burden is permanent and the security surface is unpatched. Recommendation: do not take it as a dependency. Use it as a pattern reference and implement the equivalent in-house in roughly a day, on top of Laravel's maintained filesystem layer. Net effect: same feature, no new supply-chain risk, no upgrade blocker.
To engineering: It's a facade + config wrapper over phpseclib. On modern Laravel, Storage::disk('sftp') already covers the file-transfer case with a maintained adapter; the only genuine gap is remote command execution, which we should treat as a separate, explicitly-scoped decision. If we have existing call sites, vendor the config shape, swap the transport to Flysystem, and delete the dependency. Budget: half a day to a day, plus a test that exercises an unreachable host.
Bottom line: the opportunity here isn't the package — it's the reminder that "remote file transfer" is a solved problem in the framework, and the correct product decision is to spend nothing on it.
How can I help you explore Laravel packages today?