PHPackages                             coding-sunshine/ensemble-cli - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. coding-sunshine/ensemble-cli

ActiveLibrary[CLI &amp; Console](/categories/cli)

coding-sunshine/ensemble-cli
============================

AI-native Laravel application ensemble. Extends the Laravel installer with AI-powered schema generation and full-stack code scaffolding.

v5.24.7(2mo ago)15↓100%MITPHPPHP ^8.2

Since Aug 14Pushed 2mo agoCompare

[ Source](https://github.com/coding-sunshine/ensemble-cli)[ Packagist](https://packagist.org/packages/coding-sunshine/ensemble-cli)[ RSS](/packages/coding-sunshine-ensemble-cli/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (8)Versions (131)Used By (0)

Laravel Ensemble CLI
====================

[](#laravel-ensemble-cli)

AI-native Laravel application scaffolding. Extends the Laravel installer with AI-powered schema generation and full-stack code scaffolding.

Part of the [Ensemble](https://github.com/coding-sunshine) ecosystem:

- **ensemble-cli** (this package) — Global CLI for creating Laravel projects with AI-powered schema generation
- **[ensemble](https://github.com/coding-sunshine/ensemble)** — Project-level code generation from schemas (installed into your Laravel project)

Installation
------------

[](#installation)

```
composer global require coding-sunshine/ensemble-cli
```

Quick Start
-----------

[](#quick-start)

### Create a new project with AI

[](#create-a-new-project-with-ai)

```
ensemble new my-app
```

The CLI walks you through:

1. **Project name** and directory
2. **AI interview** — describe your app, pick a stack, choose features
3. **Schema generation** — AI produces an `ensemble.json` with models, controllers, pages, and recipes
4. **Project creation** — `composer create-project` with the right starter kit (or any GitHub repository via `--using`)
5. **Scaffolding** — installs recipe packages, writes schema, and runs `ensemble:build`

### Create from a bundled template (no AI needed)

[](#create-from-a-bundled-template-no-ai-needed)

```
ensemble new my-app --template=saas
ensemble new my-app --template=blog
ensemble new my-app --template=ecommerce
ensemble new my-app --template=crm
ensemble new my-app --template=api
ensemble new my-app --template=project-management
```

### Use a custom GitHub starter kit

[](#use-a-custom-github-starter-kit)

```
ensemble new my-app --using=owner/repo
ensemble new my-app --using=github:owner/repo
ensemble new my-app --using=https://github.com/owner/repo
```

Passes the value straight to `npx tiged@latest`, so all GitHub shorthand formats work — just like `laravel new --using`. The `coding-sunshine/ensemble` package is automatically added to the resulting project.

### Create a plain Laravel project (no AI)

[](#create-a-plain-laravel-project-no-ai)

```
ensemble new my-app --no-ai
```

Behaves like `laravel new`, but `coding-sunshine/ensemble` is still installed so you can add a schema later.

### Generate a schema without creating a project

[](#generate-a-schema-without-creating-a-project)

```
ensemble draft
ensemble draft --output=my-schema.json
ensemble draft --template=saas
ensemble draft --provider=ollama --model=llama3.1
```

Then use it later:

```
ensemble new my-app --from=my-schema.json
```

### Fully headless mode

[](#fully-headless-mode)

```
ensemble new my-app --from=schema.json -n
ensemble new my-app --template=saas --pest --database=sqlite -n
```

When `-n` (non-interactive) is set with a schema or template, sensible defaults are auto-applied.

### Extend an existing schema

[](#extend-an-existing-schema)

```
ensemble draft --extend=ensemble.json
```

The AI reads your current schema and adds to it rather than starting from scratch.

### Preview before creating (`--dry-run`)

[](#preview-before-creating---dry-run)

```
ensemble new my-app --from=schema.json --dry-run
ensemble init --template=saas --dry-run
```

### Validate a schema

[](#validate-a-schema)

```
ensemble validate
ensemble validate path/to/ensemble.json
```

### Compare two schemas

[](#compare-two-schemas)

```
ensemble diff old-schema.json new-schema.json
```

### Export schema as documentation or diagram

[](#export-schema-as-documentation-or-diagram)

```
ensemble export
ensemble export ensemble.json -o SCHEMA.md
ensemble export --format=mermaid -o schema.mmd
ensemble export --format=schema-graph -o schema-graph.json
```

- **markdown** (default) — Human-readable tables for models, fields, relationships, controllers, pages
- **mermaid** — Mermaid ER diagram
- **schema-graph** — JSON nodes and edges for tooling or a visual builder

### Add Ensemble to an existing project

[](#add-ensemble-to-an-existing-project)

```
cd existing-laravel-app
ensemble init
ensemble init --from=schema.json
ensemble init --template=crm
```

### Modify a schema with natural language

[](#modify-a-schema-with-natural-language)

```
ensemble ai "add a comments model with a body field and a belongsTo Post"
ensemble ai "add soft deletes to all models" --provider=openai
```

### Autonomous AI agent (self-correcting loop)

[](#autonomous-ai-agent-self-correcting-loop)

```
ensemble agent "Add a complete SaaS billing system with plans, subscriptions and invoices"
ensemble agent "Fix all validation errors in my schema" --max-iterations=5
ensemble agent "..." --dry-run          # Show final diff, do not write
ensemble agent "..." --apply            # Skip confirmation prompt
```

The agent runs a prompt → patch → validate loop. If the patched schema still has validation errors, it automatically feeds them back to the AI and tries again — up to `--max-iterations` times (default 3). Stops as soon as the schema is clean or the limit is reached, then shows a cumulative diff before asking for confirmation.

### Apply an AI-generated schema patch

[](#apply-an-ai-generated-schema-patch)

```
ensemble update patch.yaml
ensemble update patch.yaml --yes    # Apply without confirmation
```

### Manage recipes

[](#manage-recipes)

```
ensemble recipe list                        # List all known recipes
ensemble recipe add roles-permissions       # Add a recipe to ensemble.json
ensemble recipe add spatie/laravel-medialibrary
ensemble recipe remove roles-permissions
```

The list of features in `ensemble new` is **dynamic**: it comes from the known recipe catalog, so new recipes appear automatically. When you add a recipe, the CLI optionally checks [LaraPlugins.io](https://laraplugins.io) and shows a health warning for packages with low health scores. Run `ensemble doctor` to see dependency health for all recipe packages in your project.

Commands
--------

[](#commands)

CommandDescription`ensemble new `Create a new Laravel project with optional AI scaffolding`ensemble draft`Generate an `ensemble.json` schema without creating a project`ensemble init`Add Ensemble scaffolding to an existing Laravel project`ensemble ai `Modify a schema using a natural language prompt`ensemble agent  [--max-iterations=N]`**New** — Autonomous AI agent: prompt → patch → validate, self-corrects until clean`ensemble update `Apply a YAML schema patch to `ensemble.json``ensemble recipe list|add|remove`Manage recipe entries in `ensemble.json``ensemble template list|show|install`Browse and install bundled project templates (12 templates: saas, blog, ecommerce, crm, api, project-management, marketplace, booking, inventory, helpdesk, lms, social)`ensemble show [path]`Pretty-print an `ensemble.json` schema`ensemble validate [path]`Validate schema structure and report errors/warnings`ensemble diff  `Compare two schemas and show differences`ensemble export [path] [--format=markdown|mermaid|schema-graph] [-o file]`Export schema`ensemble config [action]`View or modify saved CLI configuration`ensemble doctor`Check environment and **detect local AI** (claude-cli, gemini-cli, LM Studio); recommends provider if none set`ensemble mcp`**New** — Run MCP server over stdio (tools: get\_schema, update\_schema, validate\_schema, create\_project, build\_project, append\_model, list\_recipes, snapshot\_schema, audit\_project, search\_packages)`ensemble watch [path] [--auto-build]`**New** — Watch schema file for changes; optional `--auto-build` to run build on change (debounced)After creation: Artisan commands
--------------------------------

[](#after-creation-artisan-commands)

Once a project has `coding-sunshine/ensemble` installed, use these Artisan commands for AI-friendly iteration.

**Bringing an existing app into Ensemble?** Use `ensemble:adopt` to scan your existing models, relationships, controllers, and installed packages and produce a complete `ensemble.json` in one step. Or load one of the bundled demo schemas with `ensemble:demo` to start from a realistic baseline. The Studio **Adopt** panel (`⊕` icon) provides a visual adoption report showing your models, detected packages, and actionable suggestions.

CommandDescription`php artisan ensemble:check [path]`Validate + lint + dry-run plan in one checklist`php artisan ensemble:ci [path] [--plan]`**New** — CI health gate: validate + lint, exit 1 on any error`php artisan ensemble:build [--dry-run]`Generate code (or preview without writing)`php artisan ensemble:fix [--dry-run]`AI-powered repair of validation errors`php artisan ensemble:audit [--modified-only] [--json]`**New** — Show generated files modified since last build`php artisan ensemble:snapshot [name] [--list] [--rollback] [--delete]`**New** — Save/restore named schema snapshots`php artisan ensemble:why `Show which generator produced a file and its source model`php artisan ensemble:packages [--all]`List installed packages and available Ensemble features`php artisan ensemble:validate [--json]`Validate schema; `--json` for automation`php artisan ensemble:lint [--fix]`Lint for design errors: FK indexes, N+1 risks, security`php artisan ensemble:append `Add a model to `ensemble.json``php artisan ensemble:reduce `Remove a model from schema`php artisan ensemble:from-database [--watch]`**New `--watch`** — Generate schema from DB; re-run on migration changes`php artisan ensemble:apply `Merge a JSON fragment into `ensemble.json``php artisan ensemble:diff`Compare current schema with last build`php artisan ensemble:relationship`Add a relationship between models (previews both sides)`php artisan ensemble:trace [--write-schema] [--dry-run]`Reverse-engineer existing models; `--write-schema` also updates `ensemble.json``php artisan ensemble:adopt [--dry-run] [--force]`**New** — Full app adoption: scan models, relationships, controllers, packages → `ensemble.json``php artisan ensemble:demo [name] [--list] [--apply]`**New** — Browse/apply pre-built demo schemas (saas, blog, ecommerce, crm, api, project-management, marketplace, booking, inventory, helpdesk, lms, social)`php artisan ensemble:install [--force]`**New** — First-run setup wizard: publish config, detect AI, init schema`php artisan ensemble:diagram`Export schema as ER diagram or graph JSON`php artisan ensemble:analyze`Detect stack, packages, and databaseSee the [ensemble](https://github.com/coding-sunshine/ensemble) package README for the full command reference, schema format, and configuration options.

AI Providers
------------

[](#ai-providers)

ProviderFlagDefault ModelAPI Key EnvAnthropic`--provider=anthropic``claude-sonnet-4-20250514``ANTHROPIC_API_KEY`OpenAI`--provider=openai``gpt-4o``OPENAI_API_KEY`OpenRouter`--provider=openrouter``anthropic/claude-sonnet-4``OPENROUTER_API_KEY`Ollama`--provider=ollama``llama3.1`None (local)Claude CLI`--provider=claude-cli`—None — uses the `claude` CLI toolGemini CLI`--provider=gemini-cli`—None — uses the `gemini` CLI toolLM Studio`--provider=lmstudio`Any loaded modelNone — runs at `localhost:1234`Prism`--provider=prism`Configured in `config/prism.php`Via Prism configSet `ENSEMBLE_API_KEY` as a universal key that works with any cloud provider.

**Free local AI (no API key):** Install the `claude` CLI (`npm install -g @anthropic-ai/claude`) or `gemini` CLI, or run [LM Studio](https://lmstudio.ai). Run `ensemble doctor` to auto-detect which tools are available and get the right `ensemble config set` suggestion.

**Prism:** Requires `composer require prism-php/prism` and a Laravel application context. Use Prism to access any LLM supported by the prism-php library through a unified interface.

For Ollama on a remote host, set `OLLAMA_HOST=http://your-host:11434`.

Configuration
-------------

[](#configuration)

API keys and default provider are saved to `~/.ensemble/config.json` after first use:

```
ensemble config                              # List all saved config
ensemble config get default_provider         # Get a value
ensemble config set default_provider openai  # Set a value
ensemble config clear providers.openai       # Remove a key
```

Schema Format
-------------

[](#schema-format)

The `ensemble.json` file describes your entire application:

```
{
    "version": 1,
    "app": {
        "name": "project-manager",
        "stack": "livewire",
        "ui": "mary"
    },
    "models": {
        "Project": {
            "fields": {
                "name": "string:200",
                "status": "enum:draft,active,archived default:draft",
                "budget": "decimal:10,2 nullable"
            },
            "relationships": {
                "tasks": "hasMany:Task",
                "owner": "belongsTo:User"
            },
            "softDeletes": true,
            "meta": {
                "seeder_count": 20,
                "seeder_states": ["active"]
            },
            "policies": {
                "update": "owner or admin"
            }
        }
    },
    "controllers": {
        "Project": { "resource": "web" }
    },
    "pages": {
        "dashboard": {
            "layout": "sidebar",
            "sections": [{ "widget": "stats", "data": ["projects_count"] }]
        },
        "projects.index": {
            "layout": "sidebar",
            "columns": ["name", "status", "owner.name"]
        }
    },
    "notifications": {
        "ProjectArchived": {
            "channels": ["mail", "database"],
            "to": "project.members",
            "subject": "Project {project.name} has been archived"
        }
    },
    "workflows": {
        "task_lifecycle": {
            "model": "Task",
            "field": "status",
            "states": ["todo", "in_progress", "review", "done"],
            "transitions": {
                "start": { "from": "todo", "to": "in_progress" },
                "complete": { "from": "review", "to": "done" }
            }
        }
    },
    "recipes": [
        { "name": "roles-permissions", "package": "spatie/laravel-permission" },
        { "name": "notifications", "package": null }
    ]
}
```

Field syntax follows [Laravel Blueprint](https://blueprint.laravelshift.com/) conventions. Schemas are validated on read for structural correctness.

All Options
-----------

[](#all-options)

### `ensemble new`

[](#ensemble-new)

OptionDescription`--from=`Create project from an existing `ensemble.json``-t, --template=`Use a bundled template (saas, blog, ecommerce, crm, api, project-management, marketplace, booking, inventory, helpdesk, lms, social)`--using=`GitHub repo / URL for a custom starter kit (owner/repo, github:owner/repo, https://…)`--dry-run`Show what would happen without creating anything`--no-ai`Skip AI, create a plain Laravel project`--provider=`AI provider (anthropic, openai, openrouter, ollama, prism)`--model=`Override the default AI model`--api-key=`API key for the AI provider`--ai-budget=`Budget for `ensemble:build` (none, low, medium, high)`--react`Install the React starter kit`--vue`Install the Vue starter kit`--svelte`Install the Svelte starter kit`--livewire`Install the Livewire starter kit`--pest`Use Pest testing framework`--git`Initialize a Git repository`--github[=visibility]`Create a GitHub repository`-f, --force`Force install even if directory exists### `ensemble draft`

[](#ensemble-draft)

OptionDescription`-o, --output=`Output path (default: `./ensemble.json`)`-t, --template=`Use a bundled template instead of AI (saas, blog, ecommerce, crm, api, project-management, marketplace, booking, inventory, helpdesk, lms, social)`-e, --extend=`Extend an existing schema with AI additions`--provider=`AI provider`--model=`Override AI model`--api-key=`API key### `ensemble init`

[](#ensemble-init)

OptionDescription`--path=`Path to existing Laravel project (default: `.`)`--from=`Path to existing `ensemble.json``-t, --template=`Use a bundled template (saas, blog, ecommerce, crm, api, project-management, marketplace, booking, inventory, helpdesk, lms, social)`--dry-run`Show what would happen without making changes`--provider=`AI provider`--model=`Override AI model`--api-key=`API key`--ai-budget=`Budget for `ensemble:build`### `ensemble ai`

[](#ensemble-ai)

```
ensemble ai  [--provider=...] [--model=...] [--api-key=...] [--schema=path]

```

Interprets natural language to modify `ensemble.json`. Examples:

```
ensemble ai "add an Order model with a total decimal and a belongsTo User"
ensemble ai "give all models soft deletes"
ensemble ai "add a comments recipe"
```

### `ensemble update`

[](#ensemble-update)

```
ensemble update  [--yes] [--provider=...] [--model=...]

```

Applies a YAML schema patch. Use `--yes` to skip confirmation.

### `ensemble recipe`

[](#ensemble-recipe)

```
ensemble recipe list
ensemble recipe add
ensemble recipe remove

```

Known feature keys: `roles-permissions`, `saas-billing`, `media-uploads`, `search`, `activity-log`, `admin-panel`, `multi-tenancy`, `api-auth`, `notifications`, `api-docs`, `openapi-cli`, `feature-flags`, `event-sourcing`, `data-transfer`, `query-builder`, `rate-limiting`, `api-versioning`.

Run `ensemble recipe list` for the full catalog with descriptions.

### `ensemble template`

[](#ensemble-template)

```
ensemble template list                   # List all 12 bundled templates
ensemble template show             # Show details and model list for a template
ensemble template install          # Write the template schema to ensemble.json

```

Available templates:

TemplateDescription`saas`SaaS starter (teams, subscriptions, billing)`blog`Blog platform (posts, categories, tags, comments)`ecommerce`E-commerce store (products, orders, reviews)`crm`CRM (contacts, companies, deals, activities)`api`API service (tokens, webhooks, rate limiting)`project-management`Project management (workspaces, boards, tasks, time tracking)`marketplace`Multi-vendor marketplace (vendors, products, orders)`booking`Booking &amp; scheduling (services, providers, appointments)`inventory`Inventory management (warehouses, stock, purchase orders)`helpdesk`Help desk (tickets, replies, knowledge base)`lms`Learning management system (courses, lessons, enrollments)`social`Social app (profiles, posts, follows, messaging)You can also load external templates from GitHub:

```
ensemble new my-app --using=github:owner/repo
ensemble new my-app --using=https://raw.githubusercontent.com/owner/repo/main/ensemble.json
```

### `ensemble validate`

[](#ensemble-validate)

```
ensemble validate [path]

```

Validates schema structure and reports errors/warnings. Default path: `./ensemble.json`.

### `ensemble diff`

[](#ensemble-diff)

```
ensemble diff

```

### `ensemble export`

[](#ensemble-export)

OptionDescription`-f, --format=``markdown` (default), `mermaid`, or `schema-graph``-o, --output=`Write to a file instead of stdout### `ensemble config`

[](#ensemble-config)

```
ensemble config [action] [key] [value]

```

Actions: `list` (default), `get`, `set`, `clear`.

### `ensemble doctor`

[](#ensemble-doctor)

No options. Checks PHP version, extensions, Composer, Git, Node/package managers, and AI setup. **Local AI detection:** if no API key is set, doctor checks for `claude-cli`, `gemini-cli`, and LM Studio (localhost:1234) and recommends a provider. **Dependency health:** if the current directory has an `ensemble.json` with recipes, doctor fetches package health from [LaraPlugins.io](https://laraplugins.io) and shows a status line per recipe (healthy/medium/unhealthy). Use with Studio or `ensemble draft` for key-free local workflows.

### `ensemble mcp`

[](#ensemble-mcp)

Runs a Model Context Protocol (MCP) server over stdio. Exposes tools for schema read/write, validation, project creation, build, append model, recipes, snapshots, audit, **package search** (`search_packages`, with optional `healthy_only` filter), and **package details** (`get_package_details`, including health score from [LaraPlugins.io](https://laraplugins.io)). For AI agents or IDE integrations that speak MCP.

### `ensemble watch`

[](#ensemble-watch)

Watches the schema file (default `ensemble.json` in the current directory) for changes. Use `--auto-build` to run a build after each change (debounced). Run from the project root where `ensemble.json` and `php artisan` are available.

Environment Variables
---------------------

[](#environment-variables)

VariablePurpose`ENSEMBLE_API_KEY`Universal API key for any cloud provider`ANTHROPIC_API_KEY`Anthropic API key`OPENAI_API_KEY`OpenAI API key`OPENROUTER_API_KEY`OpenRouter API key`OLLAMA_HOST`Ollama base URL (default: `http://localhost:11434`)**Local AI (no API key):** set provider to `claude-cli`, `gemini-cli`, or `lmstudio` in config or via `ensemble config set provider `. Doctor will suggest one if available.

API key resolution priority: `--api-key` flag &gt; `ENSEMBLE_API_KEY` &gt; provider-specific env var &gt; saved config &gt; interactive prompt.

How It Works
------------

[](#how-it-works)

1. **Interview** — The CLI uses `laravel/prompts` to ask about your app: description, frontend stack, UI library, and features
2. **AI generation** — Your description is sent to the chosen AI provider with a system prompt that returns structured JSON
3. **Validation** — The response is parsed, validated for structural correctness, and merged with your interactive choices
4. **Project creation** — A Laravel project is created with the appropriate starter kit (or a custom GitHub repo via `--using`)
5. **Scaffolding** — The companion `coding-sunshine/ensemble` package reads the schema and generates models, migrations, controllers, views, and more

Security
--------

[](#security)

### API Keys

[](#api-keys)

Store API keys in environment variables (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, etc.) rather than in saved config. The `~/.ensemble/config.json` file is created with `0600` permissions, but avoid writing keys there if possible.

### MCP Server (`ensemble mcp`)

[](#mcp-server-ensemble-mcp)

The CLI MCP server exposes project-creation, schema-write, and audit tools over stdio. It is intended for local dev use only. Do not expose the MCP server's stdin/stdout over a network socket. Only connect trusted AI agents to it.

### Generated Artisan Commands

[](#generated-artisan-commands)

`ensemble watch --auto-build` runs `php artisan ensemble:build --dry-run` in the project directory. Ensure the project directory is trusted before enabling `--auto-build` in automated scripts.

License
-------

[](#license)

Laravel Ensemble CLI is open-sourced software licensed under the [MIT license](LICENSE.md).

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance87

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity93

Battle-tested with a long release history

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~32 days

Recently: every ~0 days

Total

130

Last Release

60d ago

Major Versions

v1.5.0 → v2.0.02018-02-01

v2.3.0 → v3.0.02019-11-26

v3.2.0 → v4.0.02020-09-03

v4.5.1 → v5.0.02023-08-01

v0.1.0 → v1.0.12026-03-10

PHP version history (6 changes)v3.0.0PHP ^7.2

v3.1.0PHP ^7.2.9

v4.0.1PHP ^7.3

v4.1.0PHP ^7.3|^8.0

v5.0.0PHP ^8.1

v5.3.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/d07f33e087402622624634afe8e1994a346a9732e24b9802aad264a3c5de0961?d=identicon)[coding-sunshine](/maintainers/coding-sunshine)

---

Top Contributors

[![driesvints](https://avatars.githubusercontent.com/u/594614?v=4)](https://github.com/driesvints "driesvints (220 commits)")[![taylorotwell](https://avatars.githubusercontent.com/u/463230?v=4)](https://github.com/taylorotwell "taylorotwell (185 commits)")[![nunomaduro](https://avatars.githubusercontent.com/u/5457236?v=4)](https://github.com/nunomaduro "nunomaduro (20 commits)")[![crynobone](https://avatars.githubusercontent.com/u/172966?v=4)](https://github.com/crynobone "crynobone (20 commits)")[![coding-sunshine](https://avatars.githubusercontent.com/u/3206025?v=4)](https://github.com/coding-sunshine "coding-sunshine (19 commits)")[![GrahamCampbell](https://avatars.githubusercontent.com/u/2829600?v=4)](https://github.com/GrahamCampbell "GrahamCampbell (14 commits)")[![themsaid](https://avatars.githubusercontent.com/u/4332182?v=4)](https://github.com/themsaid "themsaid (9 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (6 commits)")[![jessarcher](https://avatars.githubusercontent.com/u/4977161?v=4)](https://github.com/jessarcher "jessarcher (6 commits)")[![Jubeki](https://avatars.githubusercontent.com/u/15707543?v=4)](https://github.com/Jubeki "Jubeki (6 commits)")[![peter279k](https://avatars.githubusercontent.com/u/9021747?v=4)](https://github.com/peter279k "peter279k (4 commits)")[![xiCO2k](https://avatars.githubusercontent.com/u/823088?v=4)](https://github.com/xiCO2k "xiCO2k (4 commits)")[![alexbowers](https://avatars.githubusercontent.com/u/842974?v=4)](https://github.com/alexbowers "alexbowers (4 commits)")[![mpociot](https://avatars.githubusercontent.com/u/804684?v=4)](https://github.com/mpociot "mpociot (4 commits)")[![browner12](https://avatars.githubusercontent.com/u/5232313?v=4)](https://github.com/browner12 "browner12 (4 commits)")[![TJSoler](https://avatars.githubusercontent.com/u/17246882?v=4)](https://github.com/TJSoler "TJSoler (3 commits)")[![peterojo](https://avatars.githubusercontent.com/u/5240725?v=4)](https://github.com/peterojo "peterojo (3 commits)")[![joetannenbaum](https://avatars.githubusercontent.com/u/2702148?v=4)](https://github.com/joetannenbaum "joetannenbaum (3 commits)")[![tonysm](https://avatars.githubusercontent.com/u/1178621?v=4)](https://github.com/tonysm "tonysm (3 commits)")[![SamAsEnd](https://avatars.githubusercontent.com/u/9657132?v=4)](https://github.com/SamAsEnd "SamAsEnd (3 commits)")

---

Tags

laravel

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/coding-sunshine-ensemble-cli/health.svg)

```
[![Health](https://phpackages.com/badges/coding-sunshine-ensemble-cli/health.svg)](https://phpackages.com/packages/coding-sunshine-ensemble-cli)
```

###  Alternatives

[laravel/installer

Laravel application installer.

83610.7M20](/packages/laravel-installer)[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.2k84.2M224](/packages/laravel-horizon)[laravel-zero/framework

The Laravel Zero Framework.

3371.4M368](/packages/laravel-zero-framework)[illuminate/console

The Illuminate Console package.

12944.1M5.1k](/packages/illuminate-console)[tightenco/jigsaw

Simple static sites with Laravel's Blade.

2.2k438.5k29](/packages/tightenco-jigsaw)[laravel/vapor-cli

The Laravel Vapor CLI

31310.7M8](/packages/laravel-vapor-cli)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
