back to home

c0m4r / kula

Lightweight, self-contained Linux® server monitoring tool

View on GitHub
812 stars
33 forks
2 issues
GoJavaScriptCSS

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing c0m4r/kula in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/c0m4r/kula)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

K U L A **Lightweight, self-contained Linux® server monitoring tool.** 🌏 Website | 👀 Demo | 🐋 Docker Hub Zero dependencies. No external databases. Single binary. Just deploy and go. --- 📦 What It Does Kula collects system metrics every second by reading directly from and , stores them in a built-in tiered ring-buffer storage engine, and serves them through a real-time Web UI dashboard and a terminal TUI. | Metric | What's Collected | |--------|-----------------| | **CPU** | Total usage (user, system, iowait, irq, softirq, steal) + core count | | **GPU** | Load, Power consumption, VRAM | | **Load** | 1 / 5 / 15 min averages, running & total tasks | | **Memory** | Total, free, available, used, buffers, cached, shmem | | **Swap** | Total, free, used | | **Network** | Per-interface throughput (Mbps), packets/s, errors, drops; TCP errors/s, resets/s, established connections; socket counts | | **Disks** | Per-device I/O (read/write bytes/s, reads/s, writes/s IOPS); filesystem usage | | **System** | Uptime, entropy, clock sync, hostname, logged-in user count | | **Processes** | Running, sleeping, blocked, zombie counts | | **Self** | Kula's own CPU%, RSS memory, open file descriptors | | **Thermal** | CPU, GPU and Disk temperatures | Note: Monitoring NVIDIA GPUs might require additional setup. Check GPU monitoring. --- 🪩 How It Works Storage Engine Kula is powered by a custom-built, high-performance **ring-buffer** storage system that writes metrics directly into fixed-size binary files. Because the files have a strict maximum capacity, new data seamlessly wraps around to overwrite the oldest entries. On startup, Kula restores the latest-sample cache and reconstructs any pending aggregation buffers so it can resume serving recent data and continue tier rollups after a restart. To maximize efficiency, Kula employs a multi-tiered architecture that intelligently downsamples older data: • **Tier 1** — Raw 1-second samples (default 250 MB) • **Tier 2** — 1-minute metrics aggregation (Avg/Min/Max) (default 150 MB) • **Tier 3** — 5-minute metrics aggregation (Avg/Min/Max) (default 50 MB) HTTP server The HTTP server on backend exposes a REST API and a WebSocket endpoint for live streaming. Authentication is optional. When enabled, Kula uses Argon2id password hashing, secure session cookies, token-only session validation with sliding expiration, and hashed-at-rest session persistence. Authenticated API access can also use a bearer session token via the header. Dashboard The frontend is a single-page application embedded in the binary. Built on Chart.js with custom SVG gauges, it connects via WebSocket for live updates and falls back to history API for longer time ranges. Features include: • Interactive zoom with drag-select (auto-pauses live stream) • Focus mode to display only specific charts of interest • Configurable Y-axis bounds (Manual limits or Auto-detect) • Per-device selectors for Network, Disk I/O, and Thermal monitoring • Grid / stacked list layout toggle • Alert system for clock sync, low entropy, and system overload • Modern aesthetics with light/dark theme support --- 💾 Installation Kula was built to have everything in one binary file. You can just upload it to your server and not worry about installing anything else because Kula has no dependencies. It just works out of the box! It is a great tool when you need to quickly start real-time monitoring. Example installation methods for **amd64 (x86_64)** GNU/Linux. Check Releases for **ARM** and **RISC-V** packages. Note: Never thoughtlessly paste commands into the terminal. Even checking the checksum is no substitute for reviewing the code. Guided Guided (verify installer) Standalone Docker Temporary, no persistent storage: With persistent storage: Debian / Ubuntu (.deb) RHEL / Fedora / CentOS / Rocky / Alma (.rpm) Arch Linux / Manjaro (AUR) https://aur.archlinux.org/packages/kula Build from Source --- 💻 Usage Quick Start Starting Kula is as simple as running: Dashboard will be available at: http://localhost:27960 (or :8080 if you're using earlier versions) You can change default port and listen address in or using environment variables: TUI Inspect storage Prometheus metrics See: Prometheus metrics for more info. Health endpoints Kula exposes lightweight liveness endpoints at: Both return: Authentication (Optional) When authentication is enabled, Kula issues a random session token after login, stores only its hash on disk, and validates requests by token expiry/validity rather than binding sessions to client IP or User-Agent. Service Management Init system files are provided in : --- ⚙️ Configuration All settings live in . See for defaults. --- 🧰 Development Updating Dependencies To safely update only the Go modules used by Kula to their latest minor/patch versions, and prune any unused dependencies: Testing & Benchmarks Cross-Compile Debian / Ubuntu (.deb) Arch Linux / Manjaro (AUR) RHEL / Fedora / CentOS / Rocky / Alma (.rpm) Docker --- 🔒 Privacy Privacy is a core pillar, not an afterthought. Kula is built for privacy-conscious infrastructure. It is a completely self-contained binary that requires no cloud connection and no third-party APIs. Designed to function perfectly in air-gapped networks, Kula never sends metadata to external servers, never serves advertisements, and requires no user registration. Your monitoring starts and ends on your infrastructure, exactly where it should be. --- 📖 License GNU Affero General Public License v3.0 --- 🫶 Attributions • Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries. • Chart.js library licensed under MIT • Inter font by Rasmus Andersson licensed under OFL-1.1 • Press Start 2P font by CodeMan38 licensed under OFL-1.1