pilotphp / app
Installable PilotPHP 0.1.x application skeleton and composition root.
Requires
- php: ^8.5
- pilotphp/build: ^0.1.4
- pilotphp/config: ^0.1.4
- pilotphp/console: ^0.1.4
- pilotphp/container: ^0.1.4
- pilotphp/contracts: ^0.1.4
- pilotphp/core: ^0.1.4
- pilotphp/operation: ^0.1.4
- pilotphp/runtime: ^0.1.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.88
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^11.5
README
Installable PilotPHP 0.1.x application skeleton and composition root for the first CLI vertical slice.
Requirements
- PHP 8.5+
- Composer 2.x
Quick start (monorepo)
Packages are not all on Packagist yet. From the PilotPHP monorepo checkout:
cd app
COMPOSER=composer-local.json composer update
php bin/pilot build
php bin/pilot list
php bin/pilot help hello
php bin/pilot hello --name=Martin
composer-local.json declares relative path repositories with "symlink": false so core discovery stays inside the application vendor/ tree.
Distribution composer.json has no absolute/local path repositories (Packagist-facing).
Quick start (future Packagist)
composer create-project pilotphp/app my-app
cd my-app
php bin/pilot build
php bin/pilot list
php bin/pilot help hello
php bin/pilot hello --name=Martin
Keep pilot/package.json version aligned with the Composer root pretty version after install (core identity policy).
Composer install graph
pilotphp/app (type: project)
├── pilotphp/contracts (infra library)
├── pilotphp/core (infra library)
├── pilotphp/build (infra library)
├── pilotphp/config (Pilot extension)
├── pilotphp/container (Pilot extension)
├── pilotphp/console (Pilot extension)
├── pilotphp/operation (Pilot extension)
└── pilotphp/runtime (Pilot extension)
pilotphp/runtime-native is intentionally absent from this CLI entrypoint.
Pilot active package graph
pilotphp/app
pilotphp/config
pilotphp/container
pilotphp/console
pilotphp/operation
pilotphp/runtime
Capability bindings are empty while no package declares requiresCapabilities.
Cold start vs normal CLI
| Phase | Trigger | Work |
|---|---|---|
| Cold start | php bin/pilot build | CompositionRequest → core resolve → BuildRequest → publish finalized generation |
| Normal CLI | any other argv | validated current.php → domain loaders → ConsoleRuntime → WorkerLifecycle |
Normal startup never registers packages and never rebuilds.
Documentation
See docs/ for architecture, composition, build, runtime bootstrap, CLI, security, compatibility, and troubleshooting.
Development
COMPOSER=composer-local.json composer update
composer check