OrchCLI is designed to provide the optimal development experience for different types of developers working on the KubeOrchestra platform. It intelligently adapts based on what repositories are cloned locally.
- Developer-Centric: Different setups for frontend, backend, and full-stack developers
- Minimal Dependencies: Only install what's necessary for your workflow
- Smart Defaults: Automatically detect and configure based on cloned repos
- Hot Reload Everything: All development modes support hot reload
When: No repositories cloned Purpose: Testing with production images
┌─────────────────────────────────────────┐
│ Docker Network │
│ │
│ ┌──────────┐ ┌──────────┐ ┌────────┐│
│ │PostgreSQL│ │ Core │ │ UI ││
│ │ :5432 │◄─│ :3000 │◄─│ :3001 ││
│ └──────────┘ └──────────┘ └────────┘│
│ │
└─────────────────────────────────────────┘
▲ ▲ ▲
│ │ │
localhost:5432 localhost:3000 localhost:3001
When: Both UI and Core repositories cloned Purpose: Full-stack development
┌──────── Host Machine ────────┐ ┌─── Docker ───┐
│ │ │ │
│ ┌────────┐ ┌────────┐ │ │ ┌──────────┐│
│ │ UI │─────►│ Core │ │ │ │PostgreSQL││
│ │ :3001 │ │ :3000 │─┼──┼►│ :5432 ││
│ └────────┘ └────────┘ │ │ └──────────┘│
│ npm run dev air │ │ │
└──────────────────────────────┘ └──────────────┘
When: Only UI repository cloned Purpose: Frontend development without backend setup
┌──────── Host Machine ────────┐ ┌────── Docker Network ──────┐
│ │ │ │
│ ┌────────┐ │ │ ┌──────────┐ ┌────────┐ │
│ │ UI │───────────┼──┼►│ Core │◄─│Postgres│ │
│ │ :3001 │ │ │ │ :3000 │ │ :5432 │ │
│ └────────┘ │ │ └──────────┘ └────────┘ │
│ npm run dev │ │ (image) │
└──────────────────────────────┘ └────────────────────────────┘
When: Only Core repository cloned Purpose: Backend development without frontend setup
┌─────────────────── Docker Network ────────────────────┐
│ │
│ ┌──────────┐ ┌─────────────────┐ ┌──────────┐ │
│ │PostgreSQL│◄─│ Core │◄─│ UI │ │
│ │ :5432 │ │ :3000 │ │ :3001 │ │
│ └──────────┘ │ (mounted volume)│ └──────────┘ │
│ └─────────────────┘ (image) │
│ ▲ │
└──────────────────┼────────────────────────────────────┘
│
┌──────┴──────┐
│ Host Machine│
│ Core code │
│ (mounted) │
└─────────────┘
The hybrid modes are intentionally different:
- Frontend Mode: UI runs on host because frontend developers are comfortable with Node.js/npm
- Backend Mode: Core runs in container (with mounted code) so backend developers don't need Go installed
This asymmetry is a feature, not a bug. It optimizes for each developer's workflow.
- Production: Everything in Docker network
- Full Dev: Everything on localhost
- Frontend Dev: Mixed (UI on host, rest in Docker)
- Backend Dev: Everything in Docker network (simpler than host-to-container networking)
- UI: Uses Next.js built-in hot reload (
npm run dev) - Core: Uses Air for Go hot reload
- Mounted volumes: Changes on host immediately visible in container
| File | Mode | Services |
|---|---|---|
docker-compose.prod.yml |
Production | All in Docker |
docker-compose.dev.yml |
Full Dev | Only PostgreSQL |
docker-compose.hybrid-ui.yml |
Frontend Dev | PostgreSQL + Core |
docker-compose.hybrid-core.yml |
Backend Dev | All in Docker |
| Service | Internal Port | Host Port | Notes |
|---|---|---|---|
| PostgreSQL | 5432 | 5432 | Always in Docker |
| Core API | 3000 | 3000 | Host or Docker |
| UI | 3001 | 3001 | Host or Docker |
DB_HOST:postgres(Docker) orlocalhost(host)DB_PORT:5432DB_NAME:kubeorchestraDB_USER:kubeorchestraDB_PASSWORD:kubeorchestra
NEXT_PUBLIC_API_URL: Browser-accessible API URLAPI_URL: Server-side API URL (for SSR)PORT:3001
graph TD
A[orchcli init] --> B{Check Git}
B -->|Missing| C[Install Git]
B -->|Present| D{Check Repos}
D --> E{UI Cloned?}
E -->|Yes| F[Check Node.js]
F -->|Missing| G[Install Node.js]
D --> H{Core Cloned?}
H -->|Yes| I[Check Go]
I -->|Missing| J[Install Go]
D --> K[Check Docker]
K -->|Missing| L[Install Docker]
K -->|Present| M[Check Docker Compose]
M -->|Missing| N[Install Docker Compose]
- No Unnecessary Dependencies: Backend devs don't need Node.js, frontend devs don't need Go (in hybrid mode)
- Familiar Workflows: Developers work the way they're used to
- Fast Iteration: Hot reload for all scenarios
- Simple Networking: Avoid complex host-to-container networking where possible
- Flexible: Easy to switch between modes
- DevContainers: Full IDE integration with VS Code DevContainers
- Cloud Development: Support for GitHub Codespaces / Gitpod
- Multi-tenant: Support multiple projects simultaneously
- Custom Networks: Allow custom network configurations
- Service Mesh: Optional Istio/Linkerd integration for production-like development