mtop
htop for Ollama — a curses-based TUI that monitors your models, GPU, and the Ollama server (in Docker, Podman or bare-metal) in real time. Zero flicker. Zero dependencies beyond Python 3.10+.
Why?
There are web dashboards, Prometheus exporters, and chat TUIs for Ollama. But there's no terminal monitor — something you SSH into a box and just run, like htop or nvtop, to see what models are loaded, how much VRAM they're eating, and whether the container is healthy.
mtop fills that gap. One file, one command, pure stdlib Python. It auto-detects whether Ollama runs in a Docker/Podman container or as a bare-metal process (systemd or a manual ollama serve) and monitors it either way.
It also watches llama-swap fronting vLLM (--backend llama-swap), with the same host, GPU and runner views. See llama-swap + vLLM. And ComfyUI (--backend comfyui): the models its jobs load, live job progress with ETA, the queue and the model catalog, with --control to cancel, clear and free. See ComfyUI.
Features
- Zero-flicker display — curses double-buffered rendering, no
clear+ print loops - Effective inference config —
RUNNERSsection parses each runner's argv: context, batch, flash attention, KV cache dtype, layer offload. The only place these are observable - Whole-tree process stats — the server and its per-model
ollama runnersubprocesses, with PSS accounting where available - Server config — the
OLLAMA_*/CUDA_VISIBLE_DEVICES/HSA_*environment the server was started with, from the container, the process, or the systemd unit; next to RUNNERS this is "what was set" vs "what was negotiated" - Which model on which card — NVIDIA per-process VRAM via NVML (ctypes, no
nvidia-smifork) joined to the runner PIDs: aGPUcolumn in RUNNERS and aprocs:line under each card - Loaded models — name, VRAM/RAM split, context length, processor type, TTL countdown
- Container health — status indicator (●/✗/○), uptime, CPU & memory with progress bars
- Multi-vendor GPU monitoring — NVIDIA via NVML (
nvidia-smias fallback), AMD and Intel via sysfs, Apple Silicon viaioreg; side by side on the same host; utilization, VRAM/GTT, temperature, power draw; ACPI thermal zones alongside (on the DGX Spark they differ from the GPU sensor) - AMD without ROCm — telemetry comes from
/sys/class/drm/card*/device, so a bareamdgpudriver is enough;rocm-smiis only a fallback - Jetson / Tegra / NVIDIA Spark — automatic fallback to unified memory via
/proc/meminfo - Non-blocking UI — all I/O (docker, nvidia-smi, HTTP) runs in a background collector thread; the interface stays responsive at 100 ms even when the API hangs, and stale data is flagged
- Interactive —
qto quit,+/-to adjust refresh interval,oto toggle rawollama ps - Log panel with request stats — tail of the container log or
journalctl, with requests/minute, status classes and p50 latency parsed from Ollama's GIN access log (lto toggle,--logs) - Sparklines — CPU, MEM, GPU utilization and VRAM history next to each bar, block characters, stdlib
deque - Scriptable —
--jsonone-shot mode for cron or Ansible facts (exit code 1 on unhealthy);--json --watchstreams NDJSON - Prometheus exporter without a port —
--prometheusprints text exposition format;--prometheus --watch -o …/textfile/mtop.promkeeps a node_exporter textfile fresh with atomic writes, no cron needed - API-only mode —
--no-dockerfor monitoring remote Ollama instances without local docker calls - cgroup-aware CPU bar — normalizes against the container's
--cpus/quota limit, not the host core count - Docker and bare-metal — auto-detects the source: a Docker container, a systemd
ollama.service, or a manualollama serve; monitors process CPU/MEM via/proc(Linux, no root) orps/sysctl(macOS) - Docker Engine API over the socket — no
dockerbinary needed: mtop talks to/var/run/docker.sock(or a rootless / Podman socket, or$DOCKER_HOST) with stdlibhttp.client; thedocker/podmanCLI is only a fallback. One-shot stats mean no 2 sdocker statsstall per cycle - Podman — same code path via the compat API socket or the
podmanCLI - Respects
$OLLAMA_HOST— works with remote Ollama instances out of the box - Several instances at once — repeat
-u; each remote gets its own LOADED MODELS table. Two Ollama instances on a mixed CUDA + ROCm host, or a fleet of remote boxes, on one screen - Behind a reverse proxy —
-H 'Authorization: Bearer …',$OLLAMA_API_KEY, basic auth in the URL,--insecure/--cacertfor private certificates - llama-swap + vLLM —
--backend llama-swap: the whole model catalog with state, port and TTL, thevllm serveflags of each running model, the user-level systemd unit and its journal - ComfyUI —
--backend comfyui: the models of the running and recent jobs, live job progress (node, step x/y, ETA) from its websocket, the queue, the GPU memory ComfyUI holds, the/modelscatalog;--controlcancels the job, clears the queue, frees the models - Zero external dependencies — only Python stdlib (
curses,urllib,json,subprocess)
Quick Start
One-liner (no install)
curl -fsSL https://github.com/Quaerendir/mtop/releases/latest/download/mtop.py -o mtop.py
chmod +x mtop.py
./mtop.py
pip install
pip install ollama-mtop
mtop
Or without touching the system Python: pipx install ollama-mtop / uv tool install ollama-mtop.
From source
git clone https://github.com/Quaerendir/mtop.git
cd mtop
pip install -e .
mtop
Run directly from a clone (no install)
git clone https://github.com/Quaerendir/mtop.git
cd mtop
PYTHONPATH=src python -m mtop
Usage
mtop [-c CONTAINER] [-i INTERVAL] [-u URL ...] [--backend B] [-H HEADER] [--insecure]
[--cacert FILE] [-m MODE] [--runtime RT] [--no-gpu] [--control]
[--json | --prometheus] [--watch] [-o FILE] [-V] [-h]
Options:
-c, --container NAME Docker container name (default: ollama, or llama-swap for
--backend llama-swap, comfyui for --backend comfyui)
-m, --mode MODE Data source: auto|docker|local|api (default: auto)
local = bare-metal `ollama serve` (systemd/proc/ps)
api = models only, no host resource stats
-i, --interval SECS Refresh interval in seconds (default: 1.0)
-u, --api-url URL Ollama API base URL (default: $OLLAMA_HOST or http://localhost:11434)
Scheme-less values (gpu-rig:11434) are accepted, like Ollama itself.
Repeatable: the first is the primary (host stats, runners), the
rest are API-only. Optional label: -u rig=http://gpu-rig:11434.
Credentials in the URL (https://user:pw@host) become basic auth.
With --backend llama-swap the default is http://localhost:8001,
with --backend comfyui http://localhost:8188; $OLLAMA_HOST is
ignored for both.
--backend B Server to monitor: ollama|llama-swap|comfyui (default: ollama)
-H, --header 'N: v' Extra HTTP header for every API request (repeatable);
$OLLAMA_API_KEY is sent as 'Authorization: Bearer …' automatically
--insecure Skip TLS certificate verification for https:// endpoints
--cacert FILE CA bundle (PEM) to verify https:// endpoints against
--runtime RT How to reach the container runtime: auto|api|cli (default: auto)
api = Engine API on $DOCKER_HOST or a docker/podman socket
cli = docker/podman subprocesses
--no-gpu Disable GPU monitoring section
--no-runners Hide the RUNNERS section (effective inference config)
--no-env Hide the SERVER CONFIG section (OLLAMA_* environment)
--logs Show the LOGS section from the start (toggle with l); adds
`logs` with request stats to --json / --prometheus
--log-lines N Log lines to show (default: 8)
--control Allow model actions: arrow keys select a loaded model, s stops
(unloads) it after a y/N prompt, t keeps it loaded longer,
L loads one from /api/tags, P pulls one by name (X cancels).
Off by default — without it mtop never writes to the API
--no-docker API-only mode: skip all docker calls (remote instances)
--json Print one snapshot as JSON and exit (exit 1 on unhealthy)
--prometheus Print one snapshot in Prometheus text exposition format and exit
--watch With --json/--prometheus: emit every INTERVAL seconds until Ctrl-C
(--json --watch prints NDJSON, one compact object per line)
-o, --output FILE Write to FILE instead of stdout: Prometheus output replaces the file
atomically (tmp + rename), NDJSON is appended
-V, --version Show version
-h, --help Show help
Examples
# Monitor a custom container name
mtop -c my-ollama
# Slower refresh for remote/metered connections
mtop -i 5
# Bare-metal Ollama (systemd service or `ollama serve` in a terminal)
mtop --mode local
# Let mtop figure it out (docker? systemd? manual? — it probes in that order)
mtop
# Monitor a remote Ollama instance — API only, no local docker/GPU noise
mtop -u 192.168.1.100:11434 --mode api
# Several instances: the local one with full host stats, two remotes API-only
mtop -u localhost:11434 -u rig=gpu-rig:11434 -u spark=192.168.3.6:11434
# Ollama behind a reverse proxy with a private CA and a bearer token
OLLAMA_API_KEY=… mtop -u https://ollama.internal --cacert /etc/ssl/internal-ca.pem
# Podman (rootless): the socket is found automatically; or point at it
DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock mtop
# mtop inside a container, with only the socket mounted — no docker CLI needed
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock \
--network host python:3.12-slim sh -c \
"curl -fsSL https://github.com/Quaerendir/mtop/releases/latest/download/mtop.py -o m.py && python m.py"
# One-shot health/state snapshot for scripting (schema_version=1 is the first key;
# it changes only when a field changes meaning or goes away)
mtop --json | jq '.models[].name'
# Stream one JSON line per second (NDJSON) — feed it to jq, a log shipper, or a file
mtop --json --watch -i 1 | jq -c '{t: .wallclock, models: [.models[].name]}'
# Prometheus, no port: keep a node_exporter textfile fresh (atomic writes)
mtop --prometheus --watch -i 15 -o /var/lib/node_exporter/textfile_collector/mtop.prom
# llama-swap + vLLM (user-level systemd unit, API on :8001)
mtop --backend llama-swap
# llama-swap on another port or host
mtop --backend llama-swap -u http://gpu-box:9292
# ComfyUI (container `comfyui` or a `python main.py` from a ComfyUI checkout, API on :8188)
mtop --backend comfyui
# Using OLLAMA_HOST environment variable
export OLLAMA_HOST=http://gpu-rig:11434
mtop
Interactive Keys
| Key | Action |
|---|---|
q / ESC |
Quit |
? |
All keys with what they do and which sections are on; any key closes it |
+ |
Decrease refresh interval (faster) |
- |
Increase refresh interval (slower) |
o |
Toggle raw ollama ps section |
r |
Toggle the RUNNERS section |
e |
Toggle the SERVER CONFIG section |
l |
Toggle the LOGS section (container logs / journalctl, request stats) |
↑ / ↓ |
Select a loaded model — with llama-swap, any catalog entry (--control only) |
s |
Stop (unload) the selected model after a y/N prompt (--control only) |
t |
Keep the selected model loaded for 30m / 2h / 24h / forever (1–4), keeping its context size (--control, Ollama only) |
L |
Ollama: pick a model from /api/tags and load it; Tab switches endpoint; asks first when the server is at OLLAMA_MAX_LOADED_MODELS. llama-swap: load the selected catalog entry; asks first when another model runs (--control only) |
P |
Pull a model by name (POST /api/pull): type it, Tab switches endpoint, Enter starts. A progress row above the footer shows bytes, speed, ETA and the current layer; stop/load keep working meanwhile. X cancels — Ollama keeps the layers it has, so the next pull resumes (--control, Ollama only) |
--control on the Spark, in real time (waits over 2 s cut): L loads two models from the picker (Ollama itself unloads the first when the second needs the memory), t 2 keeps one loaded for 2h, ? lists the keys, P pulls smollm:135m, s y stops a model. The recording is docs/demo-control.cast (asciinema play docs/demo-control.cast); tools/demo-control.sh records and renders it again.
What you see
The screenshot above is a real session on a DGX Spark (GB10) with Ollama in Docker and two models loaded. Top to bottom:
- header — host, container and the runtime in use (
ollama · docker-api; orollama: serve · pid, or the API URL in api mode), uptime, the Ollama version, and+N endpointswhen several are polled;STALEappears if the collector falls behind - CONTAINER / PROCESS RESOURCES — CPU normalized to the cgroup / systemd / affinity budget, memory with the accounting named (
pss,rssor cgroup), sparklines of the recent history - GPU — one block per card, any vendor;
procs:lists what NVML sees on the card, joined to the runners by PID;ACPIis the hottest ACPI thermal zone, which on the GB10 reads differently from the GPU sensor - LOADED MODELS —
/api/ps, one table per endpoint when there are several; PROCESSOR computed exactly asollama psdoes - RUNNERS — the negotiated inference config from each runner's argv, plus the card it sits on
- SERVER CONFIG — the
OLLAMA_*environment the server was started with and where it was read from - LOGS — tail of the container log or journal, with request rate and latency parsed from the GIN access log
- footer — keys in short form, toggles that are on in green; on a narrow terminal the view toggles go first, then the model keys,
? helpalways stays
o adds the raw ollama ps table. Refresh the screenshot with tools/screenshot.py (see its docstring).
llama-swap + vLLM
mtop --backend llama-swap monitors llama-swap, the proxy that starts and stops model servers on demand, here with vLLM behind it. The layout is the same; what feeds each section changes:
| Section | Ollama | llama-swap |
|---|---|---|
| MODELS | /api/ps: loaded models only, VRAM/RAM split, context, processor, expiry |
/v1/models merged with /running: every configured model, loaded or not, with STATE (ready, starting, …), PORT of its upstream, TTL left and the config's description |
| RUNNERS | llama.cpp / ollama runner argv |
vllm serve argv: context (--max-model-len), plus gpu-util, quant, tp (when > 1), trust-remote-code; or a llama-server argv (GGUF models), as for Ollama. Any other upstream (SGLang, a wrapper script that execs its server) is a runner too, named by its program, with --model, --port and --served-model-name/--name read from its argv. All carry the model's llama-swap state. vLLM runners join the catalog by exact id (--served-model-name = llama-swap's config key), llama-server and others also by port (the upstream port in /running). GPU memory of vLLM's EngineCore child counts toward its runner; VRAM is what NVML charges the runner. The header's +Nr counts these runners, not llama-swap's own nvidia-smi |
| Server discovery | container ollama, system unit ollama.service, or an ollama serve process |
container llama-swap, the user unit llama-swap.service (systemctl --user), or a process named llama-swap |
| SERVER CONFIG | OLLAMA_*, GPU selection |
the same prefixes plus VLLM_*, HF_*, TORCH_*, TRITON_*, read from the container, the process or the user unit, plus the runners' own environment (per-model launchers usually export these, so they never reach llama-swap) |
| LOGS | container log or journalctl -u ollama |
container log, journalctl --user -u llama-swap, or the file the unit writes to (StandardOutput=append:/path). llama-swap's Request … lines feed the request stats; its lines carry no time, so from a file the rate counts what arrives while mtop runs |
| Version in header | /api/version |
/api/version (llama-swap v256); an older llama-swap without it is asked once and shows none |
Defaults follow the backend: the API is http://localhost:8001 and the container name llama-swap, so on a box that runs both, --mode auto does not lock onto the unrelated ollama container. Pass -u / -c for anything else.
--control works here too: the cursor walks the whole catalog, s stops the selected model (POST /api/models/unload/<model>), L starts it (GET /upstream/<model>/health, which answers once the model is up; the start carries on if mtop exits). llama-swap runs one model at a time unless its config groups them, so L asks first while another model runs. There is no t or P: llama-swap takes TTL and its models from its config. Tested with llama-swap v256.
TTL counts down from the model's last request. llama-swap reports only the configured TTL, so mtop follows its /api/events stream (inflight requests, the /upstream/<model>/… access-log lines, models turning ready) and counts from what it sees. Until mtop has seen a model used, the column shows the configured TTL as an upper bound, e.g. ≤1d 0h. A one-shot --json / --prometheus has nothing to count from; with --watch they get ttl_left / expires_at and mtop_model_expires_seconds like Ollama.
Not available with this backend: the raw ollama ps table (o) and keep-loaded (t). Verified against llama-swap + vLLM and llama-server on an NVIDIA GB10.
ComfyUI
mtop --backend comfyui monitors ComfyUI, the node-based image and video generation server. Header, resources, GPU, SERVER CONFIG and LOGS work as for Ollama. The MODELS section is built differently, because ComfyUI is not a model server: it loads models as a job's workflow asks for them.
The screenshot is a real render of Qwen-Image on the Spark. Top to bottom in MODELS:
- queue — jobs running and waiting (
/queue), and the GPU memory held by the ComfyUI process (NVML per-process memory; 0.3 GiB after/free, about 28 GiB with this workflow loaded) - catalog — model files per folder from
/models, re-read once a minute. Files under a Hugging Face hub cache (models--org--name/…), which ComfyUI lists in every folder anextra_model_pathsentry points at, are counted once, apart - job — the running job: node, sampler step x/y with a bar, elapsed time, ETA; when idle, the last job's outcome and duration (red when it failed or was interrupted)
- table — the models in the workflows of the running job and the last 20 finished ones
| Section | Ollama | ComfyUI |
|---|---|---|
| MODELS | /api/ps: what is loaded, VRAM/RAM split, context, expiry |
loader nodes (CheckpointLoaderSimple, UNETLoader, CLIPLoader, VAELoader, LoraLoader, … and custom loaders named the same way, e.g. UnetLoaderGGUF) of the running job (/queue) and the finished ones (/history), with KIND, STATE, LAST USED and JOBS (how many of the recent jobs loaded it) |
| Progress | — (P pull progress only) |
the running job's node and steps, from ComfyUI's websocket /ws |
| RUNNERS | llama.cpp / ollama runner argv |
none: ComfyUI runs the models in its own process |
| Server discovery | container ollama, ollama.service, or an ollama serve process |
container comfyui, or a python main.py whose script path or working directory names ComfyUI (no systemd unit) |
| LOGS | container log or journal, request stats from the GIN lines | container log, ANSI colors stripped, no request stats (ComfyUI logs no access lines) |
| Version in header | /api/version |
system.comfyui_version from /system_stats |
--control |
stop / load / keep / pull a model | cancel the job, clear the queue, free the models |
STATE. ComfyUI's API has no equivalent of /api/ps: nothing in it says which models are in memory. So the state says where mtop knows a model from:
| STATE | Meaning |
|---|---|
in use |
loaded by the job running now: certainly in memory |
recent |
loaded by one of the last 20 jobs. ComfyUI keeps a model cached after the job until memory runs short, /free is called or the server restarts (a restart also clears the history), so it is probably still in memory. GPU memory held tells: it drops when ComfyUI frees them |
Only in use models count as loaded for mtop_models_loaded.
Job progress. The node and its steps come from /ws, which mtop follows with a client id of its own. ComfyUI sends a job's progress to the client that queued it, and to everyone only when the job was queued without a client_id, as scripts posting to /prompt usually do. A job queued from the web UI belongs to the browser tab, so for it the line says running 1m 05s · progress goes only to the client that queued it. mtop never borrows the tab's id, as that would take the progress away from the tab. ComfyUI publishes no start time for a running job either, so the time counts from when mtop first found the job running. That is exact to one refresh, except for a job already running when mtop starts, which shows ≥. The ETA covers the current node's steps (the sampler: nearly the whole job) at the rate of the steps so far. One-shot --json / --prometheus read no websocket, so they have the time but no steps.
--control acts on the server, not on a model, and asks y/N first: s cancels the running job (POST /api/jobs/<id>/cancel, which interrupts only that job; an older ComfyUI gets POST /interrupt with the prompt id), C clears the pending queue (POST /queue {"clear": true}), F unloads every model and frees memory (POST /free). There is no cursor. With several -u, the actions go to the first endpoint.
Defaults follow the backend: the API is http://localhost:8188 and the container name comfyui. Pass -u / -c for anything else. Not available: the raw ollama ps table (o).
Prometheus adds mtop_comfyui_info, mtop_comfyui_queue_jobs{state}, mtop_comfyui_gpu_memory_bytes, mtop_comfyui_model_last_used_seconds{model,kind}, mtop_comfyui_job_elapsed_seconds{prompt_id}, mtop_comfyui_job_progress_ratio{prompt_id,node} and mtop_comfyui_websocket_up. Verified against ComfyUI 0.37.0 in Docker on an NVIDIA GB10: progress, cancel, clear and free on real renders.
Supported Platforms
| Platform | GPU Monitoring | Notes |
|---|---|---|
| Linux x86_64 + NVIDIA | ✅ Full | NVML via ctypes; nvidia-smi on host or in container as fallback |
| NVIDIA Jetson / Orin | ✅ Unified memory | Falls back to /proc/meminfo |
| NVIDIA GB10 Spark | ✅ Unified memory | Tegra-based, same fallback |
| Linux + AMD (amdgpu) | ✅ Full | sysfs — no ROCm install required |
| AMD APU (780M, Strix) | ✅ Unified memory | GTT pool, not the tiny VRAM carve-out |
| Linux + Intel (Arc / Xe / iGPU) | ⚠️ Partial, untested | sysfs: name, VRAM total (xe), temperature, power, frequency; no utilization without root |
| Linux without GPU | ✅ (no GPU section) | Use --no-gpu to hide the section |
| Ollama in Podman | ✅ Full | compat API on the Podman socket, or the podman CLI |
| Bare-metal Ollama (systemd) | ✅ process stats | --mode local; CPU/MEM from /proc, no root needed |
Manual ollama serve |
✅ process stats | auto-detected via /proc cmdline scan |
| macOS (Apple Silicon) | ✅ Unified memory (no temp/power) | Verified on M5 Pro, macOS 26.6: GPU utilization and in-use memory via ioreg, no root; --mode local process stats via ps/sysctl; temperature/power need root (powermetrics) |
| WSL2 | ⚠️ Partial | Works if Docker + nvidia-container-toolkit configured |
Requirements
- Python 3.10+ (uses
match-era type hints likelist[str],X | Y) - Docker or Podman for container monitoring — access to the socket is enough, the CLI is optional
- Ollama in a container, as a bare-metal process, or reachable via API — or llama-swap (
--backend llama-swap), or ComfyUI (--backend comfyui) - NVIDIA driver (optional, for GPU stats —
libnvidia-ml.so.1, ornvidia-smias fallback)
Roadmap
- Recorded
--controlsession for the README (asciinema + agg) - AMD GPU support (sysfs first,
rocm-smifallback) - Apple Silicon GPU stats (via
ioreg, no root —powermetricsneeds sudo) - Intel GPU stats via sysfs (partial: no utilization without CAP_PERFMON)
- Model pull with progress (
Punder--control) - Multi-host support (repeatable
-u, per-endpoint model tables) - Docker Engine API over the socket, Podman support
- Configurable layout (raw
ollama pstoggle; more sections to follow) - Model actions — unload, load from
/api/tags, extend TTL (--control) - Sparkline history for CPU/GPU utilization (block chars, stdlib deque)
- systemd/bare-metal Ollama support (process stats via
/proc, no Docker required) - Log panel (container logs / journalctl) with request stats from the GIN log
- Effective inference config per runner (context, flash attention, KV dtype)
- Prometheus text exposition (
--prometheus) and NDJSON streaming (--watch) - Request rate from the access log (tokens/s is per-response data Ollama returns only to the caller — not observable from outside)
- Effective server environment (
OLLAMA_*) per source - Runner → GPU mapping via NVML per-process memory
- ComfyUI backend — models of the running and recent jobs, live job progress over
/ws, cancel / clear / free (--backend comfyui)
Contributing
PRs welcome. Keep it stdlib-only — the zero-dependency constraint is a feature, not a limitation.
git clone https://github.com/Quaerendir/mtop.git
cd mtop
pip install -e ".[dev]" # + pytest, ruff
# hack on src/mtop/*.py — util, procfs, runner, collector, ui, cli, container, gpu, logs, export, comfyui, comfywatch, wsclient
mtop
ruff check src tools tests
pytest # stdlib-only fakes: no GPU, docker or Ollama needed
# regenerate the single-file artifact shipped with releases
python tools/bundle.py # -> dist/mtop.py
dist/mtop.py is generated — never edit it by hand. The version lives in src/mtop/_version.py only.
A v* tag attaches the bundle to the GitHub release and, once the repository variable
PYPI_TRUSTED is set, publishes the sdist and wheel to PyPI through Trusted Publishing
(GitHub OIDC, no token in the repo). The tag must equal v + the package version.
License
MIT — see LICENSE.
Acknowledgements
Built as a collaboration between a human homelab geek and Claude (Anthropic) during a late-night infrastructure session. The original bash prototype migrated to Python/curses because fighting tput and jq in a loop was getting old.
Metadata
Release files for ollama-mtop 0.16.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 |
|---|---|---|---|---|
| ollama_mtop-0.16.1.tar.gz | 1.9 MB | With provenance | Details for ollama_mtop-0.16.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ollama_mtop-0.16.1-py3-none-any.whl | Python 3 | none | any | Details for ollama_mtop-0.16.1-py3-none-any.whl |
Total release size: 2.0 MB
Release files / ollama_mtop-0.16.1.tar.gz
| Download URL | ollama_mtop-0.16.1.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d16286013a0dc2841094b1de252655c3026f73d25f0b0d58d379b1282946e7c0
|
|
BLAKE2b-256 checksum How to use checksums |
edc178291e7f3de2c0ebd08021dcecb2eaa1ee08c4f7ebd322cc1405439278d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 12, 2026.
Transparency logRelease files / ollama_mtop-0.16.1-py3-none-any.whl
| Download URL | ollama_mtop-0.16.1-py3-none-any.whl |
|---|---|
| Size | 116.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e65f77b1f76010bc8bd8da36b41b9a7d3ffa9beca597b21f9798a51464b899ad
|
|
BLAKE2b-256 checksum How to use checksums |
cef6163fed1e853fe7b8723903e3a0fe7b3e5489d569ed998351c26deee27d6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 12, 2026.
Transparency logSecurity for ollama-mtop 0.16.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
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ollama_mtop-0.16.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 Oct 12, 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.