Skip to content

restuhaqza/SwarmCracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

309 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

SwarmCracker

Firecracker MicroVMs with SwarmKit Orchestration

Go Report Card Coverage License Release


Imagine running containers, but with actual VMs instead. That's SwarmCracker β€” SwarmKit tasks become Firecracker microVMs, each with its own kernel and hardware-level isolation.

Why You'll Like It

Feature What it means for you
Per-VM kernel Real isolation β€” not just namespace walls
SwarmKit compatible Everything you know from Docker Swarm just works
Hardware virtualization KVM gives you actual VM security
Fast boot MicroVMs boot in ~100ms
Cross-node networking VXLAN connects your VMs across the whole cluster
Rolling updates Deploy without taking anything offline

Architecture

SwarmCracker Architecture

Piece What it does
Manager Runs SwarmKit, schedules tasks, manages cluster state
Worker Launches Firecracker VMs via swarmd-firecracker
Consul VXLAN peer discovery across nodes
swarm-br0 Local bridge for VM networking
VXLAN (ID 100) Cross-node overlay on UDP 4789
MicroVMs Workloads with per-VM kernel isolation

Quick Start

Prerequisites

  • Linux with KVM (ls /dev/kvm)
  • Firecracker v1.15+ (install script handles this)
  • Go 1.26+ (build from source only)

One-Line Install

curl -fsSL https://raw.githubusercontent.com/restuhaqza/SwarmCracker/main/install.sh | bash

Initialize a Cluster

# On the manager node
sudo swarmcracker cluster init --advertise-addr 192.168.1.10:4242

# Get join token
sudo swarmcracker cluster token create --role worker

# On each worker
sudo swarmcracker cluster join --token SWMTKN-1-xxx 192.168.1.10:4242

Deploy Your First Service

# Deploy nginx across the cluster
swarmcracker service create --name web --replicas 3 -p 8080:80 nginx:alpine

# Verify
swarmcracker service list
swarmcracker service ps web

Building From Source

git clone https://github.com/restuhaqza/swarmcracker.git
cd swarmcracker
make all

Documentation

πŸ“– Full docs: swarmcracker.restuhaqza.dev

Guide What's inside
Getting Started Setup walkthrough, step by step
Architecture Component overview and data flow
CLI Reference Every command, every flag
Configuration All config keys and defaults
Networking VXLAN, bridges, how VMs communicate
Operations Monitoring, backup, troubleshooting
Security Hardening, jailer, seccomp

Production Readiness: 10/10

  • βœ… 87% test coverage (15 packages)
  • βœ… 70/70 E2E tests passing
  • βœ… All 47 security/code review items addressed
  • βœ… Go 1.26, 8 linters, go vet clean
  • βœ… Hardened builds (PIE, stripped symbols, trimmed paths)

Security

SwarmCracker takes security seriously. Every workload runs in a hardware-isolated Firecracker microVM with:

  • KVM isolation β€” separate kernel per VM
  • Jailer sandbox β€” chroot + UID/GID drop + network namespace
  • Seccomp filtering β€” privileged syscalls blocked in guest
  • Path traversal prevention β€” validated task IDs, secrets, mounts
  • Command injection prevention β€” PID-file signaling, no shell interpolation
  • Hardened builds β€” PIE binaries with stripped symbols

Read our Security Policy and Security Guide.

Releases

curl -LO https://github.com/restuhaqza/SwarmCracker/releases/download/v0.7.0/swarmcracker-v0.7.0-linux-amd64.tar.gz
tar xzf swarmcracker-v0.7.0-linux-amd64.tar.gz

All releases

Contributing

Check out CONTRIBUTING.md β€” we'd love your help!

License

Apache 2.0

About

Firecracker microVMs meet SwarmKit orchestration

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages