Version 0
Installation
Install a MortelOS Starter host app and verify the boot baseline.
Create a new MortelOS Starter host app when you want a Laravel portal with the standard shell, authentication baseline, dashboard, inbox, governance, users and settings.
Meet MortelOS
MortelOS is a Laravel portal system for building governed customer portals from a stable host application and reusable capability packages.
The starter app gives every installation the same baseline: authentication, tenant selection, dashboard shell, inbox, governance surfaces, users and settings. Project-specific behavior starts in the host and moves into packages when it can serve more than one installation.
Why MortelOS?
MortelOS keeps the first portal fast without making the second portal expensive. The starter app handles the recurring operational surface, while packages keep reusable domain behavior portable across installations.
An Agent Ready Portal System
MortelOS is built for human-directed, agent-assisted development. File locations, package boundaries, policy rules and review checkpoints are documented so an AI coding agent can work inside predictable constraints.
Read Agentic Development before asking an agent to build the first customer-specific capability.
Creating a MortelOS Host Application
Getting Started Using AI
If you use an AI coding agent, start with a prompt that gives it the MortelOS playbook before it touches the project:
I'm building a new MortelOS portal host application.
Read and follow the MortelOS installation guide:
https://mortelos.nl/docs/0/installation
Then read the agentic development guide:
https://mortelos.nl/docs/0/agentic-development
Create the host with mortelos new, keep Laravel defaults where MortelOS does not specify otherwise, and stop before adding customer-specific behavior.
After the agent creates the host app, continue with a capability-first interview before implementation work starts.
Installing PHP and Composer
| Tool | Version or access |
|---|---|
| PHP | ^8.4 |
| Composer | ^2.7 |
| Node | ^20 |
| GitHub access | SSH or token access for private MortelOS packages when required |
If you do not have a local PHP stack yet, install PHP and Composer first. Laravel Herd is the fastest path on macOS and Windows.
Installing the MortelOS CLI
The starter ships a small CLI script at bin/mortelos. Install it once from a trusted starter checkout:
git clone git@github.com:mortelos/starter.git mortelos-starter
cd mortelos-starter
install -m 0755 bin/mortelos /usr/local/bin/mortelos
If you install it into ~/.local/bin, make sure that directory is in your PATH.
The CLI uses git@github.com:mortelos/starter.git by default. Override it with MORTELOS_STARTER_REPO or MORTELOS_STARTER_BRANCH when you need another source or branch.
Creating the Host Application
Use the CLI when it is available:
mortelos new mijn-portal
cd mijn-portal
composer dev
mortelos new shallow-clones the starter, removes the starter Git history, initializes a fresh repository and runs composer setup.
If the CLI is not installed yet, use Composer directly:
composer create-project mortelos/starter mijn-portal
cd mijn-portal
npm install --ignore-scripts
npm run build
php artisan starter:doctor
php artisan serve
Open http://127.0.0.1:8000.
composer setup and composer create-project both install the PHP dependencies and run the starter bootstrap hooks. That means vendor/, .env, the SQLite database file, migrations and the development seed account are already in place before the Vite build runs.
The frontend build imports Livewire and Flux assets from Composer packages under vendor/. If you created the app from an existing checkout or copied the files manually, run the Composer bootstrap first:
composer install
php -r "file_exists('.env') || copy('.env.example', '.env');"
php artisan key:generate
php -r "file_exists('database/database.sqlite') || touch('database/database.sqlite');"
php artisan migrate --force
php artisan db:seed --force
npm install --ignore-scripts
npm run build
Initial Configuration
Environment Based Configuration
Review .env before adding customer data or external integrations. Set the application URL, mail transport, queue connection and database connection for the target environment.
Local development can use the starter defaults. Production and staging should use explicit environment values managed outside Git.
Databases and Migrations
Run the starter migrations before the first browser check:
php artisan migrate
Use SQLite for quick local verification when the project has no database choice yet. Switch to MySQL or PostgreSQL when the customer environment requires it.
Tenant and User Baseline
The starter includes a local development seed account:
| Password | |
|---|---|
admin@example.test |
password |
This account is only a local development baseline. Replace it before production use.
Installation Using Herd
Laravel Herd provides PHP, Nginx, Composer and Node tooling for local Laravel development. MortelOS host apps work well in a Herd parked directory.
Herd on macOS
Create the host app inside your parked directory:
cd ~/Herd
mortelos new mijn-portal
cd mijn-portal
herd open
Run the baseline checks after the app opens.
Herd on Windows
Create the host app from PowerShell inside the Herd parked directory:
cd ~\Herd
mortelos new mijn-portal
cd mijn-portal
herd open
Use the Herd UI to confirm the PHP version and site domain.
IDE Support
Use an editor that can follow Laravel conventions, Blade views, Livewire components, package source paths and tests. VS Code, Cursor and PhpStorm all work well for MortelOS projects.
For agent-assisted work, keep AGENTS.md, the project README and the MortelOS docs open as source material.
MortelOS and AI
MortelOS agents should work from accepted scope, not from guesses. Start by mapping roles, data, actions, approvals and package boundaries.
Installing Agent Guidance
Keep the project guidance files in the host app and update them when the portal introduces new package rules, naming conventions or customer-specific constraints.
Use the Agentic Development guide as the baseline for prompts and review checkpoints.
Verify the Baseline
Run the baseline checks before adding portal-specific behavior.
php artisan starter:doctor
vendor/bin/pest
Expected result:
- Guests are redirected to
/login. - Login works with the local seed account.
- The default tenant is selected.
- The dashboard loads.
Next Steps
Now that the host app is running, continue with the first customer-facing vertical slice:
- Build the first portal flow with First Portal.
- Review package ownership with Package Governance.
- Check reusable starter capabilities in Starter Package.