lemonfiber — the Rust workspace
Lemonfiber
The lemonfiber binary: one tool that sets up your media stack,
runs it in slices, and proves it's working.
CLI and TUI over one core, and the API the web surface draws. Rust.
Status: shipping (
0.10.0). The core, compose driver, CLI, setup wizard, trust checks, seed and lifecycle work are built and released. Every request reaches all three surfaces: the command line, a terminal dashboard that acts rather than only watching, and a web API a browser is served from. See IMPLEMENTATION-STATUS.md for built-vs-roadmap and the roadmap (this repo is milestones M2–M10).
What it is
Section titled “What it is”lemonfiber orchestrates a fully open-source media stack — the *arr ecosystem,
Jellyfin, Seerr — and does the parts that are usually manual: guided setup, wiring
services together, and verifying things work rather than assuming they do
(is the VPN actually isolating traffic? are imports hardlinking?).
Run it two ways, one core behind both:
lemonfiber up tv # scriptablelemonfiber # a terminal dashboardA third surface, the web UI, is its own repository (ADR-0011): a single-page app that speaks to a local HTTP API this binary serves.
The one load-bearing property
Section titled “The one load-bearing property”lemonfiber-core cannot render. It has no UI dependency of any kind — no
terminal, no HTTP server. A surface (CLI, TUI, web) is a rendering, never a
capability, which is what lets the web surface live in another repository at all. This is enforced by the crate graph, not by review. See spec
ARCH-R11.
Layout
Section titled “Layout”crates/├── lemonfiber/ bin — the only crate that draws a terminal (CLI, TUI)├── lemonfiber-core/ lib — all logic, no UI├── lemonfiber-api/ lib — the HTTP endpoints, and serving the web app├── lemonfiber-ports/ lib — the boundary and its vocabulary├── lemonfiber-manifest/ lib — parses stack.toml└── lemonfiber-fixtures/ lib — shared test fixtures.docs/ repo-local technical docs (Rust-specific HOW)Building
Section titled “Building”cargo build --workspace # or: just buildjust ci # everything CI runsjust ci also turns on this repository’s pre-push hook, which refuses a push
that would leave a branch carrying no commit origin/main does not — what
pushing the trunk over a feature branch looks like. It is git config core.hooksPath .githooks, per clone, and just hooks does only that. A clone
where neither has run has no hook: git cannot read .githooks/ on its own.
Contributing
Section titled “Contributing”This project’s spec is canonical: every change cites a spec identifier that already exists. Before your first PR, read AGENTS.md and the contributing guide.
Licence
Section titled “Licence”Hippocratic License 3.0 — ethical-source, source-available, deliberately not OSI-approved. See the rationale.
This page lives in another repository Rendered from lemonfiber/lemonfiber at a2ac9bf, 2026-09-09. Read the source of this page