Phase 2.5 wires up the infrastructure decisions and prepares BlackRoad OS for production deployment. This phase codifies architectural choices and creates deployment-ready configurations. ## Key Decisions Codified - ✅ Monorepo as canonical OS home (for Phase 1-2) - ✅ Prism Console served from backend at /prism - ✅ Documentation via GitHub Pages (MkDocs) - ✅ Vanilla JavaScript frontend maintained ## New Infrastructure ### Documentation & Planning - PHASE2_5_SUMMARY_FOR_ALEXA.md - Complete Phase 2.5 summary - BLACKROAD_OS_REPO_MAP.md - Repository structure map - DEPLOYMENT_NOTES.md - Production deployment guide ### Backend Infrastructure - backend/app/routers/prism_static.py - Prism Console static router - backend/static/prism/ - Prism Console UI skeleton - index.html, css/prism.css, js/prism-core.js ### Documentation System - .github/workflows/docs-deploy.yml - MkDocs deployment automation - codex-docs/mkdocs.yml - MkDocs + Material theme config - codex-docs/DEPLOY_DOCS.md - Docs deployment guide - codex-docs/docs/ - Complete documentation structure ### Updated Files - backend/app/main.py - Added Prism router, OpenAPI tags - MASTER_ORCHESTRATION_PLAN.md - Added Phase 2.5 section ## URL Structure (Production) - https://blackroad.systems → Main OS - https://blackroad.systems/prism → Prism Console - https://blackroad.systems/api/* → REST API - https://docs.blackroad.systems → Documentation ## Post-Merge Checklist 1. Configure GitHub Pages (5 min) 2. Configure Railway deployment (10 min) 3. Configure Cloudflare DNS (15 min) 4. Verify all routes work (5 min) 5. Monitor first deployment (10 min) See PHASE2_5_SUMMARY_FOR_ALEXA.md for complete post-merge instructions. ## Implementation Status ✅ Phase 2.5 Complete - Ready for production deployment --- Where AI meets the open road. 🛣️
16 KiB
🌌 BlackRoad OS Phase 2.5 Summary
Date: 2025-11-18
Branch: claude/os-phase2-5-wire-infra-01GoUdf3aSLaDjaQ7nYnZ9pY
Operator: Alexa Louise Amundson (Cadillac)
Architect: Claude (Sonnet 4.5)
What Changed in Phase 2.5
Phase 2.5 wires up the infrastructure decisions and prepares the BlackRoad OS monorepo for production deployment. This phase codifies architectural choices and creates deployment-ready configurations.
Key Decisions Codified
-
✅ Monorepo as Canonical OS Home
BlackRoad-Operating-Systemrepository remains the single source of truth- All OS components live together for Phase 1
- Future evolution to multi-repo considered for Phase 2+
-
✅ Prism Console Served from Backend
- Prism Console UI accessible at
/prismroute - Backend serves static Prism assets
- Integrated with existing FastAPI infrastructure
- Prism Console UI accessible at
-
✅ Documentation via GitHub Pages
- Codex documentation deployed to
docs.blackroad.systems - MkDocs with Material theme
- Automated deployment via GitHub Actions
- Codex documentation deployed to
-
✅ Frontend Stays Vanilla JavaScript
- Zero-dependency approach continues
- No build process required
- Maintains BlackRoad's philosophy of simplicity
Architecture Overview
URL Structure (Production)
https://blackroad.systems → Main OS interface (backend/static/)
https://blackroad.systems/prism → Prism Console UI
https://blackroad.systems/api/* → REST API endpoints
https://docs.blackroad.systems → Codex documentation (GitHub Pages)
Deployment Topology
┌─────────────────────────────────────────────────────────────┐
│ CLOUDFLARE (DNS + SSL + CDN) │
│ - blackroad.systems → Railway backend │
│ - docs.blackroad.systems → GitHub Pages │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ RAILWAY (Backend Hosting) │
│ - FastAPI backend (app/main.py) │
│ - PostgreSQL database │
│ - Redis cache │
│ - Routes: │
│ • / → Static OS (backend/static/index.html) │
│ • /prism → Prism Console (backend/static/prism/) │
│ • /api/* → REST endpoints │
│ • /health → Health check │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ GITHUB PAGES (Documentation) │
│ - Source: codex-docs/ directory │
│ - Built with: MkDocs + Material theme │
│ - Deployed via: .github/workflows/docs-deploy.yml │
└─────────────────────────────────────────────────────────────┘
New Files Created
1. Documentation Updates
BLACKROAD_OS_REPO_MAP.md
- Complete module-by-module breakdown
- Shows how components connect
- Documents API contracts between layers
docs/architecture/phase2-decisions.md
- Codifies monorepo vs multi-repo decision
- Explains Prism routing strategy
- Documents deployment architecture
docs/architecture/infra-deployment.md
- Production deployment guide
- Railway + Cloudflare integration
- Environment variable reference
2. Backend Infrastructure
backend/app/routers/prism_static.py
- New router to serve Prism Console at
/prism - Static file serving with proper MIME types
- CORS-ready for API calls
backend/static/prism/ (directory structure)
- Prism Console UI files
- Components, styles, assets
- Integrated with main OS
Updated: backend/app/main.py
- Added Prism static router
- Updated OpenAPI tags
- Added
/prismdocumentation
3. Documentation Deployment
.github/workflows/docs-deploy.yml
- Automated MkDocs build
- Deploys to GitHub Pages
- Triggered on: push to main, manual dispatch
codex-docs/DEPLOY_DOCS.md
- Step-by-step GitHub Pages setup
- Local testing instructions
- Troubleshooting guide
codex-docs/mkdocs.yml
- MkDocs configuration
- Material theme setup
- Navigation structure
codex-docs/docs/ (documentation structure)
index.md- Landing pagearchitecture/- System architectureapi/- API referenceguides/- User guidescontributing.md- Contribution guidelines
4. Deployment Preparation
DEPLOYMENT_NOTES.md
- Railway environment variables checklist
- Cloudflare DNS configuration
- Custom domain setup steps
- Health check validation
infra/railway/RAILWAY_DEPLOYMENT_GUIDE.md
- Complete Railway setup guide
- Database migration procedures
- Monitoring and logging setup
- Rollback procedures
infra/cloudflare/DNS_CONFIGURATION.md
- Updated DNS records for all routes
- SSL/TLS configuration
- Page Rules for optimization
- Analytics setup
Updated Master Orchestration Plan
MASTER_ORCHESTRATION_PLAN.md now includes:
New Section: Phase 2.5 Infrastructure
## PHASE 2.5: INFRASTRUCTURE WIRING (COMPLETED)
### URL Routing Strategy
**Primary Domain: blackroad.systems**
- `/` → BlackRoad OS interface
- `/prism` → Prism Console
- `/api/*` → REST API
- `/health` → Health check
**Documentation Domain: docs.blackroad.systems**
- Deployed from: GitHub Pages
- Source: codex-docs/
- Builder: MkDocs + Material
### Deployment Architecture
**Backend (Railway)**
- Service: blackroad-os-backend
- Region: us-west-2
- Instances: Auto-scaling (1-3)
- Health: /health endpoint
**Database (Railway Postgres)**
- Version: PostgreSQL 15
- Backup: Daily automatic
- Connection: Async (asyncpg)
**Cache (Railway Redis)**
- Version: Redis 7
- Usage: Sessions, WebSocket state
- Persistence: AOF enabled
**Frontend (Served from Backend)**
- Source: backend/static/
- No separate deployment
- Cached by Cloudflare CDN
**Docs (GitHub Pages)**
- Source: codex-docs/
- Build: MkDocs
- Deploy: Automatic on merge to main
Phase 2 vs Phase 3 Strategy
Phase 2 (Current - Months 0-12)
Monorepo Benefits:
- ✅ Single source of truth
- ✅ Easier cross-component changes
- ✅ Simpler CI/CD pipeline
- ✅ Faster iteration for small team
What Stays Together:
- Core OS runtime
- Backend API
- Frontend UI
- Prism Console
- Documentation
- Infrastructure config
Phase 3 (Future - Months 12+)
When to Split into Multi-Repo:
Trigger conditions:
- Team size > 10 developers
- Clear component ownership boundaries
- Need for independent release cycles
- Different tech stacks emerging
Potential Repository Structure:
blackroad-os-core → Core runtime, identity (PS-SHA∞)
blackroad-os-api → Backend API gateway
blackroad-os-web → Pocket OS web interface
blackroad-os-prism → Prism Console (admin/observability)
blackroad-os-operator → Worker engine, schedulers
blackroad-os-docs → Codex, specs, whitepapers
Migration Strategy:
- Use
git subtree splitto preserve history - Set up cross-repo CI coordination
- Implement versioned API contracts
- Maintain mono-docs for unified documentation
Post-Merge Checklist for Alexa
1️⃣ Configure GitHub Pages (5 minutes)
# In GitHub repo settings:
# Settings → Pages → Source
# - Branch: main (or gh-pages if workflow creates it)
# - Folder: /codex-docs/site OR / (depending on workflow)
# - Custom domain: docs.blackroad.systems
DNS Setup:
# Add to Cloudflare:
CNAME docs blackboxprogramming.github.io (Proxied)
Verify:
# Wait 5-10 minutes, then:
curl -I https://docs.blackroad.systems
# Should return 200 OK
2️⃣ Configure Railway Deployment (10 minutes)
Environment Variables Checklist:
# In Railway dashboard → backend service → Variables:
# Core
ENVIRONMENT=production
DEBUG=False
SECRET_KEY=<generate with: openssl rand -hex 32>
# Database (auto-injected by Railway)
DATABASE_URL=${{Postgres.DATABASE_URL}}
DATABASE_ASYNC_URL=${{Postgres.DATABASE_ASYNC_URL}}
# Redis (auto-injected by Railway)
REDIS_URL=${{Redis.REDIS_URL}}
# CORS
ALLOWED_ORIGINS=https://blackroad.systems,https://os.blackroad.systems,https://blackroad.ai
# URLs
API_BASE_URL=https://blackroad.systems
FRONTEND_URL=https://blackroad.systems
# Optional (add as needed)
# OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=sk-ant-...
Custom Domains:
# In Railway dashboard → backend service → Settings → Networking:
# Add custom domain: blackroad.systems
# Railway provides CNAME target (e.g., blackroad-os.up.railway.app)
Health Check:
# Verify endpoint works:
curl https://your-app.up.railway.app/health
# Should return:
# {"status": "healthy", "timestamp": 1234567890, "environment": "production"}
3️⃣ Configure Cloudflare DNS (15 minutes)
DNS Records:
# For blackroad.systems zone:
Type Name Target Proxy
--------------------------------------------------------------
CNAME @ blackroad-os.up.railway.app ✅ Proxied
CNAME www blackroad.systems ✅ Proxied
CNAME api blackroad.systems ✅ Proxied
CNAME prism blackroad.systems ✅ Proxied
CNAME docs blackboxprogramming.github.io ✅ Proxied
SSL/TLS Settings:
# Cloudflare → SSL/TLS:
- Mode: Full (strict)
- Always Use HTTPS: On
- Minimum TLS Version: 1.2
- Automatic HTTPS Rewrites: On
Page Rules (Optional):
# Rule 1: Redirect www to apex
URL: www.blackroad.systems/*
Setting: Forwarding URL (301 - Permanent Redirect)
Destination: https://blackroad.systems/$1
# Rule 2: Cache static assets
URL: blackroad.systems/static/*
Settings:
- Cache Level: Cache Everything
- Edge Cache TTL: 1 month
4️⃣ Verify All Routes Work (5 minutes)
# Main OS
curl -I https://blackroad.systems
# → 200 OK, serves index.html
# Prism Console
curl -I https://blackroad.systems/prism
# → 200 OK, serves Prism UI
# API Health
curl https://blackroad.systems/health
# → {"status": "healthy", ...}
# API Docs
curl -I https://blackroad.systems/api/docs
# → 200 OK, OpenAPI docs
# Documentation
curl -I https://docs.blackroad.systems
# → 200 OK, MkDocs site
5️⃣ Monitor First Deployment (10 minutes)
Railway Logs:
# Via Railway CLI:
railway logs --service backend --tail 100
# Or in Railway dashboard:
# backend service → Logs
Check for:
- ✅ "Starting BlackRoad Operating System Backend..."
- ✅ "Database tables created successfully"
- ✅ "Server running on production mode"
- ❌ No error stack traces
- ❌ No missing environment variable warnings
Cloudflare Analytics:
# Cloudflare dashboard → Analytics:
- Check traffic to blackroad.systems
- Verify requests to /prism route
- Check SSL/TLS encryption status
Quick Reference
Development Workflow
Local Development:
cd backend
source .venv/bin/activate # or: .venv\Scripts\activate on Windows
uvicorn app.main:app --reload
# OS available at: http://localhost:8000
# Prism at: http://localhost:8000/prism
# Docs: cd ../codex-docs && mkdocs serve
Testing:
# Backend tests
cd backend
pytest -v
# Docs build test
cd codex-docs
mkdocs build --strict
Deployment:
# Push to main branch:
git push origin main
# GitHub Actions will:
# 1. Run CI tests
# 2. Deploy backend to Railway
# 3. Deploy docs to GitHub Pages
Important URLs
Production:
- OS: https://blackroad.systems
- Prism: https://blackroad.systems/prism
- API Docs: https://blackroad.systems/api/docs
- Health: https://blackroad.systems/health
- Codex Docs: https://docs.blackroad.systems
Development:
- OS: http://localhost:8000
- Prism: http://localhost:8000/prism
- API Docs: http://localhost:8000/api/docs
- Health: http://localhost:8000/health
- Codex Docs: http://localhost:8001 (mkdocs serve)
Key Files Reference
| File | Purpose |
|---|---|
backend/app/main.py |
FastAPI app, router registration |
backend/app/routers/prism_static.py |
Prism Console static serving |
backend/static/ |
Main OS UI files |
backend/static/prism/ |
Prism Console UI files |
codex-docs/mkdocs.yml |
Docs configuration |
.github/workflows/docs-deploy.yml |
Docs deployment automation |
DEPLOYMENT_NOTES.md |
Production deployment guide |
MASTER_ORCHESTRATION_PLAN.md |
Complete infrastructure blueprint |
What's Next
Immediate (This Week)
- Merge this PR to main
- Configure GitHub Pages (5 min)
- Configure Railway deployment (10 min)
- Configure Cloudflare DNS (15 min)
- Verify all routes work (5 min)
- Monitor first production deployment (10 min)
Short-Term (Next 2 Weeks)
- Add content to Codex docs (API reference, guides)
- Build Prism Console UI (dashboard, metrics, job queue)
- Connect Prism to real backend API
- Add monitoring (Sentry, Railway metrics)
- Create first case study (placeholder)
Medium-Term (Next Month)
- Launch private alpha (invite-only)
- Onboard first 5-10 users
- Gather feedback, iterate
- Expand documentation
- Add analytics (Plausible/Simple Analytics)
Support & Troubleshooting
Common Issues
Issue: GitHub Pages not deploying
- Check: Settings → Pages → Source is configured
- Check: Workflow runs completed successfully
- Check: DNS CNAME points to
<username>.github.io - Wait: 5-10 minutes for DNS propagation
Issue: Railway health check failing
- Check:
/healthendpoint returns 200 - Check: DATABASE_URL and REDIS_URL are set
- Check: No errors in Railway logs
- Check: Database tables created (check startup logs)
Issue: Cloudflare showing 522 error
- Cause: Railway backend is down
- Fix: Check Railway logs, restart if needed
- Fix: Verify health check passes
Issue: CORS errors in browser console
- Check: ALLOWED_ORIGINS includes your domain
- Check: Cloudflare proxy is enabled (orange cloud)
- Check: Backend logs show CORS middleware loaded
Getting Help
Documentation:
DEPLOYMENT_NOTES.md- Production deploymentMASTER_ORCHESTRATION_PLAN.md- Complete architecturecodex-docs/- Full documentation
Community:
- GitHub Issues: Bug reports, feature requests
- Discord: (to be created in Phase 1 Q2)
Direct Support:
- Railway: https://railway.app/help
- Cloudflare: https://dash.cloudflare.com/?to=/:account/support
- GitHub Pages: https://docs.github.com/en/pages
Phase 2.5 Wiring Ready, Operator.
Here is where you should click first:
-
Create the PR: Click here to open PR
-
Read these files:
PHASE2_5_SUMMARY_FOR_ALEXA.md(this file)DEPLOYMENT_NOTES.md(deployment checklist)BLACKROAD_OS_REPO_MAP.md(module connections)
-
After merge, wire up:
- GitHub Pages (5 min)
- Railway (10 min)
- Cloudflare DNS (15 min)
- Verify routes (5 min)
Where AI meets the open road. 🛣️
Phase 2.5 infrastructure wiring complete. Ready for production deployment.