{"id":43510865,"url":"https://github.com/nexusquantum/nqrust-microvm","last_synced_at":"2026-06-10T15:00:40.737Z","repository":{"id":319206413,"uuid":"1056456618","full_name":"NexusQuantum/NQRust-MicroVM","owner":"NexusQuantum","description":"Self-hosted Firecracker microVM platform — sub-125ms VMs, Docker-in-VM, serverless functions, and pluggable storage (local, NFS, iSCSI+LVM, TrueNAS, SPDK)","archived":false,"fork":false,"pushed_at":"2026-06-08T08:31:13.000Z","size":81079,"stargazers_count":5,"open_issues_count":3,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T10:18:04.598Z","etag":null,"topics":["container","containerization","functions-as-a-service","hypervisor","hypervisors","nextjs","rust","serverless"],"latest_commit_sha":null,"homepage":"https://microvm.nexusquantum.id/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NexusQuantum.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-14T06:06:18.000Z","updated_at":"2026-06-01T02:51:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"cc4a3016-4916-4478-bbae-7710afabe1d6","html_url":"https://github.com/NexusQuantum/NQRust-MicroVM","commit_stats":null,"previous_names":["nexusquantum/nqrust-microvm"],"tags_count":102,"template":false,"template_full_name":null,"purl":"pkg:github/NexusQuantum/NQRust-MicroVM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NexusQuantum%2FNQRust-MicroVM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NexusQuantum%2FNQRust-MicroVM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NexusQuantum%2FNQRust-MicroVM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NexusQuantum%2FNQRust-MicroVM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NexusQuantum","download_url":"https://codeload.github.com/NexusQuantum/NQRust-MicroVM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NexusQuantum%2FNQRust-MicroVM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34157453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["container","containerization","functions-as-a-service","hypervisor","hypervisors","nextjs","rust","serverless"],"created_at":"2026-02-03T13:00:40.222Z","updated_at":"2026-06-10T15:00:40.731Z","avatar_url":"https://github.com/NexusQuantum.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"apps/ui/public/nqr-logo-full.png\" alt=\"NQRust-MicroVM\" width=\"300\" /\u003e\n\n\u003cbr/\u003e\u003cbr/\u003e\n\n**A self-hosted cloud platform powered by Firecracker microVMs**\n\nBoot Linux VMs in under 125ms · Docker containers with hardware isolation\u003cbr/\u003e\nServerless functions · Web terminal · Real-time metrics · No cloud dependency\n\n\u003cp\u003e\n  \u003ca href=\"https://www.rust-lang.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Rust-1.85%2B-000000?style=flat-square\u0026logo=rust\u0026logoColor=white\" alt=\"Rust\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://nextjs.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Next.js-15-black?style=flat-square\u0026logo=next.js\u0026logoColor=white\" alt=\"Next.js\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://firecracker-microvm.github.io/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Firecracker-v1.13-E05B28?style=flat-square\" alt=\"Firecracker\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-AGPL%20v3-E05B28?style=flat-square\u0026logo=gnu\u0026logoColor=white\" alt=\"License\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n[**Install →**](#installation) · [**Documentation**](docs/) · [**API Reference**](#api-reference) · [**Report a Bug**](https://github.com/NexusQuantum/NQRust-MicroVM/issues)\n\n\u003c/div\u003e\n\n---\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\"\u003e\u003cimg src=\"docs/static/images/vm/manage-vms-page.png\" alt=\"Virtual Machines\" /\u003e\u003c/td\u003e\n    \u003ctd width=\"50%\"\u003e\u003cimg src=\"docs/static/images/vm/vm-detail-running.png\" alt=\"VM Detail\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eVirtual Machines — create, manage, and monitor all your microVMs\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eVM detail — 7-tab interface: overview, terminal, metrics, storage, network, snapshots, config\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/static/images/vm/vm-console.png\" alt=\"Web Terminal\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/static/images/vm/vm-metrics.png\" alt=\"Real-time Metrics\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eBrowser-based xterm.js shell — no SSH client needed\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eLive CPU, memory, network, and disk graphs over WebSocket\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/static/images/functions/functions-page.png\" alt=\"Serverless Functions\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/static/images/installer/installer-welcome.png\" alt=\"TUI Installer\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eServerless functions — Monaco editor, live execution logs, playground\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eOne-command TUI installer — guided setup, online and airgapped\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Overview\n\n**NQRust-MicroVM** is a production-ready platform for running [Firecracker](https://firecracker-microvm.github.io/) microVMs on your own Linux hardware. Three Rust services and a Next.js 15 frontend — installed in one command.\n\n**Virtual Machines** — Isolated Linux VMs with their own kernel, rootfs, CPU/memory limits, and storage volumes. Browser terminal. Snapshots. Templates for one-click re-deployment.\n\n**Containers** — Docker workloads running *inside* Firecracker VMs. Full Docker API compatibility with hardware-level kernel isolation underneath — container escape is structurally impossible.\n\n**Serverless Functions** — Node.js, Python, or Ruby functions that execute on demand in isolated VMs. Webhook-ready with a built-in code editor and execution playground.\n\n**Pluggable Storage** — Mix-and-match backends from a single UI: local file (zero deps), NFS and SMB/CIFS (auto-mount via the agent), and `iscsi_lvm` (vendor-agnostic per-VM block devices on top of any iSCSI target — Proxmox-equivalent, no per-vendor REST adapter required). Add or remove backends without restarting the manager.\n\n---\n\n## Features\n\n| | Feature | Details |\n|---|---|---|\n| ⚡ | **Sub-125ms Boot** | Firecracker starts Linux VMs faster than most processes |\n| 🖥️ | **Web Terminal** | Full xterm.js shell in the browser via WebSocket — no SSH client needed |\n| 📊 | **Real-time Metrics** | Live CPU, memory, network, and disk graphs streamed over WebSocket |\n| 🐳 | **Isolated Containers** | Docker-in-VM with full Docker API — hardware-level kernel isolation |\n| ⚡ | **Serverless Functions** | Node.js, Python, Ruby — Monaco editor, live logs, interactive playground |\n| 📸 | **Snapshots** | Full and differential VM snapshots with instant restore |\n| 📦 | **Image Registry** | Kernels, rootfs, and Docker images — import from URL, local path, or DockerHub |\n| 🌐 | **Flexible Networking** | NAT, Isolated, Bridged, and VXLAN overlay networks |\n| 💾 | **Pluggable Storage** | Local file (default), NFS auto-mount, SMB/CIFS, vendor-agnostic iSCSI+LVM, TrueNAS REST, SPDK vhost-user — add or remove backends from the UI without restart |\n| 🔀 | **Port Forwarding** | Route external traffic to services running inside VMs |\n| 🏢 | **Multi-Host Clustering** | Add agent nodes to a shared manager — scale across physical machines |\n| 👥 | **RBAC** | Admin / User / Viewer roles, resource ownership, per-user preferences |\n| 📋 | **Templates** | Save VM configurations for one-click re-deployment |\n| 🔒 | **TUI Installer** | Guided Rust installer — online and fully airgapped, manages systemd services |\n\n---\n\n## Architecture\n\nFour lightweight components coordinate to run your workloads:\n\n| Component | Role | Port |\n|---|---|---|\n| **Manager** | Central API — VM lifecycle, image registry, networking, storage, RBAC | 18080 |\n| **Agent** | Runs on each KVM host, executes Firecracker operations via Unix socket | 9090 |\n| **Guest Agent** | Tiny static binary auto-deployed inside every VM, reports metrics and IP | 9000 |\n| **Web UI** | Next.js 15 / React 19 dashboard — terminal, metrics, full management | 3000 |\n\n```mermaid\ngraph TD\n    Browser([Browser])\n\n    subgraph Platform[\"NQRust-MicroVM Platform\"]\n        UI[\"Web UI · Next.js 15\"]\n        Manager[\"Manager API · Rust · Axum · PostgreSQL\"]\n        DB[(\"PostgreSQL\")]\n\n        subgraph Host[\"KVM Host\"]\n            Agent[\"Host Agent · Rust\"]\n            VM1[\"microVM + Guest Agent\"]\n            VM2[\"microVM + Guest Agent\"]\n        end\n    end\n\n    Browser --\u003e|\"HTTPS / WebSocket\"| UI\n    UI --\u003e|\"REST API\"| Manager\n    Manager --\u003e|\"SQL\"| DB\n    Manager --\u003e|\"REST\"| Agent\n    Agent --\u003e|\"Unix socket\"| VM1\n    Agent --\u003e|\"Unix socket\"| VM2\n    VM1 --\u003e|\"metrics · IP\"| Manager\n    VM2 --\u003e|\"metrics · IP\"| Manager\n```\n\n### Network Types\n\n| Type | Description | Best for |\n|---|---|---|\n| **NAT** | Private subnet, internet via host NAT | Most workloads |\n| **Isolated** | Private subnet, no external access | Air-gapped services |\n| **Bridged** | VMs appear directly on your LAN | Direct network visibility |\n| **VXLAN** | Multi-host overlay tunnel | VMs across physical machines |\n\n### Storage Backends\n\nEach VM picks where its rootfs (and additional disks) live. Backends register from the Add Backend UI and are immediately usable — no manager restart needed. Three are visible by default; three more (vendor-specific) are tucked behind a \"Show advanced kinds\" disclosure.\n\n| Backend | Visible | Provisioning model | Best for |\n|---|---|---|---|\n| **`local_file`** | default | Files under `/srv/fc/vms/\u003cvm\u003e/storage/` | Single-host, dev/demo, no SAN |\n| **`nfs`** | yes | Manager delegates `mount.nfs` to the agent; one file per VM under the share | Homelab / NAS-backed setups |\n| **`smb`** | yes | Mount any SMB/CIFS share via the agent; one file per VM under the share | NAS / Windows-file-server-backed setups |\n| **`iscsi_lvm`** | yes | One LUN on any iSCSI target → LVM VG → per-VM `lvcreate` (Proxmox-equivalent) | Multi-VM on shared block storage, vendor-agnostic |\n| **`truenas_iscsi`** | advanced | TrueNAS REST creates per-VM zvol + extent + target | TrueNAS users wanting native ZFS snapshots and thin provisioning |\n| **`iscsi`** (generic) | advanced | Pre-cut LUN, 1 VM per LUN — passthrough only | Legacy LUN passthrough |\n| **`spdk_lvol`** | advanced | NVMe vhost-user direct, future clustering primitive | High-throughput single-host |\n\n---\n\n## Installation\n\nThe `nqr-installer` is a guided Rust TUI that provisions everything — KVM access, networking bridge, PostgreSQL, systemd services, and platform configuration.\n\n### Online\n\n```bash\ncurl -fsSL https://github.com/NexusQuantum/NQRust-MicroVM/releases/latest/download/install.sh | sudo bash\n```\n\n### Airgapped\n\n```bash\n# On a connected machine — download the installer binary\ncurl -fsSL -o nqr-installer \\\n  https://github.com/NexusQuantum/NQRust-MicroVM/releases/latest/download/nqr-installer-x86_64-linux-musl\nchmod +x nqr-installer\n\n# Transfer to the target host and run\nscp nqr-installer user@target-host:/tmp/\nssh user@target-host sudo /tmp/nqr-installer install\n```\n\nThe TUI walks through mode selection, network configuration, pre-flight checks, and live installation progress. Full walkthrough: [Installation Guide](docs/content/docs/getting-started/installation.md).\n\n### Installation Modes\n\n| Mode | Components | Use case |\n|---|---|---|\n| **Production** | Manager + Agent + UI | Single host, all-in-one |\n| **Manager Only** | Manager | Control plane in a multi-host setup |\n| **Agent Only** | Agent | Worker node joining an existing manager |\n| **Minimal** | Manager + Agent | Headless / no web UI |\n\n### System Requirements\n\n| | Minimum | Recommended |\n|---|---|---|\n| **CPU** | x86_64 with KVM (Intel VT-x / AMD-V) | — |\n| **RAM** | 4 GB | 8 GB+ |\n| **Disk** | 20 GB free | 50 GB+ |\n| **OS** | Ubuntu 22.04, Debian 11 | Ubuntu 24.04 LTS |\n\n### Default Credentials\n\nAfter installation, open `http://\u003chost\u003e:3000` and log in with **`root` / `root`**. Change the password immediately via **Settings → Account**.\n\n---\n\n## Quick Start\n\n### Create your first VM\n\n1. Open **Registry** → import a kernel and rootfs (URL, local path, or DockerHub)\n2. Go to **Virtual Machines → Create VM** and follow the 6-step wizard\n3. Click the **Terminal** tab for instant browser-based shell access\n4. Explore **Metrics** for live CPU, memory, network, and disk graphs\n\n### Deploy a serverless function\n\n1. Go to **Functions → New Function**\n2. Choose a runtime (Node.js, Python, Ruby) and write code in the Monaco editor\n3. Use the **Playground** to send test payloads and view live execution logs\n\n### Run a Docker container\n\n1. Go to **Containers → New Container**\n2. Enter any Docker image name — the platform provisions a dedicated Firecracker VM with Docker runtime\n3. Each container runs in complete VM isolation with its own kernel\n\n---\n\n## API Reference\n\nInteractive Swagger UI is available while the manager is running:\n\n```\nhttp://\u003chost\u003e:18080/swagger-ui/\n```\n\nEvery operation available in the UI is also accessible via the REST API.\n\n---\n\n## Development\n\nSee [CLAUDE.md](CLAUDE.md) for full development setup, architecture details, and code conventions.\n\n```bash\n# Start PostgreSQL\n./scripts/dev-up.sh\n\n# Build all services\ncargo build\n\n# Start the frontend dev server\ncd apps/ui \u0026\u0026 pnpm install \u0026\u0026 pnpm dev\n```\n\nDefault dev URLs: UI at `http://localhost:3000`, Manager API at `http://localhost:18080`.\n\n---\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/your-feature`\n3. Commit your changes: `git commit -m 'Add your feature'`\n4. Push and open a Pull Request\n\n---\n\n## License\n\nDistributed under the **GNU Affero General Public License v3.0**. See [LICENSE](LICENSE) for details.\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eBuilt with Rust and caffeine by the \u003cb\u003eNexus\u003c/b\u003e team.\u003c/sub\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnexusquantum%2Fnqrust-microvm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnexusquantum%2Fnqrust-microvm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnexusquantum%2Fnqrust-microvm/lists"}