Altronis · Deneb CLI · Free and open source

Deneb CLI: set up and keep a local LLM healthy on your own AI box

A terminal tool for people who own or are setting up a box such as an AMD Strix Halo or an NVIDIA DGX Spark. It reads your hardware, recommends a model, prints the setup steps, checks the server stack and watches it over time. The free commands print the fix and you run it.

Get it on GitHub·Install

What it does

What the free commands do

01

deneb check

Scans the box with no model and no sign-in. It finds the model server on the usual ports for llama.cpp, vLLM, Ollama and LM Studio, then checks the endpoint, the service, whether the model runs on the GPU instead of the CPU, and the model file. An auth gateway and a tunnel are checked if you run them. Each failure comes with the fix.

02

deneb recommend --use coding

Ranks current open models for this box. Use coding, vision, chat or general. Add --measured to include community speeds from TokenMark.

03

deneb setup <model>

Prints the setup steps for your platform: runtime, model download, then llama-server. If Ollama is already serving, it also says whether the model can go into that Ollama, with the ollama pull command when it can. Each step shows its exact command and a warning if it needs sudo or a big download. It runs none of them.

04

deneb watch --schedule

Re-checks the box and says what changed since the last run. --schedule prints a systemd timer so it runs for you. See the section below.

05

deneb profile

Reads the hardware (OS, CPU, RAM, GPU) and says which hardware class the box is.

06

deneb catalog [--refresh]

Lists the models Deneb ranks, with real per-quant file sizes. --refresh reads them again from Hugging Face.

07

deneb guide [platform]

A pre-flight runbook for the box. Platforms: strix-halo and dgx-spark.

08

deneb stack [service]

How to run several models behind one authenticated endpoint. Services: llm, vlm, surya, surya2, gateway and tunnel.

09

deneb selfupdate [--remote user@host]

Prints how to update Deneb, on this box or on another one.

Install

One command on the box

Run this on the machine you are setting up. It needs Python 3.9 or newer, git, curl or wget and an internet connection, and installs through pipx. It never asks for sudo.

One line
curl -fsSL https://raw.githubusercontent.com/sypherin/deneb-cli/main/install.sh | sh
No curl? Use wget
wget -qO- https://raw.githubusercontent.com/sypherin/deneb-cli/main/install.sh | sh
Or with pipx, if you already have it
pipx install git+https://github.com/sypherin/deneb-cli.git
Confirm
deneb --version

Then run these in order. None of them needs a token:

Terminal
deneb check
deneb recommend --use coding
deneb setup Qwen3.6-35B-A3B    # or any model in deneb catalog
deneb watch --schedule

To upgrade later, run deneb selfupdate. It prints the command that updates Deneb in place, and runs nothing.

If pipx is missing, the installer tries to set it up without sudo. On systems that block that, such as recent Ubuntu and Debian, it stops and prints the command to install pipx. To install pipx yourself first, run sudo dnf install pipx on Fedora, sudo apt install pipx on Debian or Ubuntu, or brew install pipx on macOS with Homebrew.

To remove it, first run deneb watch --unschedule if you set up the timer. It prints the commands that take the timer down, and you run them. Then run pipx uninstall deneb-cli.

The Deneb rule

The free commands only read, and print the fix

The free commands are tell-only. When a check fails, Deneb shows you the exact command to fix it and stops. You read the command and you decide whether to run it. check, recommend, setup, watch, profile, catalog, guide, stack and selfupdate only read the box and print commands. They never run a fix.

The only files these commands write are Deneb's own, in your home directory: watch's record of past runs, so it can tell you what changed, and the model list that catalog --refresh downloads. Setup steps that need sudo or a large download carry a warning before you get to them. The client is open source, so you can read what it does.

Deneb also has a conversational troubleshooting mode (deneb on its own, or deneb with a question). It thinks with a model already running on your box, or any OpenAI-compatible URL you choose, and then nothing is sent to Altronis. If you have no model, deneb auth --request asks Altronis for a token; with that token, your questions and the log lines it reads go to the Altronis engine. It can apply a fix, and it shows each one and asks first. With --auto it runs fix commands without asking, but it still asks before it edits a file and backs the file up first. It never uses rm, sudo, system-wide systemctl or a package install.

New

Keep it healthy with deneb watch

deneb check tells you the box is set up. deneb watch tells you it is still healthy, and what changed since the last look. It marks each finding as new, worse, better or recovered and prints the fix for anything wrong. It exits 0 when all is well, 1 on a warning or a check it could not read, 2 on a failure and 3 if watch itself broke, so scripts can use it.

What it checks

Alerts

Alerts are opt in. Put the URL in DENEB_WATCH_NOTIFY, kept in ~/.config/deneb/watch.env with mode 600; the --schedule steps show how. It works with a Slack incoming webhook, a Discord webhook, or any other URL such as an ntfy topic. --notify <url> works too, but a URL on the command line shows up in ps and in your shell history. An alert goes out when a check breaks, gets worse or recovers. Nothing is sent when nothing changed, or when a problem only eased. Keys are scrubbed from the text first, and webhook URLs are never printed.

