{"id":49670858,"url":"https://github.com/0xchasercat/flint","last_synced_at":"2026-05-23T12:00:41.316Z","repository":{"id":313562333,"uuid":"1051869896","full_name":"0xchasercat/flint","owner":"0xchasercat","description":"Lightweight tool for managing linux virtual machines","archived":false,"fork":false,"pushed_at":"2026-04-28T08:44:33.000Z","size":4728,"stargazers_count":1636,"open_issues_count":10,"forks_count":97,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-05-04T23:42:28.477Z","etag":null,"topics":["cloud","cloud-init","devops","hypervisor","infra","infrastructure","kvm","libvirt","orchestration","oss","qemu","serial","snapshot","virtual-machine","virtualization","vm","vmm","webtty"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/0xchasercat.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":"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-06T22:27:48.000Z","updated_at":"2026-04-30T08:33:46.000Z","dependencies_parsed_at":"2025-09-06T23:29:44.674Z","dependency_job_id":"e27727b0-86c7-4852-8679-6a7fa9c0d90d","html_url":"https://github.com/0xchasercat/flint","commit_stats":null,"previous_names":["ccheshirecat/flint","volantvm/flint","0xchasercat/flint"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/0xchasercat/flint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xchasercat%2Fflint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xchasercat%2Fflint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xchasercat%2Fflint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xchasercat%2Fflint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xchasercat","download_url":"https://codeload.github.com/0xchasercat/flint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xchasercat%2Fflint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33394672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","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":["cloud","cloud-init","devops","hypervisor","infra","infrastructure","kvm","libvirt","orchestration","oss","qemu","serial","snapshot","virtual-machine","virtualization","vm","vmm","webtty"],"created_at":"2026-05-06T23:00:23.407Z","updated_at":"2026-05-23T12:00:41.302Z","avatar_url":"https://github.com/0xchasercat.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003ca href=\"https://chaser.sh\"\u003e\u003cimg src=\"banner.png\" alt=\"Chaser — The Infrastructure Platform\" width=\"100%\"/\u003e\u003c/a\u003e\n\n# 🌀 Flint — KVM Management, Reimagined\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.ibb.co/yj2bFZG/flint-banner.jpg\" alt=\"Flint Logo\" width=\"300\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e\n    A single \u0026lt;11MB binary with a modern Web UI, CLI, and API for KVM.\n    \u003cbr/\u003eNo XML. No bloat. Just VMs.\n  \u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/volantvm/flint/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/volantvm/flint\" alt=\"Latest Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/volantvm/flint/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/volantvm/flint\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/volantvm/flint/actions/workflows/release.yml\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/volantvm/flint/.github/workflows/release.yml\" alt=\"Build Status\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n![Flint Dashboard](https://i.ibb.co/wN9H8WKX/Screenshot-2025-09-07-at-3-51-58-AM.png)\n![Flint Library](https://i.ibb.co/Z1k9XBqQ/Screenshot-2025-09-08-at-4-59-46-AM.png)\n\n\nFlint is a modern, self-contained KVM management tool built for developers, sysadmins, and home labs who want zero bloat and maximum efficiency. It was built in a few hours out of a sudden urge for something better.\n\n---\n\n### 📋 Prerequisites\n\n**System Requirements:**\n- Linux host (Debian, Ubuntu, Fedora, RHEL, Arch, etc.)\n- libvirt \u003e= 6.10.0 (check with `libvirtd --version`)\n- QEMU/KVM virtualization support\n\n**Required Packages:**\n\n\u003cdetails\u003e\n\u003csummary\u003eDebian/Ubuntu\u003c/summary\u003e\n\n```bash\nsudo apt update\nsudo apt install -y qemu-kvm libvirt-daemon-system libvirt-daemon libvirt-clients bridge-utils\nsudo systemctl enable --now libvirtd\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eRHEL/Fedora/CentOS\u003c/summary\u003e\n\n```bash\nsudo dnf install -y qemu-kvm libvirt libvirt-client virt-install\nsudo systemctl enable --now libvirtd\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eArch Linux\u003c/summary\u003e\n\n```bash\nsudo pacman -S qemu-full libvirt virt-install virt-manager\nsudo systemctl enable --now libvirtd\n```\n\u003c/details\u003e\n\n**Note:** If you encounter `libvirt-lxc.so.0: cannot open shared object file`, install the LXC library:\n```bash\n# Debian/Ubuntu\nsudo apt install -y libvirt-daemon-driver-lxc\n\n# RHEL/Fedora\nsudo dnf install -y libvirt-daemon-lxc\n\n# Arch\nsudo pacman -S libvirt-lxc\n```\n\n**Platform Compatibility:**\n\nFlint is built with CGO (libvirt-go bindings). We provide binaries for both **glibc** and **musl** (Alpine Linux):\n\n- **glibc binaries**: `flint-linux-amd64`, `flint-linux-arm64` (for Debian, Ubuntu, Fedora, RHEL, Arch, etc.)\n- **musl binaries**: `flint-linux-amd64-musl`, `flint-linux-arm64-musl` (for Alpine Linux)\n\n\u003cdetails\u003e\n\u003csummary\u003eRunning Flint on Alpine Linux\u003c/summary\u003e\n\n**Native musl support** is now available! Download the musl-specific binary for your architecture:\n\n```bash\n# For Alpine Linux (amd64)\nwget https://github.com/volantvm/flint/releases/latest/download/flint-linux-amd64-musl.zip\nunzip flint-linux-amd64-musl.zip\nchmod +x flint\n./flint serve\n\n# For Alpine Linux (arm64)\nwget https://github.com/volantvm/flint/releases/latest/download/flint-linux-arm64-musl.zip\nunzip flint-linux-arm64-musl.zip\nchmod +x flint\n./flint serve\n```\n\n**Prerequisites for Alpine:**\n```bash\n# Install required Alpine packages\napk add libvirt-daemon libvirt-qemu qemu-system-x86_64\nrc-update add libvirtd\nrc-service libvirtd start\n```\n\n**Alternative: Use gcompat compatibility layer**\n\nIf you prefer to use the standard glibc binary on Alpine:\n```bash\napk add gcompat libstdc++\nwget https://github.com/volantvm/flint/releases/latest/download/flint-linux-amd64.zip\nunzip flint-linux-amd64.zip\nchmod +x flint\n./flint serve\n```\n\u003c/details\u003e\n\n---\n\n### 🚀 One-Liner Install\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/volantvm/flint/main/install.sh | bash\n```\n*Auto-detects OS/arch, installs to `/usr/local/bin`, and prompts for web UI passphrase setup.*\n\n---\n\n### 🔐 Security \u0026 Authentication\n\nFlint implements a multi-layered security approach:\n\n**Web UI Security:**\n- **Passphrase Authentication**: Web interface requires a passphrase login\n- **Session-Based**: Secure HTTP-only cookies with 1-hour expiry\n- **No API Key Exposure**: Web UI never exposes API keys to browsers\n\n**API Security:**\n- **Bearer Token Authentication**: CLI and external tools use API keys\n- **Protected Endpoints**: All API endpoints require authentication\n- **Flexible Access**: Support for both session cookies and API keys\n\n**Authentication Flow:**\n```bash\n# First run - set passphrase\nflint serve\n# 🔐 No web UI passphrase set. Let's set one up for security.\n# Enter passphrase: ********\n\n# Web UI access\n# Visit http://your-server:5550 → Enter passphrase → Full access\n\n# CLI access (uses API key)\nflint vm list --all\n\n# External API access\ncurl -H \"Authorization: Bearer YOUR_API_KEY\" http://localhost:5550/api/vms\n```\n\n---\n\n### ✨ Core Philosophy\n\n-   🖥️ **Modern UI** — A beautiful, responsive Next.js + Tailwind interface, fully embedded.\n-   ⚡ **Single Binary** — No containers, no XML hell. A sub-8MB binary is all you need.\n-   🛠️ **Powerful CLI \u0026 API** — Automate everything. If you can do it in the UI, you can do it from the command line or API.\n-   📦 **Frictionless Provisioning** — Native Cloud-Init support and a simple, snapshot-based template system.\n-   🔐 **Secure by Default** — Multi-layered authentication with passphrase protection.\n-   💪 **Non-Intrusive** — Flint is a tool that serves you. It's not a platform that locks you in.\n-   🌐 **Remote Management** — Connect to remote KVM/libvirt servers via SSH from a single Flint instance.\n\n---\n\n### 🏎️ Quickstart\n\n**1. Start the Server**\n```bash\n# Interactive setup (recommended for first run)\nflint serve --set-passphrase\n\n# Or set passphrase directly\nflint serve --passphrase \"your-secure-password\"\n\n# Or use environment variable\nexport FLINT_PASSPHRASE=\"your-secure-password\"\nflint serve\n```\n*On first run, you'll be prompted to set a web UI passphrase for security.*\n*   **Web UI:** `http://localhost:5550` (requires passphrase login)\n*   **API:** `http://localhost:5550/api` (requires authentication)\n\n**2. Web UI Access**\n- Visit `http://localhost:5550`\n- Enter your passphrase to access the management interface\n- All API calls are automatically authenticated via session\n\n**3. CLI Usage**\n```bash\n# VM Management\nflint vm list                    # List all VMs\nflint vm launch my-server        # Create and start a VM\nflint vm ssh my-server          # SSH into a VM\n\n# Cloud Images\nflint image list                 # Browse cloud images\nflint image download ubuntu-24.04 # Download an image\n\n# Networks \u0026 Storage\nflint network list               # List networks\nflint storage volume list default # List storage volumes\n```\n\n**4. API Access (for external tools)**\n```bash\n# Get your API key (requires authentication)\ncurl -H \"Authorization: Bearer YOUR_API_KEY\" http://localhost:5550/api/vms\n```\n\n---\n\n### 🌐 Remote Server Management via SSH\n\nFlint can connect to remote KVM/libvirt servers via SSH, allowing you to manage distributed virtualization infrastructure from a single instance.\n\n**Setup Requirements:**\n1. SSH key-based authentication configured between Flint host and remote server\n2. Remote server must have libvirt \u003e= 6.10.0 installed\n3. User on remote server must have permissions to access libvirt\n\n**Configuration Methods:**\n\n**Option 1: Web UI (Recommended)**\n1. Navigate to Settings in the Flint web interface\n2. Enable \"SSH Connection\" toggle\n3. Fill in SSH connection details:\n   - Username (e.g., `root` or user with libvirt permissions)\n   - Host (IP address or hostname)\n   - Port (default: 22)\n   - SSH Key Path (auto-detected from ~/.ssh/)\n4. Click \"Test Connection\" to verify\n5. Click \"Save Configuration\" and restart Flint\n\n**Option 2: Configuration File**\nEdit `~/.flint/config.json`:\n```json\n{\n  \"libvirt\": {\n    \"uri\": \"qemu:///system\",\n    \"ssh\": {\n      \"enabled\": true,\n      \"username\": \"root\",\n      \"host\": \"192.168.1.100\",\n      \"port\": 22,\n      \"key_path\": \"~/.ssh/id_rsa\",\n      \"known_hosts_path\": \"~/.ssh/known_hosts\"\n    }\n  }\n}\n```\n\n**Option 3: Environment Variables**\n```bash\nexport FLINT_LIBVIRT_SSH_ENABLED=true\nexport FLINT_LIBVIRT_SSH_USERNAME=root\nexport FLINT_LIBVIRT_SSH_HOST=192.168.1.100\nexport FLINT_LIBVIRT_SSH_PORT=22\nexport FLINT_LIBVIRT_SSH_KEY_PATH=~/.ssh/id_rsa\nflint serve\n```\n\n**SSH Key Setup:**\n```bash\n# On Flint host, generate SSH key if needed\nssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa\n\n# Copy public key to remote server\nssh-copy-id root@192.168.1.100\n\n# Verify connection\nssh root@192.168.1.100 virsh list --all\n```\n\n**Security Notes:**\n- SSH keys must have secure permissions (600 or 400)\n- Password authentication is not supported (key-based only)\n- Flint uses the standard libvirt SSH transport (qemu+ssh://)\n- All libvirt operations are encrypted via SSH tunnel\n\n---\n\n### 📖 Full Documentation\n\nComplete CLI commands, API reference, and advanced usage:\n\n➡️ **[docs.md](docs.md)** - Complete CLI \u0026 API Documentation\n\n---\n\n### 🔧 Tech Stack\n\n-   **Backend:** Go 1.25+\n-   **Web UI:** Next.js + Tailwind + Bun\n-   **KVM Integration:** libvirt-go\n-   **Binary Size:** ~11MB (stripped)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e🚀 Flint is young, fast-moving, and designed for builders.\u003cbr/\u003e\n  Try it. Break it. Star it. Contribute.\u003c/b\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eFrom the team at \u003ca href=\"https://chaser.sh\"\u003e\u003cstrong\u003eChaser\u003c/strong\u003e\u003c/a\u003e \u0026nbsp;·\u0026nbsp; \u003ca href=\"https://chaser.sh/sprinter\"\u003eRun it on your own infrastructure →\u003c/a\u003e\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xchasercat%2Fflint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xchasercat%2Fflint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xchasercat%2Fflint/lists"}