# flint
**Repository Path**: its-come-github/flint
## Basic Information
- **Project Name**: flint
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-16
- **Last Updated**: 2025-09-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🌀 Flint — KVM Management, Reimagined
A single <11MB binary with a modern Web UI, CLI, and API for KVM.
No XML. No bloat. Just VMs.
---


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.
---
### 🚀 One-Liner Install
**Prerequisites:** A Linux host with `libvirt` and `qemu-kvm` installed.
```bash
curl -fsSL https://raw.githubusercontent.com/ccheshirecat/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:**
```bash
# 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**
```bash
# 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**
```bash
# 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)**
```bash
# 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](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.