The simple version
What does Stack do?
Imagine you want a private photo cloud for your family. Instead of spending days researching Docker, reverse proxies, and SSL certificates, you write a simple configuration file describing what you want. Stack handles everything else — validation, setup, deployment, and ongoing maintenance.
kombination.yaml
🔧 Technical details
🔧 Technical details
Stack is a Go-based orchestration engine that:
- Reads your
kombination.yamlspecification - Validates it against CUE schemas from StackKits
- Generates OpenTofu/Docker configurations
- Deploys via mTLS-secured gRPC agents on your nodes
- Continuously monitors for drift between desired and actual state
Key features
Write once, deploy anywhere
Your entire homelab configuration lives in one YAML file — version-controlled, shareable, reproducible
Test before you break things
Simulate deployments in Docker before touching real hardware
Works with what you have
Already running servers? Stack discovers them and lets you adopt gradually
Self-healing
Detects when reality drifts from your configuration and can fix it automatically
How it works
Describe what you want
Use the Easy Wizard or write a simple YAML file — no need to understand Docker, networking, or certificates
Stack validates your choices
Your configuration is checked against proven patterns to catch errors before deployment
Infrastructure code is generated
Stack creates all the complex configuration files you’d otherwise write by hand
🔧 Under the hood: The complete data flow
🔧 Under the hood: The complete data flow
Data flow explained:
- Input — Configuration enters via Web UI, CLI, or direct YAML file
- Unifier Engine — Parses, validates against CUE schemas, resolves dependencies, generates OpenTofu code
- State Management — PocketBase stores stack state, job history, and agent registry
- Agent Communication — gRPC with mutual TLS ensures secure, authenticated communication
- Deployment — Agents execute changes on their respective nodes
Architecture at a glance
Ports and services
| Service | Port | What it does |
|---|---|---|
| Dashboard | 5261 | Web interface for managing your homelab |
| API | 5260 | REST API + PocketBase admin panel |
| gRPC | 5263 | Secure communication with agents |
🔧 Technical specifications
🔧 Technical specifications
| Component | Technology | Purpose |
|---|---|---|
| Backend | Go 1.25+ | Core services, agents, CLI |
| Frontend | SvelteKit 2.x | Modern reactive dashboard |
| Database | PocketBase (SQLite) | Embedded state management |
| IaC Engine | OpenTofu 1.6+ | Infrastructure provisioning |
| Validation | CUE 0.15+ | Type-safe schema validation |
| Networking | gRPC + mTLS | Encrypted agent communication |
- Go — Single binary, low memory, cross-platform
- PocketBase — Zero-config embedded database with auth
- OpenTofu — Open-source Infrastructure as Code engine, battle-tested
- CUE — Catch configuration errors before deployment
- mTLS — Every connection is encrypted and authenticated
Core principles
1. Your intent stays untouched
kombify TechStack never modifies your configuration file. All transformations create separate artifacts that you can inspect.2. One Stack = one homelab
A single kombify TechStack instance manages one homelab. That homelab can include multiple physical servers (nodes), but they belong to one logical unit.
3. Brownfield-friendly
Already have servers running? kombify TechStack doesn’t force you to start from scratch:- Managed — Stack fully controls configuration and deployment
- Unmanaged — Stack sees the device but doesn’t touch it
- You can gradually move devices from unmanaged to managed as you’re ready
Quick Example
kombination.yaml
Self-Hosting
Self-Hosting Guide
Deploy kombify TechStack on your own infrastructure with Docker Compose
Next Steps
Quick Start
Deploy your first stack in 10 minutes
Architecture Deep Dive
Understand the Unifier, agents, and data flow
Getting Help
Troubleshooting
Common issues and solutions
Discord
Real-time community support
GitHub
Report issues and contribute
