Explore Workloads
Add databases, caches, messaging, storage, and more
Go from zero to production-like Kubernetes in under 5 minutes.
No DNS configuration. No certificate headaches. No port-forwarding gymnastics. Just a complete, working Kubernetes environment ready for development.
By the end of this guide, you’ll have:
postgres.dev.mehttps://postgres-ui.dev.me (no certificate warnings!)cr.dev.meTotal time: ~5 minutes (mostly waiting for downloads)
%% title: LoKO Setup Flow %%
graph TD
Start["🚀 Start Here<br/>$ loko config generate"]
Config["📝 Config Created<br/>loko.yaml with defaults"]
Edit["✏️ Edit as Needed<br/>Add workloads, customize"]
Command["⚡ One Command<br/>$ loko create"]
subgraph Magic["✨ LoKO Sets Up Everything"]
direction LR
K8s["☸️ Kubernetes Cluster<br/>Multi-node Kind cluster"]
DNS["🌐 DNS Resolution<br/>*.dev.me auto-resolves"]
Certs["🔒 TLS Certificates<br/>Wildcard HTTPS certs"]
Reg["📦 Container Registry<br/>Local OCI registry (Control Plane)"]
Tunnel["🔌 TCP Tunnel<br/>Dynamic port routing via IngressRouteTCP"]
Ports["🚪 Intelligent Routing<br/>HTTP/HTTPS auto-routed"]
end
Result["🎉 Everything Just Works!"]
subgraph Examples["💡 What You Can Do"]
direction LR
Ex1["🗄️ Access Services<br/>psql -h postgres.dev.me<br/>redis.dev.me:6379"]
Ex2["🌐 Deploy Web Apps<br/>https://myapp.dev.me"]
Ex3["💻 Develop Your App<br/>Use databases, caches,<br/>messaging, etc."]
Ex4["📦 Push Images/Charts<br/>docker push cr.dev.me/myapp<br/>helm push chart.tgz oci://cr.dev.me"]
end
Start -->|Generates| Config
Config -->|Optional| Edit
Edit -->|Run| Command
Command -->|Automatic| K8s
Command -->|Automatic| DNS
Command -->|Automatic| Certs
Command -->|Automatic| Reg
Command -->|Automatic| Tunnel
Command -->|Automatic| Ports
K8s -.-> Result
DNS -.-> Result
Certs -.-> Result
Reg -.-> Result
Tunnel -.-> Result
Ports -.-> Result
Result --> Ex1
Result --> Ex2
Result --> Ex3
Result --> Ex4
classDef startStyle fill:#1e88e5,stroke:#1565c0,stroke-width:3px,color:#fff,font-weight:bold
classDef configStyle fill:#8e24aa,stroke:#6a1b9a,stroke-width:3px,color:#fff,font-weight:bold
classDef editStyle fill:#fb8c00,stroke:#e65100,stroke-width:3px,color:#fff
classDef commandStyle fill:#e53935,stroke:#c62828,stroke-width:4px,color:#fff,font-weight:bold
classDef magicStyle fill:#00897b,stroke:#00695c,stroke-width:2px,color:#fff
classDef resultStyle fill:#43a047,stroke:#2e7d32,stroke-width:4px,color:#fff,font-weight:bold
classDef exampleStyle fill:#546e7a,stroke:#37474f,stroke-width:2px,color:#fff
class Start startStyle
class Config configStyle
class Edit editStyle
class Command commandStyle
class K8s,DNS,Certs,Reg,Tunnel,Ports magicStyle
class Result resultStyle
class Ex1,Ex2,Ex3,Ex4 exampleStyle
Verify you have everything installed:
loko check prerequisitesMissing something? → Installation Guide
LoKO creates a smart default configuration for you:
loko config generateWhat this does:
loko.yaml with sensible defaultsdev.me (works out of the box)Let’s add a database before creating the cluster:
loko workloads add postgresThis updates loko.yaml to include PostgreSQL with pgAdmin.
Edit if needed: Open loko.yaml and customize settings like storage size, passwords, or worker node count.
One command creates the entire environment:
loko env createWhat happens automatically:
*.dev.meFirst time? This takes ~3-5 minutes (downloading images). Subsequent runs are much faster.
Check cluster status:
loko statusExpected output:
╭─────────────────────────── Cluster Status ────────────────────────────╮│ Cluster: dev-mac ││ Provider: kind ││ Status: ✓ Running │╰───────────────────────────────────────────────────────────────────────╯
╭─────────────────────────── Node Status ───────────────────────────────╮│ NAME ROLE STATUS AGE ││ dev-mac-control-plane control-plane Ready 3m ││ dev-mac-worker worker Ready 3m │╰───────────────────────────────────────────────────────────────────────╯List your workloads:
loko workloads listExpected output:
╭─────────────────────────── Workloads ─────────────────────────────╮│ NAME STATUS DNS PORTS ││ postgres Running postgres.dev.me 5432 ││ pgadmin Running postgres-ui.dev.me 443 │╰───────────────────────────────────────────────────────────────────╯psql -h postgres.dev.me -U postgresThat’s it. DNS resolves, port routing works, you’re connected.
Open your browser:
https://postgres-ui.dev.meNo certificate warnings - LoKO already generated the CA and attempted to install trust.
Get credentials:
loko secrets showOutput:
{ "postgres": { "password": "auto-generated-secure-password" }, "pgadmin": { "email": "admin@dev.me", "password": "another-auto-generated-password" }}Let’s deploy a simple web app that uses PostgreSQL.
# Build your appdocker build -t cr.dev.me/myapp:latest .
# Push to local registry (no Docker Hub needed!)docker push cr.dev.me/myapp:latestCreate deployment.yaml:
apiVersion: apps/v1kind: Deploymentmetadata: name: myappspec: replicas: 2 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: cr.dev.me/myapp:latest env: - name: DATABASE_URL value: "postgres://postgres:PASSWORD@postgres.dev.me:5432/mydb"---apiVersion: v1kind: Servicemetadata: name: myappspec: selector: app: myapp ports: - port: 8080---apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: myappspec: rules: - host: myapp.dev.me http: paths: - path: / pathType: Prefix backend: service: name: myapp port: number: 8080Deploy it:
kubectl apply -f deployment.yamlAccess your app:
https://myapp.dev.me✅ HTTPS works ✅ DNS resolves ✅ App connects to PostgreSQL ✅ Exactly like production
Here’s a typical development session:
# Morning: Start your clusterloko env create
# Add a cacheloko workloads add redisloko workloads deploy redis
# Build and test your appdocker build -t cr.dev.me/api:v2 .docker push cr.dev.me/api:v2kubectl set image deployment/myapp myapp=cr.dev.me/api:v2
# Check logskubectl logs -f deployment/myapp
# Connect to database for debuggingpsql -h postgres.dev.me -U postgres
# Evening: Stop cluster (keeps all data)loko env stoploko env stopStops all containers but keeps persistent volumes.
loko env startRestarts your cluster with all data intact.
loko env destroyDeletes cluster but keeps loko.yaml and generated configs.
loko env cleanRemoves everything: cluster, DNS, certificates, generated files.
LoKO has pre-configured workloads. Add what you need:
# Databasesloko workloads add mysqlloko workloads add mongodb
# Cache (Redis-compatible)loko workloads add valkey
# Messagingloko workloads add rabbitmqloko workloads add natsloko workloads add redpanda
# Storage (S3-compatible)loko workloads add garage
# DevOps/GitOpsloko workloads add forgejoloko workloads add argocdloko workloads add flux-operator
# Collaborationloko workloads add excalidraw
# DevToolsloko workloads add mock-smtp-sms
# Deploy all enabled workloadsloko workloads deploy --allEach workload includes:
See all available workloads: Workload Catalog
| What You Want | Command |
|---|---|
| Check if cluster is running | loko status |
| List all workloads | loko workloads list |
| Deploy a workload | loko workloads deploy <name> |
| View workload logs | loko logs workload <name> |
| Get connection info | loko secrets show |
| Validate configuration | loko config validate |
| Stop cluster | loko env stop |
| Start cluster | loko env start |
| Destroy cluster | loko env destroy |
Check DNS:
loko check dnsmacOS: DNS should auto-configure via /etc/resolver/
Linux: LoKO supports systemd-resolved and NetworkManager-based setups
Fix:
loko dns recreatemacOS:
open -a Docker# Wait for Docker Desktop to startLinux:
sudo systemctl start dockerLoKO uses ports 80 and 443 (Traefik). DNS runs in-cluster via an auto-selected DNS port — no host port required.
Check what’s using HTTP/HTTPS ports:
lsof -i :80lsof -i :443Kill conflicting processes (e.g. Apache, Nginx) before running loko env create.
See Troubleshooting Guide or open an issue.
Coming from other tools? Here’s why LoKO feels magical:
/etc/hosts hackingLoKO uses Kind under the hood, but adds all the batteries you need.
Explore Workloads
Add databases, caches, messaging, storage, and more
Customize Configuration
Multi-node clusters, custom domains, advanced networking
Use the Registry
Push images, Helm charts, and OCI artifacts
See Comparisons
Deep dive into LoKO vs alternatives
Ready to dive deeper? Understand the architecture →