Getting Started
This guide will help you set up Strato for development or production use.
Prerequisites
Required
- Kubernetes: minikube, kind, or production cluster
- Helm: v3.0 or later
- Skaffold: v2.0 or later (for development)
- Docker: For building container images
Platform-Specific
Linux (Production)
- KVM kernel module (
/dev/kvmaccess) - QEMU packages:
qemu-system-x86_64,qemu-utils - OVN/OVS packages:
ovn-central,ovn-host,openvswitch-switch - Network capabilities:
NET_ADMIN,SYS_ADMIN
macOS (Development)
- macOS 14.0 or later
- QEMU:
brew install qemu - Xcode Command Line Tools
Swift Development (Optional)
- Swift 6.0 or later
- Vapor CLI (optional):
brew install vapor
Installation
Development Setup with Skaffold
- Start Kubernetes cluster:
bash
minikube start --memory=4096 --cpus=2- Clone the repository:
bash
git clone https://github.com/samcat116/strato.git
cd strato- Build Helm dependencies:
bash
cd helm/strato
helm dependency build
cd ../..- Start development environment:
bash
# Full environment
skaffold dev
# Or minimal environment (Control Plane + PostgreSQL + Permify only)
skaffold dev --profile=minimal
# Or with debug logging
skaffold dev --profile=debugThe development environment includes:
- Control Plane (web UI and API)
- PostgreSQL database
- Permify authorization service
- Agents (in full mode)
- OVN/OVS networking (Linux only, in full mode)
Production Deployment
See the Deployment Guide for production installation instructions.
Accessing the Application
During Development
Get the Control Plane URL:
bash
# Port forward (recommended)
kubectl port-forward service/strato-control-plane 8080:8080
# Or get minikube URL
minikube service strato-control-plane --urlAccess the web UI at http://localhost:8080
View Logs
bash
# Control Plane logs
kubectl logs -f deployment/strato-control-plane
# Agent logs
kubectl logs -f deployment/strato-agent
# All pods
kubectl get podsFirst Steps
1. Register a User
Visit the registration page and create an account using WebAuthn/Passkeys:
- Navigate to
/register - Enter username, email, and display name
- Click "Register with Passkey"
- Follow your browser's prompts to create a passkey
2. Create a Virtual Machine
After logging in:
- Navigate to the VMs page
- Click "Create VM"
- Configure:
- Name and description
- CPU cores and memory
- Disk size
- OS image
- Click "Create"
The VM will be automatically scheduled to an available agent.
3. Start and Connect
- Click "Start" on your VM
- Wait for it to boot
- Use the web console to interact with your VM
Development Workflow
Hot Reload
Skaffold provides automatic rebuilding and redeployment:
- Edit Swift code in
control-plane/oragent/ - Save the file
- Skaffold detects changes and rebuilds
- New containers are deployed automatically
Running Tests
bash
# Control Plane tests
cd control-plane
swift test
# Agent tests
cd agent
swift test
# Shared package tests
cd shared
swift test
# JavaScript linting
cd control-plane
npm run lintBuilding Locally
bash
# Control Plane
cd control-plane
swift build
# Agent
cd agent
swift build