Loading repository data…
Loading repository data…
evolution-cms / repository
Evolution CMS standalone installer on Go TUI (Terminal UI). This is not just a shell wrapper - it is a real tool built for developers.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
CLI tool for creating new Evolution CMS projects.
Install globally using Composer:
composer global require evolution-cms/installer
Important: Add the Composer global bin directory to your PATH so the evo command is accessible from anywhere.
Add to your shell configuration file (~/.bashrc, ~/.zshrc, or ~/.profile):
export PATH="$HOME/.config/composer/vendor/bin:$PATH"
Then reload your shell configuration:
source ~/.bashrc # or source ~/.zshrc
Find your Composer global directory (usually C:\Users\YourName\AppData\Roaming\Composer\vendor\bin)
Add it to your system PATH:
Win + R, type sysdm.cpl, press EnterPath and click "Edit"Restart your terminal/command prompt
After setting up PATH, verify the installation:
evo version
On first run, the evo PHP bootstrapper downloads the matching Go binary from GitHub Releases, verifies it via checksums.txt, stores it next to the bootstrapper, then runs it.
To pre-install the Go binary (optional):
evo self-install
Recommended:
evo self-update
Alternative:
composer global update evolution-cms/installer
GITHUB_TOKEN (classic or fine-grained token with public repo access) in your environment.bin/ directory is writable (the bootstrapper installs bin/evo.bin or bin/evo.exe there).PATH or set EVO_COMPOSER_BIN to the full path, e.g. EVO_COMPOSER_BIN=$HOME/.composer/composer evo install.evo install
This command will:
evolution-cms-presets or enter a custom preset sourceevo install
evo install my-project
evo install my-project --preset=evolution
evo install my-project --preset=evolution-cms-presets/default
evo install my-project --preset=evolution-cms-presets/default@dev
evo install my-project --preset=evolution-cms-presets/default-daisyui
evo install my-project --db-type=mysql
evo install my-project --db-host=localhost --db-name=evo_db
evo install my-project --admin-username=admin --admin-email=admin@example.com
evo install my-project --admin-directory=manager
evo install my-project --language=en
evo install my-project --branch=develop # Install from specific Git branch
evo install my-project --force # Force install even if directory exists
evo install my-project --cli --log # Non-interactive mode + write log.md
evo install my-project --composer-update # Use composer update during setup
evo install my-project --composer-clear-cache # Clear Composer cache before install
evo install my-project --github-pat=TOKEN # GitHub PAT for API requests
evo install my-project --extras=sTask,sSeo # Install extras after setup (optional)
evo install my-project --extras=legacy-store:84@1.12.2 # Install a Legacy Store package by ID
--preset: Project-layer preset spec. In TUI mode, omit it to choose from the evolution-cms-presets catalog or enter a custom source. In CLI mode, omit it for core-only install. Use evolution, default, evolution-cms-presets/default, evolution-cms-presets/default@dev, a Git URL, or a local path.--db-type: Database type (mysql, pgsql, sqlite, or sqlsrv)--db-host: Database host (default: localhost, not used for SQLite)--db-port: Database port (defaults: 3306 for MySQL, 5432 for PostgreSQL, 1433 for SQL Server)--db-name: Database name (for SQLite: database file name stored under core/database/, default: database.sqlite)--db-user: Database user (not used for SQLite)--db-password: Database password (not used for SQLite). If it contains shell special characters (e.g. ;, &, !), quote it: --db-password='p;ass'.--admin-username: Admin username--admin-email: Admin email--admin-password: Admin password--admin-directory: Admin directory name (default: manager)--language: Installation language (default: en)--branch: Install from specific Git branch (e.g., 3.5.x, develop, nightly, main) instead of latest release--force: Force install even if directory exists--log: Always write installer log to log.md--cli: Run in non-interactive CLI mode (no TUI)--quiet: Reduce CLI output (warnings/errors only)--composer-clear-cache: Clear Composer cache before install--composer-update: Use composer update instead of composer install during setup--github-pat / --github_pat: GitHub PAT token for API requests (avoids GitHub rate limits)--extras: Comma-separated extras to install after setup. Managed extras can be passed by name (for example ) and released packages are installed with unless you pin a version. Dev-only managed packages use their default branch constraint, for example . Legacy Store packages can be passed by ID (for example ).evo install demo \
--cli \
--branch=3.5.x \
--db-type=sqlite \
--db-name=database.sqlite \
--admin-username=admin \
--admin-email=admin@example.com \
--admin-password=123456 \
--admin-directory=manager \
--language=uk \
--preset=evolution-cms-presets/default
Notes:
--cli is non-interactive; use --extras to auto-install Extras.--extras works in both TUI and CLI; when provided, the Extras selection screen is skipped and installation starts immediately.@version are installed with Composer constraint *, so later Composer updates can pick up newer package versions. Dev-only Extras without releases use their default branch constraint, for example dev-main.--extras=legacy-store:84@1.12.2.The installer separates the target project from the preset source.
For TUI installs, you can run the installer with no arguments and choose the target directory, database, admin user, language, project preset, and optional Extras inside the wizard:
evo install
If you already know the target directory or branch, pass only those values and let TUI ask the rest:
evo install /path/to/my-site --branch=3.5.x
When --preset is omitted in TUI mode, the installer fetches public repositories from https://github.com/evolution-cms-presets/ and shows them as preset choices. The same screen also includes:
Custom repository, Git URL, or local path for private presets or local development checkoutsEvolution core only (no project preset) for a plain core installYou can still pass a preset directly when you want to skip the preset picker:
evo install /path/to/my-site \
--branch=3.5.x \
--preset=evolution-cms-presets/default-daisyui
For CLI installs, provide all required answers up front. This installs a new project into the target directory, then copies the evolution-cms-presets/default project layer into that project:
evo install /path/to/my-site \
--cli \
--branch=3.5.x \
--db-type=sqlite \
--db-name=database.sqlite \
--admin-username=admin \
--admin-email=admin@example.com \
--admin-password=change-me \
--admin-directory=manager \
--language=uk \
--preset=evolution-cms-presets/default
--preset=evolution-cms-presets/default means "copy this preset as the bootstrap project layer." It does not define the future GitHub identity of the created site. The target directory or its own Git remote can still be your own project repository.
The default preset does not install Extras. Use --extras=sTask,sSeo only when you intentionally want those packages in the project.
Presets can declare required managed Composer Extras in core/custom/composer.json. The installer reads those Composer requirements after the preset is applied, matches them against the managed Extras catalog, then runs the Extras installer so provider discovery, asset publishing, migrations, and cache clearing still happen. Required Extras are automatically selected after the preset is applied, stay locked in the TUI, and are still installed when the user chooses to skip optional Extras:
{
"require": {
"evolution-cms/etinymce": "*"
}
}
Legacy or non-Composer required Extras can still be described in core/custom/preset.json when needed, but Composer package dependencies should live in core/custom/composer.json.
Accepted preset sources:
default resolves to https://github.com/evolution-cms-presets/default.gitevolution-cms-presets/default resolves to https://github.com/evolution-cms-presets/default.gitevolution-cms-presets/default@dev resolves to the same preset repository with Git ref devevolution-cms-presets/blog-daisyui resolves to the official blog starter presetowner/private-preset can be entered in TUI as a custom source when your Git environment can access it#dev when you need a URL refUse a branch or tag suffix only when you need to install a non-default preset ref. Local preset development can point directly at a checkout:
evo install /path/to/my-site --preset=/path/to/default-preset
Standard Evolution CMS installation with all core features.
evo install my-project --preset=evolution
In TUI mode, omit --preset and keep the default No project preset (Evolution core only) choice.
Project presets are applied through the installed Evolution CMS core/artisan preset:install command after the core installation and database setup complete.
sTask,sSeo*dev-mainlegacy-store:84@1.12.2