One or two 24 GB GPUs are the main target
club-3090 starts with a practical constraint: modern 27B-class models can fit on one or two 24 GB consumer NVIDIA cards when the engine, quantization, context, and cache settings are chosen together. The repository packages those choices as profiles instead of asking users to reconstruct them from scattered discussions. Setup downloads and verifies weights, launch selects a compatible profile, and the serving container exposes an OpenAI-compatible API.
This is a large operating notebook, not a small launcher. Our commit 8abac56 checkout contained 944 files, about 186,196 source lines, and 25.4 MB before the cockpit dependencies. Model-specific directories carry compose files, patches, measured records, and caveats. Shared scripts handle hardware inspection, variant switching, health, stress, soak, and reporting.
Three engines cover different failure modes
vLLM is the high-throughput route, llama.cpp favors predictable memory behavior, and ik_llama supplies another path for GGUF quantizations. club-3090 does not pretend one engine wins every workload. The README routes users by card count and workload, and it marks experimental or retired configurations. A profile can boot and still fail after a long prefill, several agent turns, or an unusual tool response.
The c3 cockpit makes the catalog less intimidating. Its Run and Operate view can browse profiles, inspect GPU placement, start services, read logs, and run health checks. Our cockpit install added 45 Python packages and used 45 MB, a small control layer beside the model weights and CUDA images. Write actions use confirmation and a single-writer lease, according to the cockpit guide.
What happened when we ran it
Our sandbox installed the cockpit project in 80 seconds and built it in 7 seconds. The 45 installed packages occupied 45 MB, and pip-audit reported 0 known vulnerabilities. Those figures cover tools/serve-cockpit, where the Python project lives. We did not have an RTX 3090, download a model, start Docker, or run the repository's serving benchmarks, so this lab result says nothing about tokens per second, VRAM fit, or model quality.
The test step failed with exit code 1 after 12 seconds. Pytest reported 30 passed and 200 failed out of 230, plus 694 warnings in 5.74 seconds. The final failures repeatedly said async def functions are not natively supported. The log does not establish anything beyond that message, so we do not assign a deeper cause. The cockpit README gives a separate development install with pytest and pytest-asyncio, which contributors should follow before rerunning the suite.
A passing boot does not prove a long agent session
The repository's own quick-start warning says a single-card vLLM path can hit an open prefill out-of-memory cliff above 50K tokens. Its cliff document also distinguishes one large prompt from context accumulated over several agent turns. The recommended escapes use two cards or a different engine, yet the README notes that a former single-card llama.cpp slug was retired. Anyone buying the project for long context should test the exact live profile, not the advertised context field.
Open issue 1096 provides a newer example on a specific dual-card Qwen3.8 profile: decode dropped to about 5 to 8 tokens per second above roughly 12K accumulated context with a DFlash2 drafter, while disabling that drafter cleared the symptom. The report says the normal soak passed, and only the agentic phase exposed the collapse. That finding supports club-3090's layered verification approach and warns users that one green probe is not a production verdict.
The real setup includes drivers and 30 GB model files
The README expects Linux, Docker plus the NVIDIA Container Toolkit for vLLM, an NVIDIA driver in the documented range, and about 30 GB of free disk per model. Smaller 12 GB cards do not fit its main 27B-class recipes. Native Windows supports only upstream llama.cpp; the full scripts require WSL2. A Hugging Face token may also be needed for gated weights, and the cockpit needs Python 3.11 or newer.
The 45 MB cockpit environment is therefore the cheapest layer. Engine images, weight files, quant variants, and benchmark artifacts dominate disk use. The supplied report script records the rig and redacts tokens, paths, users, and hostnames by default. Keep those reports beside each deployment change, because a profile name without driver, image digest, model commit, and GPU layout is not enough to reproduce a result.
Engine pins and vendored patches need inspection
club-3090 moves quickly because upstream inference engines move quickly. Profiles can pin nightly images and mount local patches to keep a model working on consumer Ampere. Open issue 1012 reports that two patches declared load-bearing on vLLM 0.25.1 and 0.27.1 were partly or wholly dormant because target files had disappeared, while the relevant compose files did not mount them. The issue asks for behavioral probes and stronger checks instead of trusting registry labels.
A 186,196-line repository can document these relationships better than a short compose gist, but documentation can still drift from the live image. Before an update, save the current image digest and profile. Afterward, run the health, full verification, stress, agentic, and soak checks that match the workload. Read boot warnings instead of treating an exit code as the whole answer.
September activity is strong while profiles remain conditional
GitHub recorded a September 1, 2026 push and same-day issue activity. The repository had 2,144 stars and 28 combined issues and pull requests when fetched. The latest formal release was v0.10.2 on July 13, but hundreds of later commits and current benchmark submissions show that the master branch has moved well beyond that tag. Health here is visible in code, reports, and discussion, not in the release date alone.
club-3090 earns trust by publishing failure analyses alongside working recipes. Our 30 passing cockpit tests show some headless paths executed, while 200 async failures block a clean lab verdict for commit 8abac56. Experienced homelab operators can get more from this project than from a generic installer because it exposes the tradeoffs. Anyone seeking a maintenance-free local appliance should choose a narrower runner and accept less control.

