Open-source project
laravel/installer avatar
laravel/installer

The Laravel installer is a small package that the whole framework depends on

The Laravel application installer.

892 stars376 forksPHPMIT

At a glance

What is it?
laravel/installer is the Composer package behind the Laravel application installer, and it is deliberately thin: the README points at the Laravel documentation for how to create a project. It suits anyone who wants to understand the bootstrap path, and it is not the place to look for framework features.
Who is it for?
laravel/installer suits a team that wants the standard way to create a Laravel application and to know exactly what the tool does when it runs, since the package is small enough to read in one sitting. It is the wrong thing to adopt as a framework dependency or a starting point for a custom application skeleton, because the repository is the installer and not the framework, and it will not grow into one.
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 October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A package whose README is three links

The Laravel Installer README is one of the shortest in the ecosystem, and it is worth understanding why rather than dismissing it as an oversight.

There is a heading, Official Documentation, and a single sentence: documentation for installing Laravel can be found on the Laravel website, with a link to laravel.com/docs#creating-a-laravel-project. After that come the badges for the build status, the Packagist download count, the latest stable version and the licence, then the standard three sections every Laravel-adjacent repository carries: Contributing, with a link to the contribution guide in the Laravel documentation, Code of Conduct, pointing at the community code of conduct, and Security Vulnerabilities, pointing at the repository's own security policy for how to report a vulnerability.

Then the licence line: Laravel Installer is open-sourced software licensed under the MIT license, with a link to LICENSE.md.

That is the entire document. There is no usage example, no command listing, no configuration table, no architecture diagram. The header even says only what the project is: the Laravel application installer.

For a package whose entire job is to run once, at the start of a project, that is a defensible choice. The user experience of creating a Laravel application is documented on the framework site, where the rest of Laravel is documented, and duplicating it in a package README would create two places to keep in step. The cost of the choice is that the repository tells you almost nothing about what the installer does, and a reader has to go elsewhere to learn it.

What the repository layout says about the implementation

Since the README is thin, the repository layout is where the shape of the project is visible.

The top-level entries tell the story of a PHP command line tool. There is a bin directory, which is where a Composer-installed executable lives, and a src directory holding the implementation. The project is namespaced as laravel/installer and the package is published on Packagist under that same name, with the download count and version badges pointing at the Packagist page.

The supporting files describe a serious test setup. There is a phpunit.xml.dist for the test configuration, a tests directory and a separate tests-output directory, and a phpstan.neon.dist for static analysis. Static analysis at level of a distributable tool is worth noting, because the installer runs on a developer's machine before anything else exists, so a type error in it surfaces as a confusing failure rather than a stack trace in your own code.

Style is handled by .styleci.yml, which is the configuration file for StyleCI, the hosted service that applies coding standard fixes to pull requests automatically. The .editorconfig and .gitattributes files cover whitespace and line ending handling for a codebase that contributors on different platforms will edit.

Release mechanics are visible too. There is a release.sh script at the root and a RELEASE.md document, plus a CHANGELOG.md, so the version history is published as a file rather than only on the releases page. The default branch is master.

Taken together, this is the layout of a maintained, well-instrumented utility rather than a hobby script, which is a good deal more than the README alone would tell you.

The 5.x line moves on a monthly cadence

The release history is the most substantive fact the repository offers, and it describes a project that is very much alive.

The recent releases are v5.32.0 on 2026-08-25, v5.31.1 on 2026-08-04 and v5.31.0 on 2026-07-16. That is a minor version, a patch and another minor version across seven weeks, and the last push to the repository was on 2026-10-16. The repository is not archived.

So the pattern is a steady monthly minor release with patch releases in between, which is what you would expect from a package that is installed once per project and has to keep pace with the framework it scaffolds. The 5.x major version has been in place for a while, and a bump within 5.x is therefore unlikely to break an existing application's expectations, though the CHANGELOG is the place to confirm that for a specific version.

The interesting question for a team is what the installer actually changes between minor versions, and the repository does not answer that directly. The CHANGELOG.md file holds the history, and the answer is likely to be small: the installer is not where framework behaviour changes, it is where the skeleton of a new project is written, and the skeleton is what a new version would touch.

There is one more thing worth watching. A tool that creates project skeletons is coupled to the current shape of the framework, so a release that looks routine in the version number can still change the directory layout, the configuration files or the dependency set of every project created that day. Anyone who pins an installer version in CI should read the matching changelog entry rather than assuming a minor bump is invisible.

Creating a project: the install steps live on laravel.com

The choice to point at the framework site is the project's main design decision, and it is worth judging on its merits.

