lllm3090.state#

One description of the machine, in one shape, for every front end.

The panel serves this over HTTP for a browser; the terminal UI builds the same dict in this process when no panel is running. It lives here rather than inside the FastAPI handler so that the two cannot drift – a field the panel gains is a field the terminal UI can render without anyone having to remember it.

Nothing here starts, stops or downloads anything. Every call is a read of the catalogue’s arithmetic, a pidfile, or nvidia-smi, which is what makes it safe to run from a process that is not the panel.

lllm3090.state.vram() dict[str, int] | None[source]#

Used and total VRAM in MiB as nvidia-smi reports it, or None.

None means the question could not be asked – no driver, no card, a container – rather than zero, which would render as an empty card.

lllm3090.state.disk() dict[str, float] | None[source]#

Free and total space where the models are kept, in GB, or None.

The panel is where the decision to fetch 21 GB is actually made, so this is the number that has to be next to it. doctor checks the same thing, but by the time anyone runs doctor the download has already failed.

The nearest existing parent is measured, not MODELS_DIR itself: on a fresh install the directory is created by the first download, and “no answer” would be the wrong one for a disk that has plenty of room.

lllm3090.state.installed_models() list[dict[str, Any]][source]#

What is on disk, with a stray GGUF carrying the window it would get.

Both front ends now draw one merged list, so a checkpoint the catalogue has never heard of sits in it beside the curated ones and has to say the same things they do. Its window comes from catalog.launch_plan – the same call a start makes – rather than from each renderer restating UNKNOWN_MODEL_CTX in its own language, which is how the console and the browser would end up describing one model two ways.

lllm3090.state.snapshot() dict[str, Any][source]#

Everything a front end needs to draw the machine, in one call.

Deliberately excludes the panel’s busy and last: those describe a server process rather than a machine, and there is nothing honest to say about them when no panel is running.