{"id":47623523,"url":"https://github.com/davidestf/sistemo","last_synced_at":"2026-04-01T22:30:26.696Z","repository":{"id":345545757,"uuid":"1182462352","full_name":"davidestf/sistemo","owner":"davidestf","description":"Self-hosted Firecracker microVMs for your own hardware","archived":false,"fork":false,"pushed_at":"2026-03-26T23:09:21.000Z","size":549,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T07:18:55.427Z","etag":null,"topics":["cli","firecracker","go","homelab","kvm","microvm","self-hosted","virtualization"],"latest_commit_sha":null,"homepage":"https://sistemo.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidestf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-15T14:59:08.000Z","updated_at":"2026-03-26T23:06:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/davidestf/sistemo","commit_stats":null,"previous_names":["davidestf/sistemo"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/davidestf/sistemo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidestf%2Fsistemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidestf%2Fsistemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidestf%2Fsistemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidestf%2Fsistemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidestf","download_url":"https://codeload.github.com/davidestf/sistemo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidestf%2Fsistemo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","firecracker","go","homelab","kvm","microvm","self-hosted","virtualization"],"created_at":"2026-04-01T22:30:25.197Z","updated_at":"2026-04-01T22:30:26.682Z","avatar_url":"https://github.com/davidestf.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eSistemo\u003c/strong\u003e\u003cbr\u003e\n  Self-hosted Linux microVMs for your own hardware. Powered by \u003ca href=\"https://firecracker-microvm.github.io/\"\u003eFirecracker\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/davidestf/sistemo/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/davidestf/sistemo/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/davidestf/sistemo/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/davidestf/sistemo\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache--2.0-blue\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://docs.sistemo.io\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-docs.sistemo.io-green\" alt=\"Docs\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n**Sistemo** turns your Linux machine into a lightweight VM host. One binary, one command, real VMs — each with its own kernel, systemd, and network stack. No QEMU, no libvirt, no YAML. Deploy a Debian VM in 10 seconds.\n\n## Real VMs, not containers\n\n| | Sistemo | Docker | Proxmox |\n|---|---|---|---|\n| Isolation | Real VM (KVM) | Shared kernel | Real VM (KVM) |\n| Setup | One command | One command | ISO install |\n| Binary | ~15 MB, zero deps | Daemon + runtime | Full OS |\n| Boot | \u003c 10 seconds | Seconds | Minutes |\n| Use case | Dev, homelab, sandboxes | Containers | Production VMs |\n\n## Quick start\n\n```bash\ncurl -sSL https://get.sistemo.io | sh\nsudo sistemo up\nsistemo vm deploy debian\nsistemo vm ssh debian\n```\n\nThat's it. Real Debian VM, SSH access, full `apt` + `systemctl`. Running on your hardware via [Firecracker](https://firecracker-microvm.github.io/) microVMs.\n\n## What you can do\n\n```bash\n# Deploy from the registry (debian, ubuntu, almalinux)\nsistemo vm deploy debian\nsistemo vm deploy ubuntu --name dev --vcpus 4 --memory 2G\n\n# Boot from an existing volume (skip image entirely)\nsistemo vm deploy --volume web-root --name web2\n\n# Build from any Docker image (openssh-server auto-installed)\nsudo sistemo image build node:20\nsistemo vm deploy node --name api\n\n# Deploy from a URL or local file\nsistemo vm deploy https://example.com/custom.rootfs.ext4\nsistemo vm deploy ./my-image.rootfs.ext4\n```\n\nImages are cached locally in `~/.sistemo/images/` — first deploy downloads, every deploy after is instant.\n\n### More examples\n\n```bash\n# Expose nginx to your network\nsistemo vm deploy debian --name web --expose 80\nsistemo vm ssh web\napt install -y nginx \u0026\u0026 systemctl start nginx\n# http://your-machine:80 is live\n\n# Isolated network: app + database talk to each other, nothing else can reach them\nsistemo network create production\nsistemo vm deploy debian --name app --network production --expose 3000\nsistemo vm deploy debian --name postgres --network production\n\n# Persistent storage that survives VM delete\nsistemo volume create 5G --name pgdata\nsistemo vm deploy debian --name db --attach=pgdata\n\n# Resize a volume\nsistemo volume resize mydata 10GB\n\n# Attach/detach volumes on a stopped VM\nsistemo vm volume attach myvm mydata\nsistemo vm volume detach myvm mydata\n\n# Delete a VM but keep its root volume\nsistemo vm delete myvm --preserve-storage\n\n# Diagnose your setup\nsudo sistemo doctor\n```\n\n## Features\n\n- **One binary** -- CLI + daemon, ~15 MB, zero dependencies beyond Linux + KVM\n- **SSH + browser terminal** -- `sistemo vm ssh` or open `http://localhost:7777/dashboard` in your browser\n- **Named networks** -- Isolated VM groups with `--network production`\n- **Port expose** -- `--expose 80` or `--expose 8080:3000`\n- **Custom images** -- Build from any Docker image: `sistemo image build nginx:latest`\n- **Persistent volumes** -- Create, resize, attach/detach; every VM's rootfs is also tracked as a volume\n- **Systemd service** -- `sistemo service install` survives reboots\n- **Health check** -- `sistemo doctor` diagnoses your entire setup\n- **Audit log** -- `sistemo history` shows every operation\n- **JSON output** -- `sistemo vm list -o json` for scripting and automation\n- **Command aliases** -- `ls` for list, `rm` for delete, `show` for status\n- **Shell completions** -- `sistemo completion bash|zsh|fish`\n- **Config validation** -- Bad config? Clear error with fix suggestion\n- **x86_64 + ARM64** -- Intel, AMD, Raspberry Pi 5, Hetzner CAX, Graviton\n- **Security** -- Seccomp syscall filtering, per-VM cgroup limits, network namespace isolation\n\n## Web Dashboard\n\nOpen `http://localhost:7777/dashboard/` after starting the daemon.\n\n![Sistemo Dashboard — Virtual Machines](https://sistemo.io/blog/v060/dashboard-vms.png)\n\n- **Deploy VMs** from registry, Docker images, or URLs — all from the browser\n- **Terminal** — full xterm.js SSH terminal embedded in the dashboard\n- **Manage everything** — VMs, images, volumes, networks, ports\n- **Build Docker images** — type `nginx:latest`, click Build \u0026 Deploy\n- **Activity history** — full audit log with filters\n- **System health** — host CPU, RAM, disk, Firecracker status\n- **Authentication** — admin account with JWT sessions (Portainer-style setup)\n- **Localhost bypass** — CLI works without auth on the same machine\n\nFirst visit creates your admin account. After that, login is required for remote access.\n\n## Requirements\n\n- **Linux** (kernel 5.10+) with **KVM** enabled\n- CPU with hardware virtualization (Intel VT-x, AMD-V, or ARM64)\n- 4 GB+ RAM, 20 GB+ free disk\n\nWorks on bare metal, VPS with nested virtualization, and Raspberry Pi 5.\n\n\u003e Sistemo runs on Linux only. It needs `/dev/kvm`.\n\n## Install\n\n```bash\ncurl -sSL https://get.sistemo.io | sh\n```\n\nOr from [GitHub releases](https://github.com/davidestf/sistemo/releases):\n\n```bash\ncurl -sSLO https://github.com/davidestf/sistemo/releases/latest/download/sistemo-linux-amd64\nchmod +x sistemo-linux-amd64\nsudo mv sistemo-linux-amd64 /usr/local/bin/sistemo\nsistemo install\n```\n\n## Commands\n\n```\nsistemo up                                Start the daemon\nsistemo doctor                            Check installation health\nsistemo history                           Show operation history\n\nsistemo vm deploy \u003cimage\u003e [flags]         Create a VM\n  --name NAME                               VM name\n  --vcpus N  --memory SIZE  --storage SIZE  Resources\n  --expose PORT                             Expose port (host:vm or just port)\n  --network NAME                            Join a named network\n  --attach VOLUME                           Attach persistent volume\n  --volume VOLUME                           Boot from an existing volume\nsistemo vm list                           List VMs\nsistemo vm list -o json                   JSON output for scripting\nsistemo vm ssh \u003cname\u003e                     SSH into a VM\nsistemo vm exec \u003cname\u003e \u003ccommand\u003e          Run a command\nsistemo vm restart|stop|start \u003cname\u003e      Lifecycle\nsistemo vm delete \u003cname\u003e                  Remove a VM\nsistemo vm delete \u003cname\u003e -y               Skip confirmation prompt\n  --preserve-storage                        Keep root volume on delete\nsistemo vm status \u003cname\u003e                  Show details\nsistemo vm expose \u003cname\u003e --port P         Expose port at runtime\nsistemo vm unexpose \u003cname\u003e --port P       Remove port expose\nsistemo vm volume attach \u003cvm\u003e \u003cvolume\u003e    Attach volume to stopped VM\nsistemo vm volume detach \u003cvm\u003e \u003cvolume\u003e    Detach volume from stopped VM\n\nsistemo network create \u003cname\u003e             Create isolated network\nsistemo network list                      List networks\nsistemo network delete \u003cname\u003e             Delete network\n\nsistemo volume create \u003csize\u003e [--name=N]   Create persistent volume\nsistemo volume list                       List volumes\nsistemo volume delete \u003cname\u003e              Delete a volume\nsistemo volume resize \u003cname\u003e \u003csize\u003e       Resize a volume\nsistemo image build \u003cdocker-image\u003e        Build rootfs from Docker\nsistemo image list                        List available images\nsistemo service install                   Run as systemd service\nsistemo admin reset-password             Reset dashboard admin password\nsistemo config                            Show configuration\nsistemo completion bash|zsh|fish          Shell completions\n\n# Aliases: ls=list, rm=delete, show=status\nsistemo vm ls                             # alias for list\nsistemo vm rm \u003cname\u003e -y                   # alias for delete, skip confirm\nsistemo vm show \u003cname\u003e                    # alias for status\n\n# Global flags\n--output json / -o json                   # JSON output (works on list/status)\n--yes / -y                                # Skip confirmation prompts\n```\n\n## Configuration\n\n`~/.sistemo/config.yml`:\n\n```yaml\n# All settings are optional — these are example overrides, not defaults.\nport: 9090                      # default: 7777\nbridge_subnet: \"10.50.0.0/16\"  # default: 10.200.0.0/16\nmax_vcpus: 8                    # default: 64\ndefault_bandwidth_mbps: 100     # default: 0 (unlimited)\n```\n\nEnvironment variables override YAML: `PORT=9090 sudo sistemo up`\n\nSet `HOST_API_KEY` if exposing the daemon beyond localhost.\n\n## Documentation\n\n**[docs.sistemo.io](https://docs.sistemo.io)** — Full guides and reference:\n\n[Quick start](https://docs.sistemo.io/quickstart/) | [Dashboard](https://docs.sistemo.io/dashboard/) | [Networking](https://docs.sistemo.io/networking/) | [Port expose](https://docs.sistemo.io/port-expose/) | [Volumes](https://docs.sistemo.io/storage/) | [Commands](https://docs.sistemo.io/commands/) | [Configuration](https://docs.sistemo.io/configuration/) | [Building images](https://docs.sistemo.io/building-images/) | [Troubleshooting](https://docs.sistemo.io/troubleshooting/)\n\n## License\n\n[Apache-2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidestf%2Fsistemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidestf%2Fsistemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidestf%2Fsistemo/lists"}