Skip to content

volantvm/flint

Repository files navigation

πŸŒ€ Flint β€” KVM Management, Reimagined

Flint Logo

A single <11MB binary with a modern Web UI, CLI, and API for KVM.
No XML. No bloat. Just VMs.

Latest Release License Build Status


Flint Dashboard Flint Library

Flint 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.


πŸ“‹ Prerequisites

System Requirements:

  • Linux host (Debian, Ubuntu, Fedora, RHEL, Arch, etc.)
  • libvirt >= 6.10.0 (check with libvirtd --version)
  • QEMU/KVM virtualization support

Required Packages:

Debian/Ubuntu
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-daemon libvirt-clients bridge-utils
sudo systemctl enable --now libvirtd
RHEL/Fedora/CentOS
sudo dnf install -y qemu-kvm libvirt libvirt-client virt-install
sudo systemctl enable --now libvirtd
Arch Linux
sudo pacman -S qemu-full libvirt virt-install virt-manager
sudo systemctl enable --now libvirtd

Note: If you encounter libvirt-lxc.so.0: cannot open shared object file, install the LXC library:

# Debian/Ubuntu
sudo apt install -y libvirt-daemon-driver-lxc

# RHEL/Fedora
sudo dnf install -y libvirt-daemon-lxc

# Arch
sudo pacman -S libvirt-lxc

πŸš€ One-Liner Install

curl -fsSL https://raw.githubusercontent.com/volantvm/flint/main/install.sh | bash

Auto-detects OS/arch, installs to /usr/local/bin, and prompts for web UI passphrase setup.


πŸ” Security & Authentication

Flint implements a multi-layered security approach:

Web UI Security:

  • Passphrase Authentication: Web interface requires a passphrase login
  • Session-Based: Secure HTTP-only cookies with 1-hour expiry
  • No API Key Exposure: Web UI never exposes API keys to browsers

API Security:

  • Bearer Token Authentication: CLI and external tools use API keys
  • Protected Endpoints: All API endpoints require authentication
  • Flexible Access: Support for both session cookies and API keys

Authentication Flow:

# First run - set passphrase
flint serve
# πŸ” No web UI passphrase set. Let's set one up for security.
# Enter passphrase: ********

# Web UI access
# Visit http://your-server:5550 β†’ Enter passphrase β†’ Full access

# CLI access (uses API key)
flint vm list --all

# External API access
curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:5550/api/vms

✨ Core Philosophy

  • πŸ–₯️ Modern UI β€” A beautiful, responsive Next.js + Tailwind interface, fully embedded.
  • ⚑ Single Binary β€” No containers, no XML hell. A sub-8MB binary is all you need.
  • πŸ› οΈ Powerful CLI & API β€” Automate everything. If you can do it in the UI, you can do it from the command line or API.
  • πŸ“¦ Frictionless Provisioning β€” Native Cloud-Init support and a simple, snapshot-based template system.
  • πŸ” Secure by Default β€” Multi-layered authentication with passphrase protection.
  • πŸ’ͺ Non-Intrusive β€” Flint is a tool that serves you. It's not a platform that locks you in.

🏎️ Quickstart

1. Start the Server

# Interactive setup (recommended for first run)
flint serve --set-passphrase

# Or set passphrase directly
flint serve --passphrase "your-secure-password"

# Or use environment variable
export FLINT_PASSPHRASE="your-secure-password"
flint serve

On first run, you'll be prompted to set a web UI passphrase for security.

  • Web UI: http://localhost:5550 (requires passphrase login)
  • API: http://localhost:5550/api (requires authentication)

2. Web UI Access

  • Visit http://localhost:5550
  • Enter your passphrase to access the management interface
  • All API calls are automatically authenticated via session

3. CLI Usage

# VM Management
flint vm list                    # List all VMs
flint vm launch my-server        # Create and start a VM
flint vm ssh my-server          # SSH into a VM

# Cloud Images
flint image list                 # Browse cloud images
flint image download ubuntu-24.04 # Download an image

# Networks & Storage
flint network list               # List networks
flint storage volume list default # List storage volumes

4. API Access (for external tools)

# Get your API key (requires authentication)
curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:5550/api/vms

πŸ“– Full Documentation

Complete CLI commands, API reference, and advanced usage:

➑️ docs.md - Complete CLI & API Documentation


πŸ”§ Tech Stack

  • Backend: Go 1.25+
  • Web UI: Next.js + Tailwind + Bun
  • KVM Integration: libvirt-go
  • Binary Size: ~11MB (stripped)

πŸš€ Flint is young, fast-moving, and designed for builders.
Try it. Break it. Star it. Contribute.