Open-source project
laravel/envoy avatar
laravel/envoy

Laravel Envoy for repeatable remote PHP server tasks

Elegant SSH tasks for PHP.

1,612 stars180 forksPHPMIT

At a glance

What is it?
Laravel Envoy is a PHP tool for defining common SSH tasks, including deployment commands and Artisan commands, through Blade-style syntax. Its README provides a concise introduction and links to official Laravel documentation for installation and operation.
Who is it for?
Laravel developers who already use SSH-based deployment tasks and Blade templates can adopt Envoy after verifying the supported setup in the official documentation. Teams requiring a documented, self-contained alternative should not choose it from the README alone.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly PHP, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 6, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • laravel/envoy1,612 ★ · -2
Star history
Repository2026-10-162026-11-06
laravel/envoy1.6k1.6k

-2 Stars in the last 21 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Why Laravel Envoy uses Blade for server tasks

Laravel Envoy addresses a narrow but recurring problem in PHP server operations: common commands executed over SSH tend to become scattered across shell scripts, deployment notes, or manual terminal sessions. It is intended for developers who repeatedly need to run actions on remote servers, particularly deployment work and Artisan commands. The README describes the interface as a "clean, minimal syntax," but it does not claim to replace Ansible, a continuous integration system, or an application-specific deployment tool.

The defining interface is Blade-style syntax. That choice connects Envoy to Laravel's template ecosystem rather than presenting a general-purpose shell DSL. This can be useful when the task file is already maintained by a PHP or Laravel team, but the README does not explain which Blade directives Envoy supports, how values are passed to tasks, or whether non-Laravel PHP applications can use every feature. Those details need confirmation in the official documentation.

The repository includes an `Envoy.blade.php` file at its root. Based on the repository layout, that file is the likely starting point for task definitions, although the README does not explicitly describe its contents or configuration format. A developer should inspect that file and the linked Laravel documentation before assuming that a particular host, command, or callback is valid.

What the Envoy repository contains

Based on the top-level repository entries, Envoy is a conventional PHP package with application code in `src/`, an executable area in `bin/`, automated tests in `tests/`, and package metadata in `composer.json`. The presence of `phpstan.neon.dist` and `phpunit.xml.dist` also indicates static analysis and a PHPUnit test configuration are part of the project structure. Those file names show engineering infrastructure, but the README does not document supported PHP versions, dependency constraints, executable names, or test commands.

The repository also includes `CHANGELOG.md`, `RELEASE.md`, and `UPGRADE.md`. Those files matter for adoption because Envoy is distributed through versions rather than as a remote script copied from a branch. The project lists releases `v2.12.0`, `v2.12.1`, and `v2.12.2`, all in March and April 2026. Their release notes are not included in the repository README, so this review cannot attribute specific fixes or upgrade requirements to them.

The default branch is `2.x`. That distinction matters for anyone following repository examples: content in another branch may not match the current default line. Likewise, the README links to `https://laravel.com/docs/envoy` for current documentation, which is a better starting point than assuming that the repository root contains a complete manual.

Finding installation and running a first SSH task

The README does not provide installation commands, Composer package syntax, executable flags, configuration files, ports, environment variables, or a complete `Envoy.blade.php` example. Because those details cannot be copied accurately from the available documentation, this tutorial stops before inventing a setup procedure. The project directs readers to its official documentation at `https://laravel.com/docs/envoy` for installation and use.

A new user should begin there, then use the root `Envoy.blade.php` as the repository-side reference for the task-file format. The first real use should be limited to one reversible remote command rather than a deployment sequence. Before running it, the user needs to establish which SSH configuration Envoy uses, which local PHP and Composer requirements apply, and what happens when the remote command returns a non-zero status. The README does not define those behaviors.

The README gives one category of first task explicitly: Artisan commands. That makes a harmless Artisan invocation a more traceable starting point than inventing a deployment example. It does not, however, supply an exact invocation, an SSH host identifier, a working directory, or confirmation output. Those values must come from the official documentation and the user's server configuration.

