Absortio

Email → Summary → Bookmark → Email

GitHub - ccheshirecat/flint: Lightweight tool for managing linux virtual machines

Extracto

Lightweight tool for managing linux virtual machines - ccheshirecat/flint

Contenido

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


🚀 One-Liner Install

Prerequisites: A Linux host with libvirt and qemu-kvm installed.

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:

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

Fuente: GitHub