One screen for running and fine-tuning AI models on an Apple Silicon Mac, or on Linux with NVIDIA GPUs (experimental): how fast the model is (or how well it is learning), how close it is to running out of memory, and how hot the machine is getting, on the same timeline.
Activity Monitor (or nvtop) makes you switch views and knows nothing about models. Benchmark apps time
the requests they send themselves. inference-vitals sits beside whatever you are running and records both
sides, the model and the machine, so you can see why a run slowed down: the GPU got hot, the system
started swapping, or a page was simply longer.
What you get
- Model runs, with any local engine (Ollama, LM Studio, llama.cpp, the MLX servers, Jan, LocalAI) or your own code: speed live while the answer is written, time to first token, context used, answers cut off or invalid.
- Fine-tunes: training and validation loss, steps and time left, and whether the model is still learning or has started memorising its examples.
- The machine: GPU memory left, memory pressure, swap, GPU use, temperatures, thermal state, power.
- Energy: what the machine used over any range, how much of it was the AI, and the cost at your rate.
- Battery on a laptop: the charge, and on battery how long it will last at this load, with a warning when it will not outlast the run.
It fits one screen: the live numbers stay in view while tabs swap the charts below them, and you star the charts you want together in Favourites. Every tile and tab: docs/dashboard.md.
Quick start
On an Apple Silicon Mac with Homebrew:
brew install uv prometheus macmon
uv tool install inference-vitals
inference-vitals start
open http://127.0.0.1:3000
The machine's numbers appear straight away. Linux with NVIDIA, Grafana, troubleshooting: docs/install.md.
Connect what you run
| You run… | Then | More |
|---|---|---|
| An engine with an HTTP API (Ollama, LM Studio, llama.cpp, MLX servers) | inference-vitals proxy --to http://127.0.0.1:11434 and point your app at http://127.0.0.1:8401 |
connect.md |
| Your own Python code | Three calls from inference_vitals.metrics |
connect.md |
| A fine-tune (mlx-vlm, mlx-lm, or any loop) | inference-vitals train -- <your training command> |
training.md |
Privacy
Everything runs on your machine and listens on 127.0.0.1 only; the page loads nothing from the internet;
only numbers are collected, never prompts, answers or file names. More: docs/limits.md.
Documentation
| Install | Mac and Linux, commands, Grafana, troubleshooting, uninstall |
| Connect | The proxy and the Python library for model runs; run conditions |
| Training | Following a fine-tune three ways; how "Learning?" is decided |
| Dashboard | Every tile, training mode, energy and cost, battery, address options |
| Metrics | Every metric name, for other tools that read Prometheus |
| Limits | Privacy in full, overhead, what it cannot show |
| AGENTS.md | For coding agents helping you: tasks, checks, symptoms, rules |
| CONTRIBUTING.md | Tests, checks, adding a trainer, releasing, where things are |
| CHANGELOG.md | What changed in each release |
It is Prometheus with a dashboard page of its own (or
Grafana), macmon for the chip on a Mac (on
Linux, a small exporter that reads nvidia-smi), small exporters for memory and the battery, the proxy,
and a tiny Python library, with no dependencies beyond Python itself.
Credits
inference-vitals runs macmon (MIT) and Prometheus (Apache-2.0), and optionally Grafana (AGPL-3.0), installed separately (Homebrew on a Mac, your package manager on Linux); none of them is bundled here.
Licence
MIT. See LICENSE.
Metadata
Release files for inference-vitals 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| inference_vitals-0.2.1.tar.gz | 60.0 kB | With provenance | Details for inference_vitals-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| inference_vitals-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for inference_vitals-0.2.1-py3-none-any.whl |
Total release size: 126.2 kB
Release files / inference_vitals-0.2.1.tar.gz
| Download URL | inference_vitals-0.2.1.tar.gz |
|---|---|
| Size | 60.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b5053274ded6531cf7ae09519c5bd9024c908ebf98518c374297fab8effe6cad
|
|
BLAKE2b-256 checksum How to use checksums |
a65c73555c45008ef48d9d508992b27a2f066b515a8fbe8a743e819bc02bbcc8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.
Transparency logRelease files / inference_vitals-0.2.1-py3-none-any.whl
| Download URL | inference_vitals-0.2.1-py3-none-any.whl |
|---|---|
| Size | 66.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9eca6eb8b7ad9760ccddc995499c100ff11889108cbe4f82fb3bd4d33d9dafbf
|
|
BLAKE2b-256 checksum How to use checksums |
b546bb7a213da4640549072fc9c94c616268b74a129e6932e1e393b664d8e069
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.
Transparency logSecurity for inference-vitals 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for inference_vitals-0.2.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.