Where Blade-style task definitions become restrictive

Envoy's Blade-style syntax is convenient for Laravel-oriented teams, but convenience should not be confused with a complete deployment system. The README does not document rollback, approval gates, secret injection, concurrency, retries, logging, notification, failure recovery, or multi-host orchestration. It remains silent on all of those concerns, so Envoy should not be credited with capabilities that are not stated.

The documented use cases are defining common remote tasks, performing deployment work, and running Artisan commands. Envoy is therefore the wrong tool when the requirement is a complete release pipeline with auditable stages and recovery behavior. It may also be a poor fit for an operator who does not want task definitions embedded in Blade templates, or for a Laravel team that needs a deployment design documented outside its PHP tooling.

Another limitation is the limited standalone documentation in this repository. The README primarily introduces the project and redirects users to Laravel's website. The `UPGRADE.md` file indicates that upgrade guidance exists, but its contents are not reproduced in the README. Version numbers alone cannot establish whether upgrading an existing task file will require edits.

Comparing Envoy with a conventional deployment tool

The documented approach differs from a conventional shell script because Envoy represents common remote operations with Blade-style syntax and presents them as reusable tasks. A shell script directly exposes shell commands, control flow, and file structure. Envoy instead centers the task file on a Laravel-adjacent templating model, which can make task definitions more familiar to PHP developers.

This difference does not establish that Envoy can replace shell scripts or deployment platforms. No comparison matrix, feature list, or migration guide appears in the README. The available documentation supports only a narrow distinction: Envoy expresses remote tasks through Blade-style syntax, while a conventional script expresses them as shell operations. Requirements such as rollback, centralized secrets, multi-server coordination, or formal approvals would need separate evaluation under either approach.

For teams already maintaining Laravel applications, the deciding question is whether keeping operations in the PHP and Blade ecosystem is preferable to maintaining a separate shell-based system. For teams outside Laravel, the absence of standalone examples and documented non-Laravel compatibility in the README makes adoption harder to justify.

Maintenance signals and MIT upgrade considerations

The repository is not archived, and the last push was on 2026-10-14. Those are the relevant repository facts for maintenance. They indicate recent repository activity, but they do not prove that every open issue is handled promptly or that a particular release will support a given server configuration.

The release history lists `v2.12.0`, `v2.12.1`, and `v2.12.2`, with the latest listed release occurring on 2026-04-01. The README does not include changelog contents, so individual fixes and behavioral changes cannot be mapped to those versions. Users with existing `Envoy.blade.php` files should consult `UPGRADE.md` and `CHANGELOG.md` in the repository before changing versions.

Envoy is licensed under the MIT license. That permits use, modification, distribution, and sublicensing subject to the license terms, but this is not legal advice. Organizations should still review the repository's `LICENSE.md`, retain required notices, and check how the MIT license interacts with their own distribution policies. The license does not replace scrutiny of SSH credentials or deployment permissions.

Editorial conclusion

Laravel developers who already use SSH-based deployment tasks and Blade templates can adopt Envoy after verifying the supported setup in the official documentation. Teams requiring a documented, self-contained alternative should not choose it from the README alone. The first adoption check should confirm the current installation procedure, SSH task behavior, and compatibility with the default 2.x branch.

Frequently asked questions

How do I install Laravel Envoy?

The README does not include installation commands or version requirements. It directs users to the official documentation at `https://laravel.com/docs/envoy`.

What can Laravel Envoy run on a remote server?

The README identifies deployment tasks, Artisan commands, and other common remote operations as supported use cases. It does not provide a full command reference.

Does Laravel Envoy support deployment rollback?

The README does not describe rollback or recovery behavior. Confirm those requirements in the official documentation or another deployment system before adopting it.

Official sources

  1. laravel/envoy on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/laravel-envoy.svg)](https://hysenlabs.com/projects/laravel-envoy)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/laravel-envoy.svg)](https://hysenlabs.com/projects/laravel-envoy)

Was this useful?