You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Setting up a Shopware development environment is not straightforward; they are many options to use. - we've downgraded a few, but users may still hold onto them out of familiarity or concerns about containerization.
All setups have their drawbacks and which option the developer chooses defines a totally different experience. Also many variations lead to fragmentation, which makes it difficult to optimize the software for a specific stack and confuses new developers.
The Solution
A single CLI that handles everything: from bootstrapping a new project to managing multiple deployment environments. Why: No manual setup, no configuration drift, no context switching between tools.
(This can be the command for the CLI/Builders landing page block; will also need to be included in CLI devdocs)
[!NOTE]
The user does not need to install the CLI, it can be run also directly using npx @shopware-ag/shopware-cli <command>
shopware-cli project create my-shop
cd my-shop
shopware-cli project dev
That's it. You're able to develop.
Quick Start (Implemented)
1. Create a Project
shopware-cli project create my-shop
This command (all implemented):
Lets you pick a Shopware version interactively (all stable releases from 6.4.18+)
Installs everything via Docker (no local PHP required)
Creates a .shopware-project.yml with a Docker environment pre-configured (this says the local setup is Docker)
Pre-configured CI/CD workflows for GitHub Actions / Gitlab CI
Optional: Deployment pre-configured using Deployer PHP
2. Start Developing (WIP); replacement for the make file. instead of make up you'd run this instead)
shopware-cli project dev
This opens an interactive TUI with tabs. User stories, in order/flow:
1. Start installation from the TUI: As a developer, I want to start Shopware installation from an interactive terminal UI, so that I can set up my project without manually entering all options via CLI flags.
2. Choose whether to install Shopware: As a developer, I want the TUI to ask whether I want to install Shopware, skip installation, or quit, so that I can control the setup flow from the first screen.
3. Select the default installation language: As a developer, I want to choose the default language to install from the same options as the language pack/First Run Wizard, so that the shop is initialized in the language I need.
4. Select the default currency: As a developer, I want to choose the default currency for the shop during setup, so that the initial shop configuration matches my target market.
5. Enter admin credentials during installation: As a developer, I want the installer to enable me to enter the admin username and password, so that I can access the Administration immediately after setup.
6. Toggle password visibility: As a developer, I want a password eye-toggle in the TUI, so that I can temporarily reveal the password while typing and avoid input mistakes.
7. See a live summary of chosen values: As a developer, I want the question panel to show my currently selected answers as I progress through setup, so that I can review my choices before submitting the installation.
8. Confirm installation with Enter: As a developer, I want to confirm my setup choices by pressing Enter, so that the installation starts with a familiar terminal interaction/one-click.
Installation progress and deployment helper
9. View installation progress in a deployment helper screen: As a developer, I want to see a deployment helper view after confirming the setup, so that I can follow the progress of the Shopware installation.
10. See installation logs while the shop is being installed: As a developer, I want the deployment helper to display installation logs, so that I can understand what is happening during setup and diagnose failures.
11. Replace or hide verbose logs with a simpler default progress view: As a developer, I want the installation view to optionally hide the verbose deployment helper logs (behind Arnold's component?) and show a progress bar by default, so that the setup experience feels cleaner and less overwhelming.
Post-install dashboard
12. Land on a dashboard after installation: As a developer, I want to be taken to a dashboard after installation finishes, so that I immediately see how to access and use my local Shopware instance.
13. See core instance information on the dashboard: As a developer, I want the dashboard to show basic instance information such as environment, shop URL, and admin URL, so that I can quickly access my running project.
14. Access keyboard shortcuts from the dashboard: As a developer, I want the dashboard to tell me that I can press F for shortcuts, so that I can discover and use keyboard-driven interactions more efficiently.
15. See available services on the dashboard: As a developer, I want the dashboard to show the services available in my local setup, so that I know which supporting tools are running and avoid extra manual setup. (Adminer/enables you to look at the database tables; queue (its own tool) so you can look at background events/processes happening; mailpit/inspect outgoing emails generated by the shop)
16. See admin access information on the dashboard: As a developer, I want the dashboard to show admin access information, so that I can quickly log into the Administration after setup.
17. Auto-discover services from Docker Compose ports: As a developer, I want services to be auto-discovered from Docker Compose port definitions, so that the dashboard can list available tools without requiring manual configuration.
Logs experience
21. Switch between the dashboard view and logs: As a developer, I want to switch between the general dashboard view and a logs view, so that I can move quickly between system information and debugging output.
22. Read Shopware log output in the logs tab: As a developer, I want the logs tab to show Shopware logs, including the default dev.log, so that I can diagnose application behavior from within the terminal UI.
23. Read Docker logs in the logs tab: As a developer, I want the logs tab to include Docker logs, so that I can debug container-level issues without leaving the terminal UI.
24. Read database logs in the logs tab: As a developer, I want the logs tab to include database logs, so that I can identify persistence and query-related issues from the same interface.
25. Stream logs in real time: As a developer, I want the logs tab to stream container logs in real time directly into the terminal, so that I can observe live activity while working locally.
26. Distinguish logs by source: As a developer, I want logs to be labeled by source, such as app, db, and worker, so that I can quickly understand where a message is coming from.
Dependency: Hide Shopware-owned deprecations in the logs view: As a developer building extensions, I want the logs view to suppress deprecations originating from Shopware itself, so that I can focus on issues that affect my own build and extension development. (dependency: needs to be addressed in the Core itself; not a Q2 goal. Quality issue, to take up with A and Paul. Doesn't impact CLI directly, but does impact overall user experience. When there are new deprecations every day, you stop caring/get worn out. Too many. When you install the software you should have zero deprecations when you install new software, and your log file is empty. Why are users outdated when you just started?)
Exit and lifecycle handling
27. Exit the TUI with keyboard shortcuts: As a developer, I want to be able to leave the TUI by pressing Ctrl+C or Q, so that I can exit the interface using common terminal controls.
28. Decide whether containers should keep running on exit: As a developer, I want the TUI to ask whether Docker containers should be stopped or kept running when I exit, so that I can control resource usage and preserve my local environment when needed.
29. Return to the CLI access view after quitting: As a developer, I want quitting the TUI to return me to the CLI “access your shop” view, so that I do not lose context after leaving the interactive interface.
30. Open a customization tab: As a developer, I want a dedicated Customization tab in the terminal UI, so that I can manage development-related project settings in one place.
31. Configure debugger support: As a developer, I want a debugger option in the Customization tab, so that I can enable or manage debugging behavior for local development.
32. Choose the PHP version: As a developer, I want to choose which PHP version the project should use, so that I can align my local environment with project requirements.
33. Inspect profiling information: As a developer, I want a profiling option that helps me understand what is slow on a page, so that I can investigate performance bottlenecks during development.
34. [P1] Configure local environment settings: As a developer, I want a local environment settings area in the Customization tab, so that I can configure project-specific development settings from the terminal UI.
35. [P2] Persist local development settings: As a developer, I want a foundation for storing local project settings, so that each developer can keep and change their own Shopware project configuration locally.
36. [P0] Surface configuration mistakes: As a developer, I want the tool to identify configuration mistakes, so that I can correct local setup problems before they cause failures.
37. [P1] Suggest better-performing configuration: As a developer, I want the tool to suggest improved local configuration for better performance, so that I can optimize my environment without manually researching best practices.
Logs tab already exists - real-time container logs, streamed directly into the terminal:
38. [P0] Manage extensions from the terminal UI: As a developer, I want a future Extensions tab in the terminal UI, so that I can manage plugins without leaving the terminal.
39. [P0] Upgrade Shopware from the terminal UI: As a developer, I want to choose which Shopware version to upgrade to from the terminal UI, so that I can manage upgrades from the same interface I use for local development.
40. [P0] Run extension compatibility checks before upgrading: As a developer, I want to check extension compatibility against a target Shopware version before upgrading, so that I can identify upgrade risks in advance.
41. [P0] Review compatibility results per extension: As a developer, I want to see compatibility results in rows for each extension, so that I can evaluate which extensions are ready for the upgrade.
42. [P0] Choose whether to proceed with upgrade after compatibility checks: As a developer, I want the terminal UI to let me decide whether to continue with an upgrade after seeing compatibility results, so that I stay in control of risky version changes.
Shopware Account integration (high-effort, includes SBP; more a Q4 issues, add GH issue pointing to Jira issue)
Business questions:
Do we want every dev to have an account?
How integrated should it be?
Benefits to users: in-terminal/avoids tabbing back and forth, and you can install free extensions without all the back and forth (currently set up domain, verify, first time may take one hour to do it so this lowers TCO)
43. [P1] Link the local shop to a Shopware Account from the CLI: As a developer, I want to link my local shop to my Shopware Account directly from the CLI, so that account-connected workflows are available without switching tools.
44. [P1] Suggest extensions from the Shopware Account in the CLI: As a developer, I want the CLI to suggest free and paid extensions from my Shopware Account, so that I can discover relevant add-ons directly in my local workflow.
45. [P1] Install account-linked extensions from the CLI: As a developer, I want to install free and paid extensions from my Shopware Account directly from the CLI, so that I can extend my local shop without leaving the terminal.
3. Build and Watch Assets
These commands are already in the CLI and functional.
Integrated them into the TUI, to show whether admin-build is running, and when it's failing, show the logs.
Integrated for storefront into the TUI.
User can also see where the watcher is running, toggle it on/off.
# Build for production
shopware-cli project admin-build
shopware-cli project storefront-build
# Watch mode for development (hot reload)
shopware-cli project admin-watch
shopware-cli project storefront-watch
4. Run Console Commands
[WIP] Proxy the core CLI via the Shopware CLI to remove one layer of CLI, and so that you have your regular shell. (Addresses complaint about Docker setup, that you lose your shell.)
[WIP] get full list of bin/console commands TODO) and streamline existing Shopware CLI commands (esp around accounts section)
Execute any of the 120 bin/console commands in shopware/shopware without entering the container:
We could ship also an alias for faster typing (could ask users if this is helpful, also what the alias actually is)
swx cache:clear
swx plugin:create Fooo
Full shell completion is included - plugin names, command names, and arguments are auto-completed.
Multi-Environment Management
This is where the CLI truly shines. Define all your environments in one file and operate on any of them with a single flag.
Questions and risks to resolve:
How deep do we want to go? Upgrade command, should it be possible across hosting models?
For SSH: when upgrading, do we run Deployer?
Start with local Docker, Symfony options in iteration 1; then think about how it integrates with remote things (SSH, PaaS, SaaS shops)
Permissions: going incrementally, starting with the local Docker and Symfony options, will surface concerns and how to address
Add Environments via TUI
shopware-cli project config manage
An interactive form guides you through adding any environment type - SSH credentials, Docker settings, PaaS configuration - without editing YAML by hand.
Supported Environment Types
Type
Use Case
How It Works
docker
Local development
Executes via docker compose exec, auto-discovers services from ports
local
Native PHP setup
Direct PHP/Composer execution, reads DATABASE_URL from .env
# Auto-detects compression format (.gz, .zst, or plain SQL)
shopware-cli project import staging.sql.zst
Typical Workflow: Refresh Local from Production
# 1. Create an anonymized dump of production
shopware-cli project -e production dump --anonymize --clean --output prod.sql.zst
# 2. Import into local environment
shopware-cli project import prod.sql.zst
Integration into Deployment Helper
The Deployment Helper uses already the same configuration file as shopware-cli. So it will be also aware of environments, that you can:
so when you deploy to staging, that the Analytics plugin will be removed if it was installed.
Command Reference
Command
Description
project create
Bootstrap a new Shopware project
project dev
Start the interactive TUI (services + logs)
project console <cmd>
Execute bin/console commands
project admin-build
Build Administration assets
project admin-watch
Watch Administration assets (hot reload)
project storefront-build
Build Storefront assets
project storefront-watch
Watch Storefront assets (hot reload)
project dump
Export a database dump
project import db <file>
Import a database dump
project config manage
Manage environments via TUI
project validate
Run code quality checks
project format
Run code formatters
Further ideas
Import / Export entire Shops
Right now shopware-cli allows to export a database dump, we could also think about exporting an entire shop: dump + all assets.
In that way you could export a production shop, import it locally to have the same database + all uploaded assets.
Problem statement
Discussed in shopware/shopware#14993
Originally posted by shyim February 16, 2026
The Problem
Setting up a Shopware development environment is not straightforward; they are many options to use.
- we've downgraded a few, but users may still hold onto them out of familiarity or concerns about containerization.
All setups have their drawbacks and which option the developer chooses defines a totally different experience. Also many variations lead to fragmentation, which makes it difficult to optimize the software for a specific stack and confuses new developers.
The Solution
A single CLI that handles everything: from bootstrapping a new project to managing multiple deployment environments. Why: No manual setup, no configuration drift, no context switching between tools.
(This can be the command for the CLI/Builders landing page block; will also need to be included in CLI devdocs)
That's it. You're able to develop.
Quick Start (Implemented)
1. Create a Project
This command (all implemented):
.shopware-project.ymlwith a Docker environment pre-configured (this says the local setup is Docker)2. Start Developing (WIP); replacement for the make file. instead of make up you'd run this instead)
This opens an interactive TUI with tabs. User stories, in order/flow:
Installation progress and deployment helper
Post-install dashboard
Logs experience
21. Switch between the dashboard view and logs: As a developer, I want to switch between the general dashboard view and a logs view, so that I can move quickly between system information and debugging output.
22. Read Shopware log output in the logs tab: As a developer, I want the logs tab to show Shopware logs, including the default dev.log, so that I can diagnose application behavior from within the terminal UI.
23. Read Docker logs in the logs tab: As a developer, I want the logs tab to include Docker logs, so that I can debug container-level issues without leaving the terminal UI.
24. Read database logs in the logs tab: As a developer, I want the logs tab to include database logs, so that I can identify persistence and query-related issues from the same interface.
25. Stream logs in real time: As a developer, I want the logs tab to stream container logs in real time directly into the terminal, so that I can observe live activity while working locally.
26. Distinguish logs by source: As a developer, I want logs to be labeled by source, such as app, db, and worker, so that I can quickly understand where a message is coming from.
Dependency: Hide Shopware-owned deprecations in the logs view: As a developer building extensions, I want the logs view to suppress deprecations originating from Shopware itself, so that I can focus on issues that affect my own build and extension development. (dependency: needs to be addressed in the Core itself; not a Q2 goal. Quality issue, to take up with A and Paul. Doesn't impact CLI directly, but does impact overall user experience. When there are new deprecations every day, you stop caring/get worn out. Too many. When you install the software you should have zero deprecations when you install new software, and your log file is empty. Why are users outdated when you just started?)
Exit and lifecycle handling
Customization tab (to do)
Logs tab already exists - real-time container logs, streamed directly into the terminal:
Services are auto-discovered from Docker Compose ports.
Extensions tab
See #1063
Shopware Account integration (high-effort, includes SBP; more a Q4 issues, add GH issue pointing to Jira issue)
Business questions:
3. Build and Watch Assets
These commands are already in the CLI and functional.
4. Run Console Commands
bin/consolecommands in shopware/shopware without entering the container:Full shell completion is included - plugin names, command names, and arguments are auto-completed.
Multi-Environment Management
This is where the CLI truly shines. Define all your environments in one file and operate on any of them with a single flag.
Questions and risks to resolve:
Add Environments via TUI
An interactive form guides you through adding any environment type - SSH credentials, Docker settings, PaaS configuration - without editing YAML by hand.
Supported Environment Types
dockerdocker compose exec, auto-discovers services from portslocalDATABASE_URLfrom.envsymfony-clisymfony console,symfony composer,symfony phpsshpaasOne Flag, Any Environment
Every project command works across all environment types with the
-eflag:# Clear cache on staging shopware-cli project -e staging console cache:clearThe default environment is
local. If no environments are configured, Docker is auto-detected from existing compose files.Example Configuration
Secrets can reference environment variables (
${VAR}) to keep credentials out of version control.Database Synchronization
Sync data between environments with built-in GDPR-compliant anonymization.
Export a Database Dump
Import a Dump
# Auto-detects compression format (.gz, .zst, or plain SQL) shopware-cli project import staging.sql.zstTypical Workflow: Refresh Local from Production
Integration into Deployment Helper
The Deployment Helper uses already the same configuration file as shopware-cli. So it will be also aware of environments, that you can:
so when you deploy to staging, that the Analytics plugin will be removed if it was installed.
Command Reference
project createproject devproject console <cmd>bin/consolecommandsproject admin-buildproject admin-watchproject storefront-buildproject storefront-watchproject dumpproject import db <file>project config manageproject validateproject formatFurther ideas
Import / Export entire Shops
Right now shopware-cli allows to export a database dump, we could also think about exporting an entire shop: dump + all assets.
In that way you could export a production shop, import it locally to have the same database + all uploaded assets.
There are several use-cases:
Business / user impact
See above
Proposed solution
No response
Who benefits?
No response
Out of scope
No response
Acceptance criteria
TBD
Readiness checklist