> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel Maestro — the starter kit orchestrator

> A look at Laravel's new official repository, Maestro. Learn how the orchestrator manages multiple starter kit variants in a single monorepo and streamlines contributions.

<Info>
  This article is based on source-code research. There are no official docs yet, and the repository is not formally released (as of April 2026).
</Info>

## What is Maestro?

[Laravel Maestro](https://github.com/laravel/maestro) is a monorepo-style orchestrator for centrally managing Laravel's [starter kits](https://laravel.com/starter-kits).

Laravel's starter kits come in multiple stacks—React, Vue, Svelte (Inertia), and Livewire—and there are more than 15 variants when you combine authentication methods (Fortify or WorkOS) and options (Teams, Blank). Maestro manages all of these variants in a single repository and automatically propagates changes to each starter kit repository.

```mermaid theme={null}
graph TD
    A["laravel/maestro<br>(monorepo)"] --> B["orchestrator/<br>build tooling"]
    A --> C["kits/<br>source files"]
    A --> D["browser_tests/<br>browser tests"]
    B --> E["The build command<br>assembles a variant"]
    E --> F["build/<br>built kit"]
    F --> G["composer kit:run<br>starts and watches"]
    G --> H["Auto-sync changes<br>back to kits/"]
```

## What problem does it solve?

When starter kits are split into many variants, propagating a single fix to every variant becomes tedious. For example, opening separate PRs against React, Vue, Svelte, and Livewire to fix an authentication form validation is inefficient.

Maestro solves this via a "shared layer and variant layer hierarchy." The orchestrator decides which layer a change belongs to and applies it in the most appropriate place automatically.

## Starter kit variants

The starter kits Maestro manages come in two stacks.

### Livewire stack (6 variants)

| Variant                         | Description                            |
| ------------------------------- | -------------------------------------- |
| Blank                           | Minimal setup without auth             |
| Fortify                         | Authentication via Laravel Fortify     |
| Fortify (Multi-file Components) | Blade views split into component files |
| Fortify (Teams)                 | Fortify auth + Teams support           |
| WorkOS                          | Authentication via WorkOS              |
| WorkOS (Teams)                  | WorkOS auth + Teams support            |

### Inertia stack (15 variants)

Combining three frameworks (React/Vue/Svelte) × Blank/Fortify/WorkOS × Teams on/off yields 15 variants total.

## Repository structure

```
laravel/maestro/
├── orchestrator/    # Laravel app that manages builds
│   ├── app/Console/Commands/BuildCommand.php
│   ├── app/Enums/StarterKit.php
│   └── scripts/
├── kits/            # Starter kit source files
│   ├── Shared/      # Files shared across all variants
│   ├── Livewire/    # Livewire-specific files
│   └── Inertia/     # Inertia-specific files (React/Vue/Svelte)
└── browser_tests/   # Browser tests
    ├── bootstrap/
    ├── common/
    └── teams/
```

The `orchestrator` directory is itself a Laravel application that manages building and running the starter kits.

## File layering system

Maestro's core idea is "assembling a starter kit by stacking layers." For Livewire (Fortify), files are copied in this order, with later layers overriding earlier ones:

```mermaid theme={null}
graph LR
    A["Shared/Blank<br>Common blank"] --> B["Livewire/Blank<br>Livewire minimal"]
    B --> C["Shared/Base<br>Common base"]
    C --> D["Livewire/Base<br>Livewire base"]
    D --> E["Shared/Fortify<br>Common Fortify"]
    E --> F["Livewire/Fortify<br>Livewire Fortify"]
    F --> G["build/<br>Finished kit"]
```

This layering yields a clear rule: "changes common to all kits go in `Shared/`; changes specific to Livewire go in `Livewire/`."

## Contribution workflow

Contributions to starter kits go to this Maestro repository, not the individual starter kit repositories.

<Steps>
  <Step title="cd into orchestrator and build a kit">
    ```bash theme={null}
    cd orchestrator
    php artisan build
    ```

    Interactive prompts let you select the target kit and auth variant. You can also specify them directly with flags.

    ```bash theme={null}
    php artisan build --kit=vue
    php artisan build --kit=react --workos
    php artisan build --kit=livewire --teams
    php artisan build --kit=vue --workos --teams
    ```
  </Step>

  <Step title="Run the built kit">
    ```bash theme={null}
    composer kit:run
    ```

    The Laravel dev server and a file watcher start simultaneously. Changes made in the `build/` directory are automatically copied to the correct location under `kits/`.
  </Step>

  <Step title="Make changes and test">
    Edit files inside the `build/` directory. The watcher detects changes and mirrors them back into the `kits/` directory.
  </Step>

  <Step title="Open a PR">
    Commit the changes under `kits/` and open a PR. Once merged, Maestro automatically pushes the changes to each starter kit repository.
  </Step>
</Steps>

<Warning>
  The `build/` directory is gitignored. Make all changes inside `build/`, let the watcher sync them into `kits/`, and then commit.
</Warning>

## Other development commands

### Linting

```bash theme={null}
# Run Pint on kits and browser_tests (PHP only)
composer kits:pint

# PHP lint + frontend lint for each Inertia variant
composer kits:lint

# Target a specific framework only
composer kits:lint -- --vue
composer kits:lint -- --react --svelte
```

### Browser tests

```bash theme={null}
# Run browser tests for all variants
composer kits:browser-tests

# Narrow to specific frameworks or variants
composer kits:browser-tests -- --vue
composer kits:browser-tests -- --livewire --fortify
```

Browser tests run on Pest + Playwright. The `browser_tests/` directory is organized into three layers: `bootstrap/` (shared setup), `common/` (for Fortify), and `teams/` (for Teams).

### Narrowing with flags

Each command supports the `--livewire`, `--react`, `--svelte`, and `--vue` framework flags combined with `--blank`, `--fortify`, `--workos`, and `--teams` variant flags.

```bash theme={null}
# Check only the Vue and Svelte Fortify variants
composer kits:check -- --vue --svelte --fortify

# Only WorkOS variants across all frameworks
composer kits:check -- --workos
```

## Configuring WorkOS environment variables

To build and run WorkOS variants, set the WorkOS client ID and API key in `orchestrator/.env`. These values are copied into the `.env` file under `build/` at build time.

```bash theme={null}
# orchestrator/.env
WORKOS_CLIENT_ID=your_client_id
WORKOS_API_KEY=your_api_key
```

## Current development status

* **GitHub repository**: [laravel/maestro](https://github.com/laravel/maestro)
* **Formal release**: none yet (no version tags or releases published)
* **Last commit**: April 2026 (actively developed)
* **Required PHP version**: ^8.2
* **Laravel version**: ^13.0

Maestro isn't a package for end users; it functions as **development infrastructure** for the Laravel team and contributors. The starter kits themselves (like `laravel/starter-kit-react`) are generated and managed from this monorepo by Maestro.

<Card title="laravel/maestro repository" icon="github" href="https://github.com/laravel/maestro">
  If you're interested in contributing to a starter kit, start with the Maestro README.
</Card>

<Card title="Laravel starter kit official docs" icon="book-open" href="https://laravel.com/docs/starter-kits">
  See the official documentation for how to use the starter kits themselves.
</Card>


## Related topics

- [Creating a Laravel Starter Kit](/en/advanced/starter-kit-creation.md)
- [Laravel Fortify and Starter Kits](/en/advanced/fortify.md)
- [Laravel Chisel — a post-install script library for starter kits](/en/blog/chisel-introduction.md)
- [Laravel PAO — output optimization for AI agents](/en/blog/pao-introduction.md)
- [Build SPAs with Inertia.js](/en/blog/inertia-introduction.md)
