Tarak is a lightning-fast, lightweight, and native container orchestration platform that works everywhere—without requiring Docker Desktop, WSL, or heavy VMs. Compatible with Kubernetes APIs, but reimagined for pure speed, minimal memory usage, and zero external dependencies.
curl -fsSL https://raw.githubusercontent.com/vikukumar/tarak/main/install.sh | bashirm https://raw.githubusercontent.com/vikukumar/tarak/main/install.ps1 | iexgo get -u github.com/vikukumar/tarak/pkg/client@latest| Feature / Metric | ⚡ Tarak | ⛵ K3s | ☸️ Standard Kubernetes (K8s) |
|---|---|---|---|
| Idle RAM Footprint | < 25 MB | ~500 MB | ~1.2 GB+ |
| Cold Start Time | < 180 ms | 10 – 20 sec | 45 – 90 sec |
| Windows Native Isolation | Native (Zero WSL / No Hyper-V) | Requires WSL2 | Requires Docker/WSL2 |
| External Dependencies | 0 (Pure Go Standalone) | containerd, runc | containerd/CRI-O, etcd, CNI |
| Kubernetes API Compatibility | 100% Core K8s API Compliant | 100% Compliant | Standard |
| Cross-Platform Support | Windows / Linux / macOS (ARM64 & AMD64) | Linux only (WSL on Win) | Linux only (WSL on Win) |
Each release includes ready-to-run binaries for all platforms and architectures:
- ⚡
tarak: The All-in-One unified runtime (Server + Agent + Init + CLI in one single executable). - 🖥️
tarakd: The dedicated standalone API server & control-plane daemon. - 🤖
taraks: The dedicated lightweight worker node runtime agent. - 🎮
tarakctl(aliastaraktl): The high-performance Kubernetes-compatible CLI control tool.
Start the Tarak API Server and native node runtime locally:
tarak serverUsing tarakctl, deploy a sample workload. It automatically extracts and runs real OCI containers:
tarakctl apply -f app-sample.yml
tarakctl get pods -n demo -o widetarakctl port-forward pod/web-app-pod 8080:80 -n demoVisit http://localhost:8080 in your browser!
You can embed Tarak orchestration directly into your Go applications using pkg/client:
package main
import (
"context"
"fmt"
"log"
"github.com/vikukumar/tarak/pkg/client"
)
func main() {
c, err := client.NewClientFromKubeconfig("")
if err != nil {
log.Fatal(err)
}
pods, err := c.Pods("default").List(context.Background())
if err != nil {
log.Fatal(err)
}
for _, p := range pods {
fmt.Printf("Pod: %s (Phase: %s, IP: %s)\n", p.Name, p.Phase, p.IP)
}
}Visit the live interactive documentation portal: 👉 https://vikukumar.github.io/tarak/
Contributions make the open source community such an amazing place to learn, inspire, and create. Please read our CONTRIBUTING.md and CODE_OF_CONDUCT.md.
If you discover a security vulnerability within Tarak, please refer to SECURITY.md.
Distributed under the MIT License. See LICENSE for more information.
