200mph / myxa
Myxa, a lightweight and flexible AI-powered PHP framework.
Requires
- php: >=8.4
- 200mph/myxa-framework: dev-develop
Requires (Dev)
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^11.5
- squizlabs/php_codesniffer: ^3.11
This package is auto-updated.
Last update: 2026-04-24 22:11:29 UTC
README
This repository is the application skeleton built on top of the Myxa framework. Myxa is a lightweight PHP framework powered by AI, and this project ships with Docker, a growing CLI, app-level providers, and examples of how to build HTTP, console, database, auth, cache, storage, queue, event, and rate-limit features in one place.
The developer experience is intentionally close to Laravel style, so teams coming from Laravel should feel at home quickly. The biggest differences are that the model and validator layers are leaner and a bit more explicit.
Quick Start
The quickest local path is Docker, but Docker is not required if your host already has PHP, Composer, and the needed services available.
- Copy the environment file:
cp .env.example .env
- Start the local stack:
docker compose up --build -d
- Install PHP dependencies inside the app container:
docker compose exec app composer install
- Open the app:
https://myxa.localhost
If you want the full command list, run:
./myxa
If you want a host-native setup instead, see Getting Started. That guide now covers both Docker and non-Docker boot paths.
Install Via Composer
The recommended way to start your own app is Composer:
composer create-project 200mph/myxa my-app dev-develop
cd my-app
cp .env.example .env
docker compose up --build -d
Then open:
https://myxa.localhost
This Composer-based path assumes your host already has Composer and a compatible PHP version available.
If you start from GitHub instead, create your own repository from the skeleton first. Avoid building your application directly in the upstream 200MPH/myxa repository unless you are contributing to Myxa itself.
The fuller setup notes are in Getting Started.
Common Commands
./myxa version:show ./myxa route:cache ./myxa route:clear ./myxa cache:clear ./myxa queue:status ./myxa queue:work --once ./myxa queue:retry <id> ./myxa queue:retry-all ./myxa queue:prune-failed --older-than=7d ./myxa storage:link ./myxa frontend:install vue ./myxa migrate
Documentation
- Getting Started
- Configuration
- Console and Scaffolding
- HTTP, Routing, Controllers, and Middleware
- Auth
- Validation
- Rate Limiting and Throttling
- Database, Query Builder, Models, and Migrations
- Frontend
- Queues
- Events, Listeners, and Services
- Cache and Storage
Project Notes
- The preferred local CLI entry point is
./myxa. - Routes are not cached automatically. Use
./myxa route:cachewhen you want a compiled route manifest. - Public file URLs should use
/storage/..., not/public/storage/.... - The
appDocker service runs as your host UID/GID by default so files created by web requests are easier to manage on the host.
For deeper framework internals, the upstream module guides live under vendor/200mph/myxa-framework/src/*/README.md.