Skip to content

Deployment

Each component is deployed independently. You can also run everything locally with Docker Compose.

ComponentPlatformConfiguration
Dashboard AppRailwayNixpacks (PHP 8.3)
Brand SiteVercelAuto-detect (Next.js)
DocsCloudflare PagesAuto-detect (Astro)
Agents ServiceRailwayDocker
PostgresRailwayManaged add-on

Section titled “Docker Compose (recommended for local dev)”

The project includes a docker-compose.yml that starts all services:

Terminal window
./start.sh

This starts:

  • laravel-app — Dashboard + API on port 8080, Reverb WebSocket on port 8082
  • brand-site — Marketing site on port 3000
  • docs-site — Documentation on port 3002
  • agents-service — Code improvement API on port 8081

All services share an agent-os-network Docker bridge. The Laravel app uses SQLite in a Docker volume.

Copy .env.example to .env and set:

GROQ_API_KEY=... # For agents service
APP_KEY=... # Laravel app key
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=...
REVERB_APP_KEY=...
REVERB_APP_SECRET=...

01
Build via Nixpacks

Railway detects the Laravel app automatically via Nixpacks (PHP 8.3). composer.json defines a setup script (key:generate + migrate + cache) and the start command.

02
Start command
php artisan migrate --force && php artisan config:cache && php artisan serve --host=0.0.0.0 --port=8080
03
Environment variables

Set these in the Railway dashboard:

  • APP_KEY — Laravel app key (php artisan key:generate --show)
  • DB_CONNECTION=pgsql + Railway Postgres connection variables
  • APP_URL — public URL of the deployed app
  • BROADCAST_CONNECTION=reverb — for real-time WebSocket updates
  • REVERB_APP_ID, REVERB_APP_KEY, REVERB_APP_SECRET — Reverb credentials

Vercel detects Next.js automatically. Connect the repository and set the root directory to apps/brand-site/. No further setup required — Vercel Analytics and SpeedInsights are already integrated.


Cloudflare Pages detects Astro automatically. Connect the repository, set root directory to apps/docs/, build command npm run build, output directory dist.


Terminal window
# 1. Laravel App (Port 8000)
cd apps/app
composer install && npm install
cp .env.example .env
php artisan key:generate && php artisan migrate
php artisan serve
npm run dev # Vite assets in a separate terminal
# 2. Reverb WebSocket server
cd apps/app
php artisan reverb:start
# 3. Brand Site (Port 3000)
cd apps/brand-site
npm install && npm run dev
# 4. Docs (Port 4321)
cd apps/docs
npm install && npm run dev

Required environment variables in apps/app/.env:

DB_CONNECTION=sqlite
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=my-app
REVERB_APP_KEY=my-key
REVERB_APP_SECRET=my-secret
REVERB_HOST=localhost
REVERB_PORT=8082