The case for it is straightforward. The installer exists to create a Laravel application, and the thing a user needs to know is not what the installer does but what a Laravel application is and how it is configured. Documenting the installer in the same place as the framework means one set of instructions, one navigation, one version of the truth about what a fresh Laravel project contains. When Laravel changes its directory structure, the installer changes with it, and there is one document to update instead of two that can disagree.

The case against it is that the repository becomes a black box to anyone browsing it on a hosting site. A developer who lands on the GitHub page looking for what the tool does finds a link and leaves. There is no explanation of the mechanism, no listing of what gets written, no statement of what the tool refuses to do. For a package this heavily used in the ecosystem, that is a real gap in discoverability, and it is a gap that a dozen lines of README would have closed.

The third link in the README is the contribution guide, also on the Laravel site, and the code of conduct and the security policy follow the same pattern. Everything a contributor or a reporter needs is under the laravel.com/docs domain, and the repository itself holds the code, the tests and the release tooling.

So the practical advice for an adopter is simple. Read the documentation on the framework site, and read the source in this repository if you want to know what the tool actually did to your new project.

The alternative is a skeleton repository, and it is a different bargain

There is a second way to get a new Laravel project, and it is worth contrasting with the installer rather than dismissing.

The alternative is to keep a template repository, a skeleton application, and clone or copy it. The differences are concrete. A skeleton repository is versioned by the team that maintains it, so a team can pin the exact starting point for every new project and change it on their own schedule, including adding the packages, the CI configuration and the directory conventions the team has standardised on. It is also trivially auditable, since the whole thing is a diff against a known state.

The installer gives the opposite property. It gives you the current official shape of a Laravel application, including whatever changed in the most recent release, without the team maintaining anything. That matters when the framework's own defaults are what you want, and it means you are not the one deciding what goes into a new project.

The installer is also the better answer for the first project of a team that has no opinions yet, because there is nothing to codify. Once a team has a house style, the skeleton repository tends to win, because the whole point of the installer is to be the canonical starting point and a team with its own conventions is deliberately diverging from it.

A third option, which the project does not mention, is to create the project with the installer and then commit the result as the team's own template. That gets the canonical skeleton once and freezes it, which is a reasonable middle path and worth considering before anyone maintains a skeleton from scratch.

Licence, contribution route and the reports channel

The licence is MIT, with the terms in LICENSE.md at the root of the repository. For a tool that runs once at the start of a project, that is the least interesting and most convenient fact about it, and it removes any question about embedding the installer in an internal pipeline.

Contributions go through the Laravel documentation's contribution guide rather than a file in this repository, and the code of conduct is the community one referenced from the same place. Both are on laravel.com/docs/contributions, with the code of conduct at the contributions#code-of-conduct anchor. A single contribution process across all Laravel packages is a deliberate choice, and it has a cost for this repository: someone looking only at the GitHub page will not find a CONTRIBUTING.md.

Security reporting has its own channel. The README asks you to review the security policy at the repository's security policy page for how to report security vulnerabilities, which is the GitHub-native mechanism for a private report. That matters for an installer because a malicious update to the tool would land in every new project on a developer's machine, and a private reporting path is the right way to handle that.

The remaining structural files, the CHANGELOG.md, the RELEASE.md, the release.sh script and the .github directory, tell you that releases are scripted rather than manual, which is the sort of detail that makes a dependency trustworthy over years.

Editorial conclusion

laravel/installer suits a team that wants the standard way to create a Laravel application and to know exactly what the tool does when it runs, since the package is small enough to read in one sitting. It is the wrong thing to adopt as a framework dependency or a starting point for a custom application skeleton, because the repository is the installer and not the framework, and it will not grow into one. Before you rely on it, read the creating-a-Laravel-project documentation the README points at, check the CHANGELOG for the 5.31 and 5.32 line, and note that the composer.json, phpunit.xml.dist and phpstan.neon.dist in this repository configure the installer itself rather than the applications it creates.

Frequently asked questions

What is the Laravel Installer package?

It is the Composer package behind the Laravel application installer, published on Packagist as laravel/installer, and the README describes it in one line as the Laravel application installer. Its own documentation points to the Laravel website rather than duplicating it.

Where can I read the instructions for creating a Laravel project?

On the Laravel website. The README links to laravel.com/docs#creating-a-laravel-project, and it also points at the contribution guide and the code of conduct in the Laravel documentation rather than shipping copies here.

What licence is the Laravel Installer released under?

MIT, with the terms in the LICENSE.md file at the root of the repository. The Packagist badge in the README links to the same licence information.

How do I report a security vulnerability in the Laravel Installer?

Through the repository's own security policy page, which the README points to for details on how to report vulnerabilities. The policy is kept separate from the general issue tracker so that reports can be handled privately.

Official sources

  1. laravel/installer 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-installer.svg)](https://hysenlabs.com/projects/laravel-installer)

Was this useful?