Run it on a timer

deneb watch --schedule prints a systemd user service and timer, plus the commands to install them. It writes nothing itself. The default is every 15 minutes; use --every to change it.

Terminal
deneb watch                            # run once
deneb watch --quiet                    # only the changes, for timers
deneb watch --history 20               # the last 20 change events
deneb watch --schedule --every 15m     # print the systemd timer

To forget the last run and start a new baseline, run deneb watch --reset.

Hardware catalog

The boxes it knows

Deneb recognises 35 hardware classes and picks models and setup steps to match. The checks are written for Linux with systemd. For measured speeds on these boxes, see TokenMark.

Unified memory boxes
NVIDIA DGX Spark (GB10), AMD Ryzen AI Max+ 395 (Strix Halo), Apple M1 Max, M1 Ultra, M2 Max, M2 Ultra, M3 Max, M3 Ultra, M4 Pro and M4 Max
Edge
NVIDIA Jetson AGX Thor
NVIDIA consumer GPUs
GeForce RTX 3060 12GB, 3090, 4060 Ti 16GB, 4070 Ti SUPER, 4080, 4080 SUPER, 4090, 5060 Ti 16GB, 5070 Ti, 5080 and 5090
NVIDIA workstation and data centre
RTX 6000 Ada, RTX A6000, RTX PRO 6000 Blackwell, L40S, A100 80GB, H100 SXM, H200 and B200
AMD
Radeon RX 7900 XTX, RX 9070 XT and Instinct MI300X
Intel
Arc B580 and Arc Pro B60

Free and MIT

Free, and the code is open

Deneb CLI is free under the MIT licence. It is plain Python with no dependencies beyond the standard library, so there is little to audit.

Common questions

Deneb CLI, in plain terms

How do I check if my local LLM is using the GPU?

Run deneb check on the box. One of its checks reads the server's libraries and flags a build that is CPU only, and says whether GPU offload is on and which accelerator it found (CUDA, ROCm or Vulkan). If the GPU is not being used, it prints the fix. The scan is read-only and needs no sign-in.

How do I monitor a llama.cpp or vLLM server and get alerted when it crashes?

Run deneb watch --schedule. It prints a systemd user service and timer that run deneb watch every 15 minutes by default (change it with --every). Each run checks the endpoint, service, GPU offload, disk, memory and restart count, and remembers the last result so it can say what is new, worse, better or recovered. To get an alert, put an ntfy, Slack or Discord webhook URL in DENEB_WATCH_NOTIFY. An alert goes out when a check breaks, gets worse or recovers. Nothing is sent when nothing changed, or when a problem only eased.

Does Deneb change anything on my system?

It depends on the mode. check, recommend, setup, watch, profile, catalog, guide, stack and selfupdate only read the box and print commands, and they never run a fix. You run the command yourself. The only files they write are Deneb's own in your home directory: watch's record of past runs, and the model list that catalog --refresh downloads. The conversational troubleshooting mode can apply a fix, such as editing a config file, creating a missing folder or restarting a user service. It shows each fix and asks first. With --auto it runs fix commands without asking, but it still asks before it edits a file, and it backs up any file it edits. It never uses rm, sudo, system-wide systemctl or a package install.

Does Deneb work offline, without signing in?

Yes for check, recommend, setup, watch, profile, catalog, guide, stack and selfupdate. They run on the box with no token and no model call. The conversational troubleshooting mode needs a model to think with. It uses one already running on your box, or any OpenAI-compatible URL you give it, with no token and nothing sent to Altronis, so with a local model it works offline too. If you have no model, deneb auth --request asks Altronis for a token, and a person approves each request. A few options reach out when you ask them to: recommend --measured reads TokenMark, catalog --refresh reads Hugging Face, and watch posts an alert to the URL you set. Installing needs internet.

Which boxes does Deneb support?

It knows 35 hardware classes, including the AMD Ryzen AI Max+ 395 (Strix Halo), the NVIDIA DGX Spark (GB10), Jetson AGX Thor, GeForce and workstation GPUs, data centre cards, Radeon, Instinct, Intel Arc and Apple M1 Max, M1 Ultra, M2 Max, M2 Ultra, M3 Max, M3 Ultra, M4 Pro and M4 Max. The checks are written for Linux with systemd. The full list is on this page.

Is Deneb free?

Yes. Deneb CLI is free and open source under the MIT licence. The code is on GitHub, so you can read every line before it runs on your box.

How is Deneb different from Ollama or LM Studio?

Ollama and LM Studio run models. Deneb does not run a model for you. It sets up and checks the server stack around one: picking a model for your hardware, printing the setup steps for llama-server, confirming the GPU is used, and watching the service afterwards. You can use it alongside either of them, or with a llama.cpp or vLLM server you started yourself.