glances Documentation

Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.

33,277 stars Python Python 1 file ยท ~37,797 tokens #monitoring#multi-platform#python#restful#restful-api#system#terminal#web
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy glances on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name glances --restart always nicolargo/glances:latest-full
Configured Services & Ports
โš™๏ธ glances
image: nicolargo/glances:latest-full
docker-compose.yml
yaml (docker-compose.yml)
services:
  glances:
    # See all images tags here: https://hub.docker.com/r/nicolargo/glances/tags
    image: nicolargo/glances:latest-full
    restart: always

    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:61208/api/4/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

    pid: "host"
    network_mode: "host"

    read_only: true
    privileged: false
    # Uncomment next line for SATA or NVME smartctl monitoring
    # cap_add:
      # Uncomment next line for SATA smartctl monitoring
      # - SYS_RAWIO
      # Uncomment next line for NVME smartctl monitoring
      # - SYS_ADMIN
    # devices:
    #   - "/dev/nvme0"

    volumes:
      - "/:/rootfs:ro"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      # Uncomment for qemu/libvirt/kvm support with modular libvirt daemons
      # - "/var/run/libvirt/virtqemud-sock:/var/run/libvirt/libvirt-sock:ro"
      # OR monolithic libvirt daemon
      # - "/var/run/libvirt/libvirt-sock:/var/run/libvirt/libvirt-sock:ro"
      - "/run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro"
      - "./glances.conf:/glances/conf/glances.conf"
      # Uncomment for proper distro information in upper panel.
#     # Works only for distros that do have this file (most of distros do).
#      - "/etc/os-release:/etc/os-release:ro"

    tmpfs:
      - /tmp

    environment:
      - GLANCES_OPT=-C /glances/conf/glances.conf -w --enable-mcp --enable-plugin smart
      # Please set to your local timezone (or use local ${TZ} environment variable if set on your host)
      - TZ=Europe/Paris
      - PYTHONPYCACHEPREFIX=/tmp/py_caches

#     # Uncomment for GPU compatibility (Nvidia) inside the container
#     deploy:
#       resources:
#         reservations:
#           devices:
#             - driver: nvidia
#               count: 1
#               capabilities: [gpu]

    # Uncomment to protect Glances WebUI by a login/password (add --password to GLANCES_OPT)
    # secrets:
    #   - source: glances_password
    #     target: /root/.config/glances/.pwd

# secrets:
#   glances_password:
#     file: ./secrets/glances_password

File: docker-files/README.md

Dockerfiles

bash
make docker

Then test the image with:

bash
make run-docker-alpine-dev

File: docs/api/mcp.rst

.. _api_mcp:

MCP (Model Context Protocol) server

Glances can expose its system monitoring data through a
Model Context Protocol <https://modelcontextprotocol.io>_ (MCP) server,
allowing AI assistants (Claude, Cursor, VS Code Copilot, โ€ฆ) to query
real-time metrics and generate structured analyses directly from their chat
interface.

The MCP server is mounted alongside the standard RESTful API when the web
server is started with the --enable-mcp flag. It uses Server-Sent
Events
(SSE) as its transport layer, which means any MCP-compatible client
that supports SSE can connect to it.

Requirements

The mcp Python package must be installed:

.. code-block:: bash

text
pip install 'glances[mcp]'

Start the MCP server

Add --enable-mcp to any Glances web-server command:

.. code-block:: bash

text
glances -w --enable-mcp

The MCP server is then reachable at http://localhost:61208/mcp.

The SSE endpoint used by MCP clients is:

.. code-block:: text

text
http://localhost:61208/mcp/sse

To change the mount path (default: /mcp):

.. code-block:: bash

text
glances -w --enable-mcp --mcp-path /monitoring/mcp

Authentication

The MCP endpoint inherits the authentication policy of the web server.
When Glances is started with --password, every MCP request must carry
valid credentials โ€” either HTTP Basic Auth or a JWT Bearer token
(see :ref:api_restful for how to obtain a JWT token).

When no password is configured the MCP endpoint is open.

Resources

MCP resources are read-only data sources that a client can list and read.

Static resources

text
============================================ ================================================
URI                                          Description
============================================ ================================================
``glances://plugins``                        JSON list of all active plugin names
``glances://stats``                          JSON object of all plugins' current statistics
``glances://limits``                         JSON object of alert thresholds for all plugins
============================================ ================================================

Resource templates (parameterised)

============================================== =====================================================
URI template Description
============================================== =====================================================
glances://stats/{plugin} Current statistics for one plugin
glances://stats/{plugin}/history Historical time-series for one plugin
glances://limits/{plugin} Alert thresholds for one plugin
============================================== =====================================================

Replace {plugin} with any name returned by glances://plugins
(e.g. cpu, mem, network, processlist, โ€ฆ).

Prompts

MCP prompts are pre-built analysis templates that embed live Glances data
into a system prompt ready to be sent to an LLM.

+-----------------------------+-----------------------------------------------------+-------------------+
| Prompt name | Description | Parameters |
+=============================+=====================================================+===================+
| system_health_summary | Overall health report: CPU, memory, swap, | (none) |
| | load, filesystems, network | |
+-----------------------------+-----------------------------------------------------+-------------------+
| alert_analysis | Analysis of active alerts with remediation steps | level |
| | | (warning / |
| | | critical / |
| | | all) |
+-----------------------------+-----------------------------------------------------+-------------------+
| top_processes_report | Report on the most CPU-intensive processes | nb |
| | | (integer, |
| | | default 10) |
+-----------------------------+-----------------------------------------------------+-------------------+
| storage_health | Disk usage and I/O statistics analysis | (none) |
+-----------------------------+-----------------------------------------------------+-------------------+

Connect an MCP client

Claude Desktop

text
Configure Glances MCP from Claude command line:

.. code-block:: json

    claude mcp add --transport sse glances http://localhost:61208/mcp/sse

Or add the following entry to your ``claude_desktop_config.json``
(``~/Library/Application Support/Claude/claude_desktop_config.json`` on macOS,
``%APPDATA%\Claude\claude_desktop_config.json`` on Windows):

.. code-block:: json

    {
      "mcpServers": {
        "glances": {
          "url": "http://localhost:61208/mcp/sse"
        }
      }
    }

For a password-protected server, use the ``headers`` field:

.. code-block:: json

    {
      "mcpServers": {
        "glances": {
          "url": "http://localhost:61208/mcp/sse",
          "headers": {
            "Authorization": "Basic "
          }
        }
      }
    }

Python MCP client (programmatic access)

.. code-block:: python

text
import asyncio
from mcp.client.sse import sse_client
from mcp import ClientSession

async def main():
    async with sse_client("http://localhost:61208/mcp/sse") as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List available resources
            resources = await session.list_resources()
            print([str(r.uri) for r in resources.resources])

            # Read CPU stats
            from pydantic import AnyUrl
            result = await session.read_resource(AnyUrl("glances://stats/cpu"))
            print(result.contents[0].text)

            # Run a health-summary prompt
            prompt = await session.get_prompt("system_health_summary")
            print(prompt.messages[0].content.text[:200])

asyncio.run(main())

.. seealso::

:ref:api_restful โ€” RESTful/JSON API documentation

:ref:cmds โ€” full command-line reference


File: docs/api/python.rst

.. _api:

Python API documentation

This documentation describes the Glances Python API.

Note: This API is only available in Glances 4.4.0 or higher.

TL;DR

You can access the Glances API by importing the glances.api module and creating an
instance of the GlancesAPI class. This instance provides access to all Glances plugins
and their fields. For example, to access the CPU plugin and its total field, you can
use the following code:

.. code-block:: python

text
>>> from glances import api
>>> gl = api.GlancesAPI()
>>> gl.cpu
{'cpucore': 16,
 'ctx_switches': 43534099,
 'guest': 0.0,
 'idle': 57.9,
 'interrupts': 23606364,
 'iowait': 35.5,
 'irq': 0.0,
 'nice': 0.0,
 'soft_interrupts': 11191044,
 'steal': 0.0,
 'syscalls': 0,
 'system': 4.6,
 'total': 7.2,
 'user': 1.9}
>>> gl.cpu.get("total")
7.2
>>> gl.mem.get("used")
10322544704
>>> gl.auto_unit(gl.mem.get("used"))
9.61G

If the stats return a list of items (like network interfaces or processes), you can
access them by their name:

.. code-block:: python

text
>>> gl.network.keys()
['wlp0s20f3']
>>> gl.network["wlp0s20f3"]
{'alias': None,
 'bytes_all': 192,
 'bytes_all_gauge': 1466811879,
 'bytes_all_rate_per_sec': 948.0,
 'bytes_recv': 86,
 'bytes_recv_gauge': 1366452723,
 'bytes_recv_rate_per_sec': 424.0,
 'bytes_sent': 106,
 'bytes_sent_gauge': 100359156,
 'bytes_sent_rate_per_sec': 523.0,
 'interface_name': 'wlp0s20f3',
 'key': 'interface_name',
 'speed': 0,
 'time_since_update': 0.2023918628692627}

Init Glances Python API

Init the Glances API:

.. code-block:: python

text
>>> from glances import api
>>> gl = api.GlancesAPI()

Get Glances plugins list

Get the plugins list:

.. code-block:: python

text
>>> gl.plugins()
['alert', 'ports', 'diskio', 'containers', 'processcount', 'programlist', 'gpu', 'percpu', 'system', 'network', 'cpu', 'amps', 'processlist', 'load', 'sensors', 'uptime', 'now', 'fs', 'wifi', 'ip', 'help', 'version', 'psutilversion', 'core', 'mem', 'folders', 'quicklook', 'memswap']

Glances alert

Alert stats:

.. code-block:: python

text
>>> type(gl.alert)
<class 'glances.plugins.alert.AlertPlugin'>
>>> gl.alert
[]

Alert fields description:

  • begin: Begin timestamp of the event
  • end: End timestamp of the event (or -1 if ongoing)
  • state: State of the event (WARNING|CRITICAL)
  • type: Type of the event (CPU|LOAD|MEM)
  • max: Maximum value during the event period
  • avg: Average value during the event period
  • min: Minimum value during the event period
  • sum: Sum of the values during the event period
  • count: Number of values during the event period
  • top: Top 3 processes name during the event period
  • desc: Description of the event
  • sort: Sort key of the top processes
  • global_msg: Global alert message

Alert limits:

.. code-block:: python

text
>>> gl.alert.limits
{'alert_disable': ['False'], 'history_size': 1200.0}

Glances ports

Ports stats:

.. code-block:: python

text
>>> type(gl.ports)
<class 'glances.plugins.ports.PortsPlugin'>
>>> gl.ports
[{'description': 'DefaultGateway',
  'host': '192.168.1.1',
  'indice': 'port_0',
  'port': 0,
  'refresh': 30,
  'rtt_warning': None,
  'status': 0.005254,
  'timeout': 3}]

Ports fields description:

  • host: Measurement is be done on this host (or IP address)
  • port: Measurement is be done on this port (0 for ICMP)
  • description: Human readable description for the host/port
  • refresh: Refresh time (in seconds) for this host/port
  • timeout: Timeout (in seconds) for the measurement
  • status: Measurement result (in seconds)
  • rtt_warning: Warning threshold (in seconds) for the measurement
  • indice: Unique indice for the host/port

Ports limits:

.. code-block:: python

text
>>> gl.ports.limits
{'history_size': 1200.0,
 'ports_disable': ['False'],
 'ports_port_default_gateway': ['True'],
 'ports_refresh': 30.0,
 'ports_timeout': 3.0}

Glances diskio

Diskio stats:

.. code-block:: python

text
>>> type(gl.diskio)
<class 'glances.plugins.diskio.DiskioPlugin'>
>>> gl.diskio
Return a dict of dict with key=<disk_name>
>>> gl.diskio.keys()
['nvme0n1', 'nvme0n1p1', 'nvme0n1p2', 'nvme0n1p3', 'dm-0', 'dm-1']
>>> gl.diskio.get("nvme0n1")
{'disk_name': 'nvme0n1',
 'key': 'disk_name',
 'read_bytes': 9630865920,
 'read_count': 550371,
 'read_latency': 0,
 'read_time': 62457,
 'write_bytes': 12931978240,
 'write_count': 739071,
 'write_latency': 0,
 'write_time': 605074}

Diskio fields description:

  • disk_name: Disk name.
  • read_count: Number of reads.
  • write_count: Number of writes.
  • read_bytes: Number of bytes read.
  • write_bytes: Number of bytes written.
  • read_time: Time spent reading.
  • write_time: Time spent writing.
  • read_latency: Mean time spent reading per operation.
  • write_latency: Mean time spent writing per operation.

Diskio limits:

.. code-block:: python

text
>>> gl.diskio.limits
{'diskio_disable': ['False'],
 'diskio_hide': ['loop.*', '/dev/loop.*'],
 'diskio_hide_zero': ['False'],
 'diskio_rx_latency_careful': 10.0,
 'diskio_rx_latency_critical': 50.0,
 'diskio_rx_latency_warning': 20.0,
 'diskio_tx_latency_careful': 10.0,
 'diskio_tx_latency_critical': 50.0,
 'diskio_tx_latency_warning': 20.0,
 'history_size': 1200.0}

Glances containers

Containers stats:

.. code-block:: python

text
>>> type(gl.containers)
<class 'glances.plugins.containers.ContainersPlugin'>
>>> gl.containers
[]

Containers fields description:

  • name: Container name
  • id: Container ID
  • image: Container image
  • status: Container status
  • created: Container creation date
  • command: Container command
  • cpu_percent: Container CPU consumption
  • cpu_limit: Container CPU limit
  • memory_inactive_file: Container memory inactive file
  • memory_limit: Container memory limit
  • memory_usage: Container memory usage
  • io_rx: Container IO bytes read rate
  • io_wx: Container IO bytes write rate
  • network_rx: Container network RX bitrate
  • network_tx: Container network TX bitrate
  • ports: Container ports
  • uptime: Container uptime
  • engine: Container engine (Docker, Podman, and LXD are currently supported)
  • pod_name: Pod name (only with Podman)
  • pod_id: Pod ID (only with Podman)

Containers limits:

.. code-block:: python

text
>>> gl.containers.limits
{'containers_all': ['False'],
 'containers_disable': ['False'],
 'containers_disable_stats': ['command'],
 'containers_max_name_size': 20.0,
 'history_size': 1200.0}

Glances processcount

Processcount stats:

.. code-block:: python

text
>>> type(gl.processcount)
<class 'glances.plugins.processcount.ProcesscountPlugin'>
>>> gl.processcount
{'pid_max': 0, 'running': 1, 'sleeping': 421, 'thread': 2139, 'total': 565}
>>> gl.processcount.keys()
['total', 'running', 'sleeping', 'thread', 'pid_max']
>>> gl.processcount.get("total")
565

Processcount fields description:

  • total: Total number of processes
  • running: Total number of running processes
  • sleeping: Total number of sleeping processes
  • thread: Total number of threads
  • pid_max: Maximum number of processes

Processcount limits:

.. code-block:: python

text
>>> gl.processcount.limits
{'history_size': 1200.0, 'processcount_disable': ['False']}

Glances gpu

Gpu stats:

.. code-block:: python

text
>>> type(gl.gpu)
<class 'glances.plugins.gpu.GpuPlugin'>
>>> gl.gpu
Return a dict of dict with key=<gpu_id>
>>> gl.gpu.keys()
['intel0', 'intel1']
>>> gl.gpu.get("intel0")
{'fan_speed': None,
 'gpu_id': 'intel0',
 'key': 'gpu_id',
 'mem': None,
 'name': 'UHD Graphics',
 'proc': 0,
 'temperature': None}

Gpu fields description:

  • gpu_id: GPU identification
  • name: GPU name
  • mem: Memory consumption
  • proc: GPU processor consumption
  • temperature: GPU temperature
  • fan_speed: GPU fan speed

Gpu limits:

.. code-block:: python

text
>>> gl.gpu.limits
{'gpu_disable': ['False'],
 'gpu_mem_careful': 50.0,
 'gpu_mem_critical': 90.0,
 'gpu_mem_warning': 70.0,
 'gpu_proc_careful': 50.0,
 'gpu_proc_critical': 90.0,
 'gpu_proc_warning': 70.0,
 'gpu_temperature_careful': 60.0,
 'gpu_temperature_critical': 80.0,
 'gpu_temperature_warning': 70.0,
 'history_size': 1200.0}

Glances percpu

Percpu stats:

.. code-block:: python

text
>>> type(gl.percpu)
<class 'glances.plugins.percpu.PercpuPlugin'>
>>> gl.percpu
Return a dict of dict with key=<cpu_number>
>>> gl.percpu.keys()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> gl.percpu.get("0")
{'cpu_number': 0,
 'dpc': None,
 'guest': 0.0,
 'guest_nice': 0.0,
 'idle': 23.0,
 'interrupt': None,
 'iowait': 0.0,
 'irq': 0.0,
 'key': 'cpu_number',
 'nice': 0.0,
 'softirq': 0.0,
 'steal': 0.0,
 'system': 8.0,
 'total': 77.0,
 'user': 0.0}

Percpu fields description:

  • cpu_number: CPU number
  • total: Sum of CPU percentages (except idle) for current CPU number.
  • system: Percent time spent in kernel space. System CPU time is the time spent running code in the Operating System kernel.
  • user: CPU percent time spent in user space. User CPU time is the time spent on the processor running your program's code (or code in libraries).
  • iowait: (Linux): percent time spent by the CPU waiting for I/O operations to complete.
  • idle: percent of CPU used by any program. Every program or task that runs on a computer system occupies a certain amount of processing time on the CPU. If the CPU has completed all tasks it is idle.
  • irq: (Linux and BSD): percent time spent servicing/handling hardware/software interrupts. Time servicing interrupts (hardware + software).
  • nice: (Unix): percent time occupied by user level processes with a positive nice value. The time the CPU has spent running users' processes that have been niced.
  • steal: (Linux): percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.
  • guest: (Linux): percent of time spent running a virtual CPU for guest operating systems under the control of the Linux kernel.
  • guest_nice: (Linux): percent of time spent running a niced guest (virtual CPU).
  • softirq: (Linux): percent of time spent handling software interrupts.
  • dpc: (Windows): percent of time spent handling deferred procedure calls.
  • interrupt: (Windows): percent of time spent handling software interrupts.

Percpu limits:

.. code-block:: python

text
>>> gl.percpu.limits
{'history_size': 1200.0,
 'percpu_disable': ['False'],
 'percpu_iowait_careful': 50.0,
 'percpu_iowait_critical': 90.0,
 'percpu_iowait_warning': 70.0,
 'percpu_max_cpu_display': 4.0,
 'percpu_system_careful': 50.0,
 'percpu_system_critical': 90.0,
 'percpu_system_warning': 70.0,
 'percpu_user_careful': 50.0,
 'percpu_user_critical': 90.0,
 'percpu_user_warning': 70.0}

Glances system

System stats:

.. code-block:: python

text
>>> type(gl.system)
<class 'glances.plugins.system.SystemPlugin'>
>>> gl.system
{'hostname': 'nicolargo-xps15',
 'hr_name': 'Ubuntu 24.04 64bit / Linux 7.0.0-28-generic',
 'linux_distro': 'Ubuntu 24.04',
 'os_name': 'Linux',
 'os_version': '7.0.0-28-generic',
 'platform': '64bit'}
>>> gl.system.keys()
['os_name', 'hostname', 'platform', 'os_version', 'linux_distro', 'hr_name']
>>> gl.system.get("os_name")
'Linux'

System fields description:

  • os_name: Operating system name
  • hostname: Hostname
  • platform: Platform (32 or 64 bits)
  • linux_distro: Linux distribution
  • os_version: Operating system version
  • hr_name: Human readable operating system name

System limits:

.. code-block:: python

text
>>> gl.system.limits
{'history_size': 1200.0, 'system_disable': ['False'], 'system_refresh': 60}

Glances network

Network stats:

.. code-block:: python

text
>>> type(gl.network)
<class 'glances.plugins.network.NetworkPlugin'>
>>> gl.network
Return a dict of dict with key=
>>> gl.network.keys()
['wlp0s20f3']
>>> gl.network.get("wlp0s20f3")
{'alias': None,
 'bytes_all': 0,
 'bytes_all_gauge': 1466811879,
 'bytes_all_rate_per_sec': 0.0,
 'bytes_recv': 0,
 'bytes_recv_gauge': 1366452723,
 'bytes_recv_rate_per_sec': 0.0,
 'bytes_sent': 0,
 'bytes_sent_gauge': 100359156,
 'bytes_sent_rate_per_sec': 0.0,
 'interface_name': 'wlp0s20f3',
 'key': 'interface_name',
 'speed': 0,
 'time_since_update': 0.004337787628173828}

Network fields description:

  • interface_name: Interface name.
  • alias: Interface alias name (optional).
  • bytes_recv: Number of bytes received.
  • bytes_sent: Number of bytes sent.
  • bytes_all: Number of bytes received and sent.
  • speed: Maximum interface speed (in bit per second). Can return 0 on some operating-system.
  • is_up: Is the interface up ?

Network limits:

.. code-block:: python

text
>>> gl.network.limits
{'history_size': 1200.0,
 'network_disable': ['False'],
 'network_hide': ['docker.*', 'lo'],
 'network_hide_no_ip': ['True'],
 'network_hide_no_up': ['True'],
 'network_hide_zero': ['False'],
 'network_rx_careful': 70.0,
 'network_rx_critical': 90.0,
 'network_rx_warning': 80.0,
 'network_tx_careful': 70.0,
 'network_tx_critical': 90.0,
 'network_tx_warning': 80.0}

Glances cpu

Cpu stats:

.. code-block:: python

text
>>> type(gl.cpu)
<class 'glances.plugins.cpu.CpuPlugin'>
>>> gl.cpu
{'cpucore': 16,
 'ctx_switches': 43534099,
 'guest': 0.0,
 'idle': 57.9,
 'interrupts': 23606364,
 'iowait': 35.5,
 'irq': 0.0,
 'nice': 0.0,
 'soft_interrupts': 11191044,
 'steal': 0.0,
 'syscalls': 0,
 'system': 4.6,
 'total': 7.2,
 'user': 1.9}
>>> gl.cpu.keys()
['total', 'user', 'nice', 'system', 'idle', 'iowait', 'irq', 'steal', 'guest', 'ctx_switches', 'interrupts', 'soft_interrupts', 'syscalls', 'cpucore']
>>> gl.cpu.get("total")
7.2

Cpu fields description:

  • total: Sum of all CPU percentages (except idle).
  • system: Percent time spent in kernel space. System CPU time is the time spent running code in the Operating System kernel.
  • user: CPU percent time spent in user space. User CPU time is the time spent on the processor running your program's code (or code in libraries).
  • iowait: (Linux): percent time spent by the CPU waiting for I/O operations to complete.
  • dpc: (Windows): time spent servicing deferred procedure calls (DPCs)
  • idle: percent of CPU used by any program. Every program or task that runs on a computer system occupies a certain amount of processing time on the CPU. If the CPU has completed all tasks it is idle.
  • irq: (Linux and BSD): percent time spent servicing/handling hardware/software interrupts. Time servicing interrupts (hardware + software).
  • nice: (Unix): percent time occupied by user level processes with a positive nice value. The time the CPU has spent running users' processes that have been niced.
  • steal: (Linux): percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.
  • guest: (Linux): time spent running a virtual CPU for guest operating systems under the control of the Linux kernel.
  • ctx_switches: number of context switches (voluntary + involuntary) per second. A context switch is a procedure that a computer's CPU (central processing unit) follows to change from one task (or process) to another while ensuring that the tasks do not conflict.
  • interrupts: number of interrupts per second.
  • soft_interrupts: number of software interrupts per second. Always set to 0 on Windows and SunOS.
  • syscalls: number of system calls per second. Always 0 on Linux OS.
  • cpucore: Total number of CPU core.
  • time_since_update: Number of seconds since last update.
  • total_min: Minimum total observed since Glances startup.
  • total_max: Maximum total observed since Glances startup.
  • total_mean: Mean (average) total computed from the history.

Cpu limits:

.. code-block:: python

text
>>> gl.cpu.limits
{'cpu_ctx_switches_careful': 640000.0,
 'cpu_ctx_switches_critical': 800000.0,
 'cpu_ctx_switches_warning': 720000.0,
 'cpu_disable': ['False'],
 'cpu_iowait_careful': 50.0,
 'cpu_iowait_critical': 90.0,
 'cpu_iowait_warning': 70.0,
 'cpu_steal_careful': 50.0,
 'cpu_steal_critical': 90.0,
 'cpu_steal_warning': 70.0,
 'cpu_system_careful': 50.0,
 'cpu_system_critical': 90.0,
 'cpu_system_log': ['False'],
 'cpu_system_warning': 70.0,
 'cpu_total_careful': 65.0,
 'cpu_total_critical': 85.0,
 'cpu_total_log': ['True'],
 'cpu_total_warning': 75.0,
 'cpu_user_careful': 50.0,
 'cpu_user_critical': 90.0,
 'cpu_user_log': ['False'],
 'cpu_user_warning': 70.0,
 'history_size': 1200.0}

Glances amps

Amps stats:

.. code-block:: python

text
>>> type(gl.amps)
<class 'glances.plugins.amps.AmpsPlugin'>
>>> gl.amps
Return a dict of dict with key=<name>
>>> gl.amps.keys()
['Dropbox', 'Python', 'Conntrack', 'Nginx', 'Systemd', 'SystemV']
>>> gl.amps.get("Dropbox")
{'count': 0,
 'countmax': None,
 'countmin': 1.0,
 'key': 'name',
 'name': 'Dropbox',
 'refresh': 3.0,
 'regex': True,
 'result': None,
 'timer': 0.230393648147583}

Amps fields description:

  • name: AMP name.
  • result: AMP result (a string).
  • refresh: AMP refresh interval.
  • timer: Time until next refresh.
  • count: Number of matching processes.
  • countmin: Minimum number of matching processes.
  • countmax: Maximum number of matching processes.

Amps limits:

.. code-block:: python

text
>>> gl.amps.limits
{'amps_disable': ['False'], 'history_size': 1200.0}

Glances processlist

Processlist stats:

.. code-block:: python

text
>>> type(gl.processlist)
<class 'glances.plugins.processlist.ProcesslistPlugin'>
>>> gl.processlist
Return a dict of dict with key=
>>> gl.processlist.keys()
[82816, 129, 5879, 16620, 31537, 31526, 15, 29879, 24387, 20546, 31625, 42194, 32412, 63717, 20793, 21145, 20787, 20801, 58867, 6275, 20736, 4137, 31368, 81577, 12546, 31595, 31388, 32323, 31596, 29696, 61495, 6274, 31709, 61496, 32003, 31426, 20745, 32072, 31480, 32464, 79279, 31398, 77923, 81688, 6120, 6008, 55282, 6304, 31371, 6852, 3018, 31370, 20718, 3418, 21634, 6557, 82813, 6562, 6237, 20715, 6380, 61524, 32286, 61544, 6193, 6021, 9716, 6609, 6644, 8644, 3411, 5572, 31420, 6000, 6044, 6054, 43812, 32284, 6999, 765, 3113, 4136, 6092, 6028, 6032, 3032, 32288, 5813, 1, 3001, 5570, 5565, 5688, 3451, 3033, 3034, 6543, 6245, 5549, 2837, 6023, 6070, 4143, 6228, 3388, 3218, 6030, 6056, 3007, 5518, 5575, 3115, 4093, 4144, 3374, 8219, 6521, 6266, 6087, 4215, 9798, 3029, 4094, 9780, 6131, 806, 6031, 3021, 6346, 3235, 3004, 5800, 6072, 2838, 3030, 2997, 5861, 6426, 6273, 6335, 32766, 5625, 2836, 5810, 5981, 6192, 6202, 6321, 6057, 6025, 3026, 5587, 6358, 2996, 5776, 56214, 54561, 5629, 5670, 6064, 6009, 3128, 3012, 28204, 3048, 9820, 5779, 6930, 5566, 5877, 2995, 31960, 32212, 2835, 31385, 5553, 3000, 4317, 2847, 3023, 9825, 82809, 4148, 20619, 4164, 4172, 4156, 5636, 52832, 4162, 3612, 82812, 32763, 54559, 56203, 3400, 3401, 2845, 3098, 4274, 3613, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 175, 340, 342, 344, 345, 346, 347, 362, 463, 486, 487, 488, 649, 650, 651, 652, 661, 687, 689, 691, 693, 696, 699, 700, 789, 798, 800, 804, 829, 835, 843, 862, 867, 898, 901, 908, 995, 1004, 1005, 1182, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1239, 1240, 1243, 1244, 1298, 1319, 1320, 1323, 1326, 1333, 1587, 1591, 1661, 2107, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2173, 2175, 2176, 2177, 2178, 2179, 2180, 2182, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2280, 2281, 2282, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2305, 2308, 2309, 3389, 3390, 3391, 3393, 4186, 4259, 4260, 4261, 4262, 4264, 4265, 4266, 4267, 4413, 4480, 5484, 9794, 12757, 13926, 15919, 18041, 28453, 28454, 29401, 29878, 35787, 36010, 36012, 36460, 39855, 42155, 44272, 50548, 51622, 52410, 54481, 54870, 54971, 55748, 59774, 59776, 60497, 60645, 62601, 62719, 69447, 70172, 71963, 73822, 74039, 74051, 74217, 74230, 74323, 74538, 74684, 75257, 75591, 75765, 77392, 77640, 78215, 78265, 79359, 82518, 82519]
>>> gl.processlist.get("82816")
{'cmdline': ['/home/nicolargo/dev/glances/.venv/bin/python3',
             '-m',
             'glances',
             '-C',
             'conf/glances.conf',
             '--api-doc'],
 'cpu_percent': 75.7,
 'cpu_times': {'children_system': 0.01,
               'children_user': 0.0,
               'iowait': 0.0,
               'system': 0.41,
               'user': 0.4},
 'gids': {'effective': 1000, 'real': 1000, 'saved': 1000},
 'io_counters': [1650688, 200704, 1036288, 200704, 1, 0, 32768, 0, 32768, 1],
 'key': 'pid',
 'memory_info': {'data': 140513280,
                 'dirty': 0,
                 'lib': 0,
                 'rss': 98471936,
                 'shared': 27254784,
                 'text': 31211520,
                 'vms': 696369152},
 'memory_percent': 0.5997856928122267,
 'name': 'python3',
 'nice': 0,
 'num_threads': 4,
 'pid': 82816,
 'status': 'R',
 'time_since_update': 0.5077733993530273,
 'username': 'nicolargo'}

Processlist fields description:

  • pid: Process identifier (ID)
  • name: Process name
  • cmdline: Command line with arguments
  • username: Process owner
  • num_threads: Number of threads
  • cpu_percent: Process CPU consumption (returned value can be > 100.0 in case of a process running multiple threads on different CPU cores)
  • memory_percent: Process memory consumption
  • memory_info: Process memory information (dict with rss, vms, shared, text, lib, data, dirty keys)
  • status: Process status
  • nice: Process nice value
  • cpu_times: Process CPU times (dict with user, system, iowait keys)
  • gids: Process group IDs (dict with real, effective, saved keys)
  • io_counters: Process IO counters (list with read_count, write_count, read_bytes, write_bytes, io_tag keys)
  • cpu_num: CPU core number where the process is currently executing (0-based indexing)

Processlist limits:

.. code-block:: python

text
>>> gl.processlist.limits
{'history_size': 1200.0,
 'processlist_cpu_careful': 50.0,
 'processlist_cpu_critical': 90.0,
 'processlist_cpu_warning': 70.0,
 'processlist_disable': ['False'],
 'processlist_disable_stats': ['cpu_num'],
 'processlist_mem_careful': 50.0,
 'processlist_mem_critical': 90.0,
 'processlist_mem_warning': 70.0,
 'processlist_nice_warning': ['-20',
                              '-19',
                              '-18',
                              '-17',
                              '-16',
                              '-15',
                              '-14',
                              '-13',
                              '-12',
                              '-11',
                              '-10',
                              '-9',
                              '-8',
                              '-7',
                              '-6',
                              '-5',
                              '-4',
                              '-3',
                              '-2',
                              '-1',
                              '1',
                              '2',
                              '3',
                              '4',
                              '5',
                              '6',
                              '7',
                              '8',
                              '9',
                              '10',
                              '11',
                              '12',
                              '13',
                              '14',
                              '15',
                              '16',
                              '17',
                              '18',
                              '19'],
 'processlist_status_critical': ['Z', 'D'],
 'processlist_status_ok': ['R', 'W', 'P', 'I']}

Glances load

Load stats:

.. code-block:: python

text
>>> type(gl.load)
<class 'glances.plugins.load.LoadPlugin'>
>>> gl.load
{'cpucore': 16,
 'min1': 0.96240234375,
 'min15': 1.009765625,
 'min5': 0.9287109375}
>>> gl.load.keys()
['min1', 'min5', 'min15', 'cpucore']
>>> gl.load.get("min1")
0.96240234375

Load fields description:

  • min1: Average sum of the number of processes waiting in the run-queue plus the number currently executing over 1 minute.
  • min5: Average sum of the number of processes waiting in the run-queue plus the number currently executing over 5 minutes.
  • min15: Average sum of the number of processes waiting in the run-queue plus the number currently executing over 15 minutes.
  • cpucore: Total number of CPU core.
  • min1_min: Minimum min1 observed since Glances startup.
  • min1_max: Maximum min1 observed since Glances startup.
  • min1_mean: Mean (average) min1 computed from the history.

Load limits:

.. code-block:: python

text
>>> gl.load.limits
{'history_size': 1200.0,
 'load_careful': 0.7,
 'load_critical': 5.0,
 'load_disable': ['False'],
 'load_warning': 1.0}

Glances sensors

Sensors stats:

.. code-block:: python

text
>>> type(gl.sensors)
<class 'glances.plugins.sensors.SensorsPlugin'>
>>> gl.sensors
Return a dict of dict with key=<label>
>>> gl.sensors.keys()
['Ambient', 'Ambient 3', 'Ambient 5', 'Ambient 6', 'CPU', 'Composite', 'Core 0', 'Core 4', 'Core 8', 'Core 12', 'Core 16', 'Core 20', 'Core 28', 'Core 29', 'Core 30', 'Core 31', 'HDD', 'Package id 0', 'SODIMM', 'Sensor 1', 'Sensor 2', 'dell_smm 0', 'dell_smm 1', 'dell_smm 2', 'dell_smm 3', 'dell_smm 4', 'dell_smm 5', 'dell_smm 6', 'dell_smm 7', 'dell_smm 8', 'dell_smm 9', 'i915 0', 'iwlwifi_1 0', 'temp', 'CPU Fan', 'Video Fan', 'BAT BAT0']
>>> gl.sensors.get("Ambient")
{'critical': None,
 'key': 'label',
 'label': 'Ambient',
 'type': 'temperature_core',
 'unit': 'C',
 'value': 43,
 'warning': 0}

Sensors fields description:

  • label: Sensor label
  • unit: Sensor unit
  • value: Sensor value
  • warning: System warning threshold (regardless of the user configuration in the glances.conf file)
  • critical: System critical threshold (regardless of the user configuration in the glances.conf file)
  • type: Sensor type (one of battery, temperature_core, fan_speed)

Sensors limits:

.. code-block:: python

text
>>> gl.sensors.limits
{'history_size': 1200.0,
 'sensors_battery_careful': 70.0,
 'sensors_battery_critical': 90.0,
 'sensors_battery_warning': 80.0,
 'sensors_disable': ['False'],
 'sensors_hide': ['unknown.*'],
 'sensors_refresh': 10.0,
 'sensors_temperature_core_careful': 45.0,
 'sensors_temperature_core_critical': 80.0,
 'sensors_temperature_core_warning': 65.0,
 'sensors_temperature_hdd_careful': 45.0,
 'sensors_temperature_hdd_critical': 60.0,
 'sensors_temperature_hdd_warning': 52.0}

Glances uptime

Uptime stats:

.. code-block:: python

text
>>> type(gl.uptime)
<class 'glances.plugins.uptime.UptimePlugin'>
>>> gl.uptime
'1:26:57'

Uptime limits:

.. code-block:: python

text
>>> gl.uptime.limits
{'history_size': 1200.0}

Glances now

Now stats:

.. code-block:: python

text
>>> type(gl.now)
<class 'glances.plugins.now.NowPlugin'>
>>> gl.now
{'custom': '2026-08-01 10:56:03 CEST', 'iso': '2026-08-01T10:56:03+02:00'}
>>> gl.now.keys()
['iso', 'custom']
>>> gl.now.get("iso")
'2026-08-01T10:56:03+02:00'

Now fields description:

  • custom: Current date in custom format.
  • iso: Current date in ISO 8601 format.

Now limits:

.. code-block:: python

text
>>> gl.now.limits
{'history_size': 1200.0}

Glances fs

Fs stats:

.. code-block:: python

text
>>> type(gl.fs)
<class 'glances.plugins.fs.FsPlugin'>
>>> gl.fs
Return a dict of dict with key=<mnt_point>
>>> gl.fs.keys()
['/', '/zsfpool']
>>> gl.fs.get("/")
{'device_name': '/dev/mapper/ubuntu--vg-ubuntu--lv',
 'free': 488287727616,
 'fs_type': 'ext4',
 'key': 'mnt_point',
 'mnt_point': '/',
 'options': 'rw,relatime',
 'percent': 48.7,
 'size': 1003736440832,
 'used': 464386207744}

Fs fields description:

  • device_name: Device name.
  • fs_type: File system type.
  • mnt_point: Mount point.
  • options: Mount options.
  • size: Total size.
  • used: Used size.
  • free: Free size.
  • percent: File system usage in percent.

Fs limits:

.. code-block:: python

text
>>> gl.fs.limits
{'fs_careful': 50.0,
 'fs_critical': 90.0,
 'fs_disable': ['False'],
 'fs_hide': ['/boot.*', '.*/snap.*'],
 'fs_refresh': 60.0,
 'fs_warning': 70.0,
 'history_size': 1200.0}

Glances wifi

Wifi stats:

.. code-block:: python

text
>>> type(gl.wifi)
<class 'glances.plugins.wifi.WifiPlugin'>
>>> gl.wifi
Return a dict of dict with key=<ssid>
>>> gl.wifi.keys()
['wlp0s20f3']
>>> gl.wifi.get("wlp0s20f3")
{'key': 'ssid',
 'quality_level': -58.0,
 'quality_link': 52.0,
 'ssid': 'wlp0s20f3'}

Wifi limits:

.. code-block:: python

text
>>> gl.wifi.limits
{'history_size': 1200.0,
 'wifi_careful': -65.0,
 'wifi_critical': -85.0,
 'wifi_disable': ['False'],
 'wifi_warning': -75.0}

Glances ip

Ip stats:

.. code-block:: python

text
>>> type(gl.ip)
<class 'glances.plugins.ip.IpPlugin'>
>>> gl.ip
{'address': '192.168.1.26', 'mask': '255.255.255.0', 'mask_cidr': 24}
>>> gl.ip.keys()
['address', 'mask', 'mask_cidr']
>>> gl.ip.get("address")
'192.168.1.26'

Ip fields description:

  • address: Private IP address
  • mask: Private IP mask
  • mask_cidr: Private IP mask in CIDR format
  • gateway: Private IP gateway
  • public_address: Public IP address
  • public_info_human: Public IP information

Ip limits:

.. code-block:: python

text
>>> gl.ip.limits
{'history_size': 1200.0,
 'ip_disable': ['False'],
 'ip_public_api': ['https://ipv4.ipleak.net/json/'],
 'ip_public_disabled': ['True'],
 'ip_public_field': ['ip'],
 'ip_public_refresh_interval': 300.0,
 'ip_public_template': ['{continent_name}/{country_name}/{city_name}'],
 'ip_refresh': 60.0}

Glances version

Version stats:

.. code-block:: python

text
>>> type(gl.version)
<class 'glances.plugins.version.VersionPlugin'>
>>> gl.version
'4.5.6'

Version limits:

.. code-block:: python

text
>>> gl.version.limits
{'history_size': 1200.0}

Glances psutilversion

Psutilversion stats:

.. code-block:: python

text
>>> type(gl.psutilversion)
<class 'glances.plugins.psutilversion.PsutilversionPlugin'>
>>> gl.psutilversion
'7.2.2'

Psutilversion limits:

.. code-block:: python

text
>>> gl.psutilversion.limits
{'history_size': 1200.0}

Glances core

Core stats:

.. code-block:: python

text
>>> type(gl.core)
<class 'glances.plugins.core.CorePlugin'>
>>> gl.core
{'log': 16, 'phys': 10}
>>> gl.core.keys()
['phys', 'log']
>>> gl.core.get("phys")
10

Core fields description:

  • phys: Number of physical cores (hyper thread CPUs are excluded).
  • log: Number of logical CPU cores. A logical CPU is the number of physical cores multiplied by the number of threads that can run on each core.

Core limits:

.. code-block:: python

text
>>> gl.core.limits
{'history_size': 1200.0}

Glances mem

Mem stats:

.. code-block:: python

text
>>> type(gl.mem)
<class 'glances.plugins.mem.MemPlugin'>
>>> gl.mem
{'active': 5314899968,
 'available': 6095308736,
 'buffers': 205410304,
 'cached': 6905879616,
 'free': 245760000,
 'inactive': 8576086016,
 'percent': 62.9,
 'percent_max': 62.9,
 'percent_mean': 62.9,
 'percent_min': 62.9,
 'shared': 1939501056,
 'total': 16417853440,
 'used': 10322544704}
>>> gl.mem.keys()
['total', 'available', 'percent', 'used', 'free', 'active', 'inactive', 'buffers', 'cached', 'shared', 'percent_min', 'percent_max', 'percent_mean']
>>> gl.mem.get("total")
16417853440

Mem fields description:

  • total: Total physical memory available.
  • available: The actual amount of available memory that can be given instantly to processes that request more memory in bytes; this is calculated by summing different memory values depending on the platform (e.g. free + buffers + cached on Linux) and it is supposed to be used to monitor actual memory usage in a cross platform fashion.
  • percent: The percentage usage calculated as (total - available) / total * 100.
  • used: Memory used, calculated differently depending on the platform and designed for informational purposes only.
  • free: Memory not being used at all (zeroed) that is readily available; note that this doesn't reflect the actual memory available (use 'available' instead).
  • active: (UNIX): memory currently in use or very recently used, and so it is in RAM.
  • inactive: (UNIX): memory that is marked as not used.
  • buffers: (Linux, BSD): cache for things like file system metadata.
  • cached: (Linux, BSD): cache for various things (including ZFS cache).
  • wired: (BSD, macOS): memory that is marked to always stay in RAM. It is never moved to disk.
  • shared: (BSD): memory that may be simultaneously accessed by multiple processes.
  • percent_min: Minimum percent observed since Glances startup.
  • percent_max: Maximum percent observed since Glances startup.
  • percent_mean: Mean (average) percent computed from the history.

Mem limits:

.. code-block:: python

text
>>> gl.mem.limits
{'history_size': 1200.0,
 'mem_careful': 50.0,
 'mem_critical': 90.0,
 'mem_disable': ['False'],
 'mem_warning': 70.0}

Glances folders

Folders stats:

.. code-block:: python

text
>>> type(gl.folders)
<class 'glances.plugins.folders.FoldersPlugin'>
>>> gl.folders
[]

Folders fields description:

  • path: Absolute path.
  • size: Folder size in bytes.
  • refresh: Refresh interval in seconds.
  • errno: Return code when retrieving folder size (0 is no error).
  • careful: Careful threshold in MB.
  • warning: Warning threshold in MB.
  • critical: Critical threshold in MB.

Folders limits:

.. code-block:: python

text
>>> gl.folders.limits
{'folders_disable': ['False'], 'folders_refresh': 60.0, 'history_size': 1200.0}

Glances quicklook

Quicklook stats:

.. code-block:: python

text
>>> type(gl.quicklook)
<class 'glances.plugins.quicklook.QuicklookPlugin'>
>>> gl.quicklook
{'cpu': 7.2,
 'cpu_hz': 4475000000.0,
 'cpu_hz_current': 996174812.5000001,
 'cpu_log_core': 16,
 'cpu_name': '13th Gen Intel(R) Core(TM) i7-13620H',
 'cpu_phys_core': 10,
 'gpu_mem': 0,
 'gpu_proc': 0,
 'load': 6.3,
 'mem': 62.9,
 'percpu': [{'cpu_number': 0,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 23.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 8.0,
             'total': 77.0,
             'user': 0.0},
            {'cpu_number': 1,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 34.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 66.0,
             'user': 0.0},
            {'cpu_number': 2,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 32.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 1.0,
             'total': 68.0,
             'user': 0.0},
            {'cpu_number': 3,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 33.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 67.0,
             'user': 0.0},
            {'cpu_number': 4,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 17.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 12.0,
             'total': 83.0,
             'user': 5.0},
            {'cpu_number': 5,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 32.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 1.0,
             'total': 68.0,
             'user': 0.0},
            {'cpu_number': 6,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 0.0,
             'interrupt': None,
             'iowait': 30.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 1.0,
             'total': 100.0,
             'user': 3.0},
            {'cpu_number': 7,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 34.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 66.0,
             'user': 0.0},
            {'cpu_number': 8,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 28.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 1.0,
             'total': 72.0,
             'user': 4.0},
            {'cpu_number': 9,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 0.0,
             'interrupt': None,
             'iowait': 33.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 1.0,
             'total': 100.0,
             'user': 0.0},
            {'cpu_number': 10,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 0.0,
             'interrupt': None,
             'iowait': 33.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 100.0,
             'user': 0.0},
            {'cpu_number': 11,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 34.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 66.0,
             'user': 0.0},
            {'cpu_number': 12,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 33.0,
             'interrupt': None,
             'iowait': 0.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 67.0,
             'user': 1.0},
            {'cpu_number': 13,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 0.0,
             'interrupt': None,
             'iowait': 33.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 100.0,
             'user': 1.0},
            {'cpu_number': 14,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 0.0,
             'interrupt': None,
             'iowait': 32.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 1.0,
             'total': 100.0,
             'user': 1.0},
            {'cpu_number': 15,
             'dpc': None,
             'guest': 0.0,
             'guest_nice': 0.0,
             'idle': 0.0,
             'interrupt': None,
             'iowait': 33.0,
             'irq': 0.0,
             'key': 'cpu_number',
             'nice': 0.0,
             'softirq': 0.0,
             'steal': 0.0,
             'system': 0.0,
             'total': 100.0,
             'user': 1.0}],
 'swap': 23.4}
>>> gl.quicklook.keys()
['cpu_name', 'cpu_hz_current', 'cpu_hz', 'cpu', 'percpu', 'mem', 'swap', 'cpu_log_core', 'cpu_phys_core', 'load', 'gpu_mem', 'gpu_proc']
>>> gl.quicklook.get("cpu_name")
'13th Gen Intel(R) Core(TM) i7-13620H'

Quicklook fields description:

  • cpu: CPU percent usage
  • mem: MEM percent usage
  • swap: SWAP percent usage
  • load: LOAD percent usage
  • cpu_log_core: Number of logical CPU core
  • cpu_phys_core: Number of physical CPU core
  • cpu_name: CPU name
  • cpu_hz_current: CPU current frequency
  • cpu_hz: CPU max frequency
  • gpu_mem: Average GPU Memory consumption
  • gpu_proc: Average GPU Processor consumption

Quicklook limits:

.. code-block:: python

text
>>> gl.quicklook.limits
{'history_size': 1200.0,
 'quicklook_bar_char': ['โ–ช'],
 'quicklook_cpu_careful': 50.0,
 'quicklook_cpu_critical': 90.0,
 'quicklook_cpu_warning': 70.0,
 'quicklook_disable': ['False'],
 'quicklook_gpu_mem_careful': 50.0,
 'quicklook_gpu_mem_critical': 90.0,
 'quicklook_gpu_mem_warning': 70.0,
 'quicklook_gpu_proc_careful': 50.0,
 'quicklook_gpu_proc_critical': 90.0,
 'quicklook_gpu_proc_warning': 70.0,
 'quicklook_list': ['cpu', 'mem', 'load'],
 'quicklook_load_careful': 70.0,
 'quicklook_load_critical': 500.0,
 'quicklook_load_warning': 100.0,
 'quicklook_mem_careful': 50.0,
 'quicklook_mem_critical': 90.0,
 'quicklook_mem_warning': 70.0,
 'quicklook_swap_careful': 50.0,
 'quicklook_swap_critical': 90.0,
 'quicklook_swap_warning': 70.0}

Glances memswap

Memswap stats:

.. code-block:: python

text
>>> type(gl.memswap)
<class 'glances.plugins.memswap.MemswapPlugin'>
>>> gl.memswap
{'free': 3288137728,
 'percent': 23.4,
 'sin': 209350656,
 'sout': 1026351104,
 'time_since_update': 0.45430874824523926,
 'total': 4294963200,
 'used': 1006825472}
>>> gl.memswap.keys()
['total', 'used', 'free', 'percent', 'sin', 'sout', 'time_since_update']
>>> gl.memswap.get("total")
4294963200

Memswap fields description:

  • total: Total swap memory.
  • used: Used swap memory.
  • free: Free swap memory.
  • percent: Used swap memory in percentage.
  • sin: The number of bytes the system has swapped in from disk (cumulative).
  • sout: The number of bytes the system has swapped out from disk (cumulative).
  • time_since_update: Number of seconds since last update.

Memswap limits:

.. code-block:: python

text
>>> gl.memswap.limits
{'history_size': 1200.0,
 'memswap_careful': 50.0,
 'memswap_critical': 90.0,
 'memswap_disable': ['False'],
 'memswap_warning': 70.0}

Use auto_unit to display a human-readable string with the unit

Use auto_unit() function to generate a human-readable string with the unit:

.. code-block:: python

text
>>> gl.mem.get("used")
10322544704

>>> gl.auto_unit(gl.mem.get("used"))
9.61G

Args:

text
number (float or int): The numeric value to be converted.

low_precision (bool, optional): If True, use lower precision for the output. Defaults to False.

min_symbol (str, optional): The minimum unit symbol to use (e.g., 'K' for kilo). Defaults to 'K'.

none_symbol (str, optional): The symbol to display if the number is None. Defaults to '-'.

Returns:

text
str: A human-readable string representation of the number with units.

Use to display stat as a bar

Use bar() function to generate a bar:

.. code-block:: python

text
>>> gl.bar(gl.mem["percent"])
โ– โ– โ– โ– โ– โ– โ– โ– โ– โ– โ– โ–กโ–กโ–กโ–กโ–กโ–กโ–ก

Args:

text
value (float): The percentage value to represent in the bar (typically between 0 and 100).

size (int, optional): The total length of the bar in characters. Defaults to 18.

bar_char (str, optional): The character used to represent the filled portion of the bar. Defaults to 'โ– '.

empty_char (str, optional): The character used to represent the empty portion of the bar. Defaults to 'โ–ก'.

pre_char (str, optional): A string to prepend to the bar. Defaults to ''.

post_char (str, optional): A string to append to the bar. Defaults to ''.

Returns:

text
str: A string representing the progress bar.

Use to display top process list

Use top_process() function to generate a list of top processes sorted by CPU or MEM usage:

.. code-block:: python

text
>>> gl.top_process()
[{'cpu_percent': 6.1, 'nice': 0, 'num_threads': 39, 'memory_info': {'rss': 546607104, 'vms': 6096752640, 'shared': 248934400, 'text': 8192, 'lib': 0, 'data': 551526400, 'dirty': 0}, 'gids': {'real': 1000, 'effective': 1000, 'saved': 1000}, 'name': 'gnome-shell', 'io_counters': [335985664, 153677824, 335985664, 153677824, 1], 'pid': 5879, 'cpu_times': {'user': 241.58, 'system': 131.4, 'children_user': 19.01, 'children_system': 5.72, 'iowait': 0.0}, 'memory_percent': 3.3293457393660346, 'status': 'S', 'key': 'pid', 'time_since_update': 0.5077733993530273, 'cmdline': ['/usr/bin/gnome-shell'], 'username': 'nicolargo'}, {'cpu_percent': 4.1, 'nice': 0, 'num_threads': 27, 'memory_info': {'rss': 245682176, 'vms': 3255783424, 'shared': 113020928, 'text': 11780096, 'lib': 0, 'data': 501460992, 'dirty': 0}, 'gids': {'real': 1000, 'effective': 1000, 'saved': 1000}, 'name': 'ghostty', 'io_counters': [91455488, 188416, 91455488, 188416, 1], 'pid': 16620, 'cpu_times': {'user': 92.08, 'system': 26.62, 'children_user': 3.61, 'children_system': 2.82, 'iowait': 0.0}, 'memory_percent': 1.496432995323413, 'status': 'S', 'key': 'pid', 'time_since_update': 0.5077733993530273, 'cmdline': ['/snap/ghostty/820/bin/ghostty', '--gtk-single-instance=true'], 'username': 'nicolargo'}, {'cpu_percent': 2.0, 'nice': 0, 'num_threads': 26, 'memory_info': {'rss': 429604864, 'vms': 1561270198272, 'shared': 154923008, 'text': 162107392, 'lib': 0, 'data': 1412997120, 'dirty': 0}, 'gids': {'real': 1000, 'effective': 1000, 'saved': 1000}, 'name': 'code', 'io_counters': [39523328, 114688, 39523328, 114688, 1, 1267712, 0, 1267712, 0, 1, 294426624, 2113536, 294426624, 2113536, 1, 184255488, 1961984, 184255488, 1961984, 1, 81283072, 26791936, 81283072, 26791936, 1, 37664768, 59506688, 37664768, 59506688, 1, 24516608, 4096, 24516608, 4096, 1, 15375360, 0, 15375360, 0, 1, 472064, 0, 472064, 0, 1, 6592512, 45056, 6592512, 45056, 1, 368640, 0, 368640, 0, 1, 5734400, 0, 5734400, 0, 1, 1000448, 0, 1000448, 0, 1, 4985856, 1748992, 4985856, 1748992, 1, 3514368, 0, 3514368, 0, 1, 521216, 0, 521216, 0, 1, 644096, 0, 644096, 0, 1], 'pid': 31537, 'cpu_times': {'user': 121.09, 'system': 11.82, 'children_user': 0.0, 'children_system': 0.0, 'iowait': 0.0}, 'memory_percent': 2.616693257556574, 'status': 'S', 'key': 'pid', 'time_since_update': 0.5077733993530273, 'cmdline': ['/snap/code/252/usr/share/code/code', '--type=renderer', '--crashpad-handler-pid=31385', '--enable-crash-reporter=864d4bb7-dd20-4851-830f-29e81dd93517,no_channel', '--user-data-dir=/home/nicolargo/.config/Code', '--standard-schemes=vscode-webview,vscode-file', '--secure-schemes=vscode-webview,vscode-file,vscode-remote-resource,vscode-managed-remote-resource', '--cors-schemes=vscode-webview,vscode-file,vscode-remote-resource,vscode-managed-remote-resource', '--fetch-schemes=vscode-webview,vscode-file,vscode-remote-resource,vscode-managed-remote-resource', '--service-worker-schemes=vscode-webview', '--code-cache-schemes=vscode-webview,vscode-file', '--app-path=/snap/code/252/usr/share/code/resources/app', '--enable-sandbox', '--enable-blink-features=HighlightAPI', '--no-sandbox', '--max-active-webgl-contexts=32', '--ozone-platform=x11', '--disable-gpu-compositing', '--disable-blink-features=FontMatchingCTMigration,StandardizedBrowserZoom,', '--lang=en-US', '--num-raster-threads=4', '--enable-main-frame-before-activation', '--renderer-client-id=5', '--time-ticks-at-unix-epoch=-1785569346785715', '--launch-time-ticks=2499111991', '--shared-files=v8_context_snapshot_data:100', '--field-trial-handle=3,i,15701004025785094717,18098535858584220795,262144', '--enable-features=DocumentPolicyIncludeJSCallStacksInCrashReports,EarlyEstablishGpuChannel,EstablishGpuChannelAsync,GlobalShortcutsPortal,PdfUseShowSaveFilePicker', '--disable-features=CalculateNativeWinOcclusion,DropInputEventsWhilePaintHolding,LocalNetworkAccessChecks,ScreenAIOCREnabled,SpareRendererForSitePerProcess,TraceSiteInstanceGetProcessCreation', '--variations-seed-version', '--pseudonymization-salt-handle=7,i,5062963083377378361,851606893431495686,4', '--trace-process-track-uuid=3190708990997080739', '--vscode-window-config=vscode:060c7c2a-ca77-4dda-9bbf-430901d662ae'], 'username': 'nicolargo'}]

Args:

text
limit (int, optional): The maximum number of top processes to return. Defaults to 3.

sorted_by (str, optional): The primary key to sort processes by (e.g., 'cpu_percent').
                            Defaults to 'cpu_percent'.

sorted_by_secondary (str, optional): The secondary key to sort processes by if primary keys are equal
                                        (e.g., 'memory_percent'). Defaults to 'memory_percent'.

Returns:

text
list: A list of dictionaries representing the top processes, excluding those with 'glances' in their
        command line.

Note:

text
The 'glances' process is excluded from the returned list to avoid self-generated CPU load affecting
the results.

File: docs/api/restful.rst

.. _api_restful:

Restful/JSON API documentation

This documentation describes the Glances API version 4 (Restful/JSON) interface.

An OpenAPI specification file is available at:
https://raw.githubusercontent.com/nicolargo/glances/refs/heads/develop/docs/api/openapi.json

Run the Glances API server

The Glances Restful/API server could be ran using the following command line:

.. code-block:: bash

text
# glances -w --disable-webui

It is also ran automatically when Glances is started in Web server mode (-w).

If you want to enable the Glances Central Browser, use:

.. code-block:: bash

text
# glances -w --browser --disable-webui

API URL

The default root API URL is http://localhost:61208/api/4.

The bind address and port could be changed using the --bind and --port command line options.

It is also possible to define an URL prefix using the url_prefix option from the [outputs] section
of the Glances configuration file.

Note: The url_prefix should always end with a slash (/).

For example:

.. code-block:: ini

text
[outputs]
url_prefix = /glances/

will change the root API URL to http://localhost:61208/glances/api/4 and the Web UI URL to
http://localhost:61208/glances/

API documentation URL

The API documentation is embeded in the server and available at the following URL:
http://localhost:61208/docs#/.

Authentication

Glances API supports both HTTP Basic authentication and JWT (JSON Web Token) Bearer authentication.

To enable authentication, start Glances with the --password option.

To generate a new login/password pair, use the following command:

.. code-block:: bash

text
glances -w --username
> Enter new username: foo
> Enter new password: ********
> Confirm new password: ********
> User 'username' created/updated successfully.

To reuse an existing login/password pair, start Glances with the -u option:

.. code-block:: bash

text
glances -w -u foo

JWT Token Authentication

text
JWT authentication requires the ``python-jose`` library to be installed.

**Step 1: Get a JWT Token**

Request a token by sending your credentials to the token endpoint:

.. code-block:: bash

    curl -X POST http://localhost:61208/api/4/token \
      -H "Content-Type: application/json" \
      -d '{"username": "your_username", "password": "your_password"}'

This will return a response like:

.. code-block:: json

    {
      "access_token": "...",
      "token_type": "bearer",
      "expires_in": 3600
    }

**Step 2: Use the Token**

Use the token in the Authorization header with Bearer authentication:

.. code-block:: bash

    # Store the token in a variable
    TOKEN="your_access_token_here"

    # Access a protected endpoint
    curl -H "Authorization: Bearer $TOKEN" \
      http://localhost:61208/api/4/cpu

**Complete Example:**

.. code-block:: bash

    # Get token and extract access_token
    TOKEN=$(curl -s -X POST http://localhost:61208/api/4/token \
      -H "Content-Type: application/json" \
      -d '{"username": "glances", "password": "mypassword"}' \
      | grep -o '"access_token":"[^"]*"' \
      | cut -d'"' -f4)

    # Use the token to get CPU stats
    curl -H "Authorization: Bearer $TOKEN" \
      http://localhost:61208/api/4/cpu

**Configuration:**

You can configure JWT settings in the Glances configuration file:

.. code-block:: ini

    [outputs]
    # JWT secret key (if not set, a random key will be generated)
    jwt_secret_key = your-secret-key-here
    # JWT token expiration in minutes (default: 60)
    jwt_expire_minutes = 60

**Note:** The token endpoint (``/api/4/token``) does not require authentication.
Protected endpoints support both Bearer token and Basic Auth authentication methods.

.. _security:

Security
--------

By default, Glances web server runs **without authentication** and binds to
**all network interfaces** (``0.0.0.0``). This means any client that can reach
the server on the network can access the full REST API, including sensitive
system information such as process command-lines, which may contain credentials
(passwords, API keys, tokens passed as arguments).

This default is intentional for ease of use on private, trusted networks (home
labs, local machines, internal infrastructure). However, if your Glances
instance is reachable from untrusted networks, you should take the following
precautions:

**Enable authentication** by starting Glances with the ``--password`` option:

.. code-block:: bash

    glances -w --password

**Bind to localhost only** if remote access is not needed:

.. code-block:: bash

    glances -w --bind 127.0.0.1

**Enable DNS rebinding protection** by setting ``webui_allowed_hosts`` in
``glances.conf``. This restricts the HTTP ``Host`` header values accepted by the
web server. Without this setting, a DNS rebinding attack could allow an
untrusted web page to read the REST API from a victim's browser on the same
network, even without direct network access to the Glances instance.

.. code-block:: ini

    [outputs]
    # Comma-separated list of allowed hostnames/IPs.
    # Wildcards are supported (e.g. *.example.com).
    webui_allowed_hosts=localhost,127.0.0.1,myserver.example.com

When ``webui_allowed_hosts`` is set, requests with a ``Host`` header not in the
list are rejected with ``400 Bad Request``. When absent or commented out
(the default), no host filtering is applied.

**Use a reverse proxy** (nginx, Caddy, Apache) with TLS and authentication for
any public-facing or semi-public deployment. This is the recommended approach
for production environments.

.. code-block:: ini

    # Example: restrict bind to localhost, access via reverse proxy
    # In glances.conf:
    [outputs]
    # Bind to localhost, let the reverse proxy handle external access
    # then configure your reverse proxy to forward to 127.0.0.1:61208
    webui_allowed_hosts=localhost,127.0.0.1

.. note::

    The bind address (``0.0.0.0`` by default) controls which network interfaces
    the server listens on, but it is **not a security boundary**. For
    deployments on non-loopback interfaces, always set ``webui_allowed_hosts``
    and consider enabling authentication.

**CORS (Cross-Origin Resource Sharing)** controls which external websites can
make requests to the Glances API from a browser. By default, Glances allows
requests from any origin (``cors_origins=*``) but does **not** allow credentials
(``cors_credentials=False``). This means cross-origin requests work for
unauthenticated API access, but browsers will not send stored credentials
(e.g. Basic Auth) to the API from a third-party page.

If you need credentialed cross-origin access (e.g. a separate dashboard
application that authenticates to Glances), you **must** configure explicit
origins โ€” the wildcard ``*`` combined with credentials is insecure and will be
automatically rejected:

.. code-block:: ini

    [outputs]
    cors_origins=https://my-dashboard.internal.example.com
    cors_credentials=True

.. warning::

    Setting ``cors_credentials=True`` with ``cors_origins=*`` is not allowed.
    Glances will automatically disable credentials and log a warning if this
    combination is detected. This prevents a class of cross-site data theft
    attacks where any website could read your monitoring data.

The same ``cors_origins`` key also applies to the legacy XML-RPC server
(``glances -s``): when multiple origins are listed, each request's ``Origin``
header is compared against the allowlist and reflected only if it is an exact
match (``Vary: Origin`` is set). The default ``*`` keeps the wildcard
behaviour for backward compatibility.

When Glances is started without authentication or without host filtering,
warning messages are displayed at startup to remind you of the risks.

WebUI refresh
-------------

It is possible to change the Web UI refresh rate (default is 2 seconds) using the following option in the URL:
``http://localhost:61208/?refresh=5``


GET API status
--------------

This entry point should be used to check the API status.
It will the Glances version and a 200 return code if everything is OK.

Get the Rest API status::

    # curl -I http://localhost:61208/api/4/status
    "HTTP/1.0 200 OK"

GET plugins list
----------------

Get the plugins list::

    # curl http://localhost:61208/api/4/pluginslist
    ["alert",
     "amps",
     "cloud",
     "connections",
     "containers",
     "core",
     "cpu",
     "diskio",
     "folders",
     "fs",
     "gpu",
     "help",
     "ip",
     "irq",
     "load",
     "mem",
     "memswap",
     "mpp",
     "network",
     "now",
     "npu",
     "percpu",
     "ports",
     "processcount",
     "processlist",
     "programlist",
     "psutilversion",
     "quicklook",
     "raid",
     "sensors",
     "smart",
     "system",
     "uptime",
     "version",
     "vms",
     "wifi"]

GET alert
---------

Get plugin stats::

    # curl http://localhost:61208/api/4/alert
    []

Fields descriptions:

* **begin**: Begin timestamp of the event (unit is *timestamp*)
* **end**: End timestamp of the event (or -1 if ongoing) (unit is *timestamp*)
* **state**: State of the event (WARNING|CRITICAL) (unit is *string*)
* **type**: Type of the event (CPU|LOAD|MEM) (unit is *string*)
* **max**: Maximum value during the event period (unit is *float*)
* **avg**: Average value during the event period (unit is *float*)
* **min**: Minimum value during the event period (unit is *float*)
* **sum**: Sum of the values during the event period (unit is *float*)
* **count**: Number of values during the event period (unit is *int*)
* **top**: Top 3 processes name during the event period (unit is *list*)
* **desc**: Description of the event (unit is *string*)
* **sort**: Sort key of the top processes (unit is *string*)
* **global_msg**: Global alert message (unit is *string*)

POST clear events
-----------------

Clear all alarms from the list::

    # curl -H "Content-Type: application/json" -X POST http://localhost:61208/api/4/events/clear/all

Clear warning alarms from the list::

    # curl -H "Content-Type: application/json" -X POST http://localhost:61208/api/4/events/clear/warning

GET amps
--------

Get plugin stats::

    # curl http://localhost:61208/api/4/amps
    [{"count": 0,
      "countmax": None,
      "countmin": 1.0,
      "key": "name",
      "name": "Dropbox",
      "refresh": 3.0,
      "regex": True,
      "result": None,
      "timer": 0.32731080055236816},
     {"count": 0,
      "countmax": 20.0,
      "countmin": None,
      "key": "name",
      "name": "Python",
      "refresh": 3.0,
      "regex": True,
      "result": None,
      "timer": 0.327254056930542}]

Fields descriptions:

* **name**: AMP name (unit is *None*)
* **result**: AMP result (a string) (unit is *None*)
* **refresh**: AMP refresh interval (unit is *second*)
* **timer**: Time until next refresh (unit is *second*)
* **count**: Number of matching processes (unit is *number*)
* **countmin**: Minimum number of matching processes (unit is *number*)
* **countmax**: Maximum number of matching processes (unit is *number*)

Get a specific field::

    # curl http://localhost:61208/api/4/amps/name
    {"name": ["Dropbox", "Python", "Conntrack", "Nginx", "Systemd", "SystemV"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/amps/name/value/Dropbox
    {"Dropbox": [{"count": 0,
                  "countmax": None,
                  "countmin": 1.0,
                  "key": "name",
                  "name": "Dropbox",
                  "refresh": 3.0,
                  "regex": True,
                  "result": None,
                  "timer": 0.32731080055236816}]}

GET cloud
---------

Get plugin stats::

    # curl http://localhost:61208/api/4/cloud
    {}

GET connections
---------------

Get plugin stats::

    # curl http://localhost:61208/api/4/connections
    {"net_connections_enabled": True, "nf_conntrack_enabled": True}

Fields descriptions:

* **LISTEN**: Number of TCP connections in LISTEN state (unit is *number*)
* **ESTABLISHED**: Number of TCP connections in ESTABLISHED state (unit is *number*)
* **SYN_SENT**: Number of TCP connections in SYN_SENT state (unit is *number*)
* **SYN_RECV**: Number of TCP connections in SYN_RECV state (unit is *number*)
* **initiated**: Number of TCP connections initiated (unit is *number*)
* **terminated**: Number of TCP connections terminated (unit is *number*)
* **nf_conntrack_count**: Number of tracked connections (unit is *number*)
* **nf_conntrack_max**: Maximum number of tracked connections (unit is *number*)
* **nf_conntrack_percent**: Percentage of tracked connections (unit is *percent*)

Get a specific field::

    # curl http://localhost:61208/api/4/connections/net_connections_enabled
    {"net_connections_enabled": True}

GET containers
--------------

Get plugin stats::

    # curl http://localhost:61208/api/4/containers
    []

Fields descriptions:

* **name**: Container name (unit is *None*)
* **id**: Container ID (unit is *None*)
* **image**: Container image (unit is *None*)
* **status**: Container status (unit is *None*)
* **created**: Container creation date (unit is *None*)
* **command**: Container command (unit is *None*)
* **cpu_percent**: Container CPU consumption (unit is *percent*)
* **cpu_limit**: Container CPU limit (unit is *number*)
* **memory_inactive_file**: Container memory inactive file (unit is *byte*)
* **memory_limit**: Container memory limit (unit is *byte*)
* **memory_usage**: Container memory usage (unit is *byte*)
* **io_rx**: Container IO bytes read rate (unit is *bytepersecond*)
* **io_wx**: Container IO bytes write rate (unit is *bytepersecond*)
* **network_rx**: Container network RX bitrate (unit is *bitpersecond*)
* **network_tx**: Container network TX bitrate (unit is *bitpersecond*)
* **ports**: Container ports (unit is *None*)
* **uptime**: Container uptime (unit is *None*)
* **engine**: Container engine (Docker, Podman, and LXD are currently supported) (unit is *None*)
* **pod_name**: Pod name (only with Podman) (unit is *None*)
* **pod_id**: Pod ID (only with Podman) (unit is *None*)

GET core
--------

Get plugin stats::

    # curl http://localhost:61208/api/4/core
    {"log": 16, "phys": 10}

Fields descriptions:

* **phys**: Number of physical cores (hyper thread CPUs are excluded) (unit is *number*)
* **log**: Number of logical CPU cores. A logical CPU is the number of physical cores multiplied by the number of threads that can run on each core (unit is *number*)

Get a specific field::

    # curl http://localhost:61208/api/4/core/phys
    {"phys": 10}

GET cpu
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/cpu
    {"cpucore": 16,
     "ctx_switches": 43549297,
     "guest": 0.0,
     "idle": 63.2,
     "interrupts": 23616303,
     "iowait": 30.9,
     "irq": 0.0,
     "nice": 0.0,
     "soft_interrupts": 11197201,
     "steal": 0.0,
     "syscalls": 0,
     "system": 2.6,
     "total": 5.4,
     "user": 3.2}

Fields descriptions:

* **total**: Sum of all CPU percentages (except idle) (unit is *percent*)
* **system**: Percent time spent in kernel space. System CPU time is the time spent running code in the Operating System kernel (unit is *percent*)
* **user**: CPU percent time spent in user space. User CPU time is the time spent on the processor running your program's code (or code in libraries) (unit is *percent*)
* **iowait**: *(Linux)*: percent time spent by the CPU waiting for I/O operations to complete (unit is *percent*)
* **dpc**: *(Windows)*: time spent servicing deferred procedure calls (DPCs) (unit is *percent*)
* **idle**: percent of CPU used by any program. Every program or task that runs on a computer system occupies a certain amount of processing time on the CPU. If the CPU has completed all tasks it is idle (unit is *percent*)
* **irq**: *(Linux and BSD)*: percent time spent servicing/handling hardware/software interrupts. Time servicing interrupts (hardware + software) (unit is *percent*)
* **nice**: *(Unix)*: percent time occupied by user level processes with a positive nice value. The time the CPU has spent running users' processes that have been *niced* (unit is *percent*)
* **steal**: *(Linux)*: percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor (unit is *percent*)
* **guest**: *(Linux)*: time spent running a virtual CPU for guest operating systems under the control of the Linux kernel (unit is *percent*)
* **ctx_switches**: number of context switches (voluntary + involuntary) per second. A context switch is a procedure that a computer's CPU (central processing unit) follows to change from one task (or process) to another while ensuring that the tasks do not conflict (unit is *number*)
* **ctx_switches_rate_per_sec**: number of context switches (voluntary + involuntary) per second. A context switch is a procedure that a computer's CPU (central processing unit) follows to change from one task (or process) to another while ensuring that the tasks do not conflict per second (unit is *number* per second)
* **ctx_switches_gauge**: number of context switches (voluntary + involuntary) per second. A context switch is a procedure that a computer's CPU (central processing unit) follows to change from one task (or process) to another while ensuring that the tasks do not conflict (cumulative) (unit is *number*)
* **interrupts**: number of interrupts per second (unit is *number*)
* **interrupts_rate_per_sec**: number of interrupts per second per second (unit is *number* per second)
* **interrupts_gauge**: number of interrupts per second (cumulative) (unit is *number*)
* **soft_interrupts**: number of software interrupts per second. Always set to 0 on Windows and SunOS (unit is *number*)
* **soft_interrupts_rate_per_sec**: number of software interrupts per second. Always set to 0 on Windows and SunOS per second (unit is *number* per second)
* **soft_interrupts_gauge**: number of software interrupts per second. Always set to 0 on Windows and SunOS (cumulative) (unit is *number*)
* **syscalls**: number of system calls per second. Always 0 on Linux OS (unit is *number*)
* **syscalls_rate_per_sec**: number of system calls per second. Always 0 on Linux OS per second (unit is *number* per second)
* **syscalls_gauge**: number of system calls per second. Always 0 on Linux OS (cumulative) (unit is *number*)
* **cpucore**: Total number of CPU core (unit is *number*)
* **time_since_update**: Number of seconds since last update (unit is *seconds*)
* **total_min**: Minimum total observed since Glances startup (unit is *percent*)
* **total_max**: Maximum total observed since Glances startup (unit is *percent*)
* **total_mean**: Mean (average) total computed from the history (unit is *percent*)
* **time_since_update**: Number of seconds since last update (unit is *seconds*)

Get a specific field::

    # curl http://localhost:61208/api/4/cpu/total
    {"total": 5.4}

GET diskio
----------

Get plugin stats::

    # curl http://localhost:61208/api/4/diskio
    [{"disk_name": "nvme0n1",
      "key": "disk_name",
      "read_bytes": 9637140992,
      "read_count": 550752,
      "read_latency": 0,
      "read_time": 62529,
      "write_bytes": 12932473856,
      "write_count": 739082,
      "write_latency": 0,
      "write_time": 605119},
     {"disk_name": "nvme0n1p1",
      "key": "disk_name",
      "read_bytes": 7517184,
      "read_count": 579,
      "read_latency": 0,
      "read_time": 186,
      "write_bytes": 1024,
      "write_count": 2,
      "write_latency": 0,
      "write_time": 9}]

Fields descriptions:

* **disk_name**: Disk name (unit is *None*)
* **read_count**: Number of reads (unit is *number*)
* **read_count_rate_per_sec**: Number of reads per second (unit is *number* per second)
* **read_count_gauge**: Number of reads (cumulative) (unit is *number*)
* **write_count**: Number of writes (unit is *number*)
* **write_count_rate_per_sec**: Number of writes per second (unit is *number* per second)
* **write_count_gauge**: Number of writes (cumulative) (unit is *number*)
* **read_bytes**: Number of bytes read (unit is *byte*)
* **read_bytes_rate_per_sec**: Number of bytes read per second (unit is *byte* per second)
* **read_bytes_gauge**: Number of bytes read (cumulative) (unit is *byte*)
* **write_bytes**: Number of bytes written (unit is *byte*)
* **write_bytes_rate_per_sec**: Number of bytes written per second (unit is *byte* per second)
* **write_bytes_gauge**: Number of bytes written (cumulative) (unit is *byte*)
* **read_time**: Time spent reading (unit is *millisecond*)
* **read_time_rate_per_sec**: Time spent reading per second (unit is *millisecond* per second)
* **read_time_gauge**: Time spent reading (cumulative) (unit is *millisecond*)
* **write_time**: Time spent writing (unit is *millisecond*)
* **write_time_rate_per_sec**: Time spent writing per second (unit is *millisecond* per second)
* **write_time_gauge**: Time spent writing (cumulative) (unit is *millisecond*)
* **read_latency**: Mean time spent reading per operation (unit is *millisecond*)
* **write_latency**: Mean time spent writing per operation (unit is *millisecond*)
* **time_since_update**: Number of seconds since last update (unit is *seconds*)

Get a specific field::

    # curl http://localhost:61208/api/4/diskio/disk_name
    {"disk_name": ["nvme0n1",
                   "nvme0n1p1",
                   "nvme0n1p2",
                   "nvme0n1p3",
                   "dm-0",
                   "dm-1"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/diskio/disk_name/value/nvme0n1
    {"nvme0n1": [{"disk_name": "nvme0n1",
                  "key": "disk_name",
                  "read_bytes": 9637140992,
                  "read_count": 550752,
                  "read_latency": 0,
                  "read_time": 62529,
                  "write_bytes": 12932473856,
                  "write_count": 739082,
                  "write_latency": 0,
                  "write_time": 605119}]}

GET folders
-----------

Get plugin stats::

    # curl http://localhost:61208/api/4/folders
    []

Fields descriptions:

* **path**: Absolute path (unit is *None*)
* **size**: Folder size in bytes (unit is *byte*)
* **refresh**: Refresh interval in seconds (unit is *second*)
* **errno**: Return code when retrieving folder size (0 is no error) (unit is *number*)
* **careful**: Careful threshold in MB (unit is *megabyte*)
* **warning**: Warning threshold in MB (unit is *megabyte*)
* **critical**: Critical threshold in MB (unit is *megabyte*)

GET fs
------

Get plugin stats::

    # curl http://localhost:61208/api/4/fs
    [{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
      "free": 488287748096,
      "fs_type": "ext4",
      "key": "mnt_point",
      "mnt_point": "/",
      "options": "rw,relatime",
      "percent": 48.7,
      "size": 1003736440832,
      "used": 464386187264},
     {"device_name": "zsfpool",
      "free": 41680896,
      "fs_type": "zfs",
      "key": "mnt_point",
      "mnt_point": "/zsfpool",
      "options": "rw,relatime,xattr,noacl,casesensitive",
      "percent": 0.3,
      "size": 41811968,
      "used": 131072}]

Fields descriptions:

* **device_name**: Device name (unit is *None*)
* **fs_type**: File system type (unit is *None*)
* **mnt_point**: Mount point (unit is *None*)
* **options**: Mount options (unit is *None*)
* **size**: Total size (unit is *byte*)
* **used**: Used size (unit is *byte*)
* **free**: Free size (unit is *byte*)
* **percent**: File system usage in percent (unit is *percent*)

Get a specific field::

    # curl http://localhost:61208/api/4/fs/mnt_point
    {"mnt_point": ["/", "/zsfpool"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/fs/mnt_point/value//
    {"/": [{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
            "free": 488287748096,
            "fs_type": "ext4",
            "key": "mnt_point",
            "mnt_point": "/",
            "options": "rw,relatime",
            "percent": 48.7,
            "size": 1003736440832,
            "used": 464386187264}]}

GET gpu
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/gpu
    [{"fan_speed": None,
      "gpu_id": "intel0",
      "key": "gpu_id",
      "mem": None,
      "name": "UHD Graphics",
      "proc": 0,
      "temperature": None},
     {"fan_speed": None,
      "gpu_id": "intel1",
      "key": "gpu_id",
      "mem": None,
      "name": "Arc A370M",
      "proc": 0,
      "temperature": None}]

Fields descriptions:

* **gpu_id**: GPU identification (unit is *None*)
* **name**: GPU name (unit is *None*)
* **mem**: Memory consumption (unit is *percent*)
* **proc**: GPU processor consumption (unit is *percent*)
* **temperature**: GPU temperature (unit is *celsius*)
* **fan_speed**: GPU fan speed (unit is *roundperminute*)

Get a specific field::

    # curl http://localhost:61208/api/4/gpu/gpu_id
    {"gpu_id": ["intel0", "intel1"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/gpu/gpu_id/value/intel0
    {"intel0": [{"fan_speed": None,
                 "gpu_id": "intel0",
                 "key": "gpu_id",
                 "mem": None,
                 "name": "UHD Graphics",
                 "proc": 0,
                 "temperature": None}]}

GET help
--------

Get plugin stats::

    # curl http://localhost:61208/api/4/help
    None

GET ip
------

Get plugin stats::

    # curl http://localhost:61208/api/4/ip
    {"address": "192.168.1.26", "mask": "255.255.255.0", "mask_cidr": 24}

Fields descriptions:

* **address**: Private IP address (unit is *None*)
* **mask**: Private IP mask (unit is *None*)
* **mask_cidr**: Private IP mask in CIDR format (unit is *number*)
* **gateway**: Private IP gateway (unit is *None*)
* **public_address**: Public IP address (unit is *None*)
* **public_info_human**: Public IP information (unit is *None*)

Get a specific field::

    # curl http://localhost:61208/api/4/ip/address
    {"address": "192.168.1.26"}

GET irq
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/irq
    []

Fields descriptions:

* **irq_line**: IRQ line name (unit is *None*)
* **irq_rate**: IRQ rate per second (unit is *numberpersecond*)

GET load
--------

Get plugin stats::

    # curl http://localhost:61208/api/4/load
    {"cpucore": 16,
     "min1": 0.96240234375,
     "min15": 1.009765625,
     "min5": 0.9287109375}

Fields descriptions:

* **min1**: Average sum of the number of processes waiting in the run-queue plus the number currently executing over 1 minute (unit is *float*)
* **min5**: Average sum of the number of processes waiting in the run-queue plus the number currently executing over 5 minutes (unit is *float*)
* **min15**: Average sum of the number of processes waiting in the run-queue plus the number currently executing over 15 minutes (unit is *float*)
* **cpucore**: Total number of CPU core (unit is *number*)
* **min1_min**: Minimum min1 observed since Glances startup (unit is *float*)
* **min1_max**: Maximum min1 observed since Glances startup (unit is *float*)
* **min1_mean**: Mean (average) min1 computed from the history (unit is *float*)

Get a specific field::

    # curl http://localhost:61208/api/4/load/min1
    {"min1": 0.96240234375}

GET mem
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/mem
    {"active": 5286379520,
     "available": 6126380992,
     "buffers": 205484032,
     "cached": 6887824448,
     "free": 262074368,
     "inactive": 8582184960,
     "percent": 62.7,
     "percent_max": 62.7,
     "percent_mean": 62.7,
     "percent_min": 62.7,
     "shared": 1915150336,
     "total": 16417853440,
     "used": 10291472448}

Fields descriptions:

* **total**: Total physical memory available (unit is *bytes*)
* **available**: The actual amount of available memory that can be given instantly to processes that request more memory in bytes; this is calculated by summing different memory values depending on the platform (e.g. free + buffers + cached on Linux) and it is supposed to be used to monitor actual memory usage in a cross platform fashion (unit is *bytes*)
* **percent**: The percentage usage calculated as (total - available) / total * 100 (unit is *percent*)
* **used**: Memory used, calculated differently depending on the platform and designed for informational purposes only (unit is *bytes*)
* **free**: Memory not being used at all (zeroed) that is readily available; note that this doesn't reflect the actual memory available (use 'available' instead) (unit is *bytes*)
* **active**: *(UNIX)*: memory currently in use or very recently used, and so it is in RAM (unit is *bytes*)
* **inactive**: *(UNIX)*: memory that is marked as not used (unit is *bytes*)
* **buffers**: *(Linux, BSD)*: cache for things like file system metadata (unit is *bytes*)
* **cached**: *(Linux, BSD)*: cache for various things (including ZFS cache) (unit is *bytes*)
* **wired**: *(BSD, macOS)*: memory that is marked to always stay in RAM. It is never moved to disk (unit is *bytes*)
* **shared**: *(BSD)*: memory that may be simultaneously accessed by multiple processes (unit is *bytes*)
* **percent_min**: Minimum percent observed since Glances startup (unit is *percent*)
* **percent_max**: Maximum percent observed since Glances startup (unit is *percent*)
* **percent_mean**: Mean (average) percent computed from the history (unit is *percent*)

Get a specific field::

    # curl http://localhost:61208/api/4/mem/total
    {"total": 16417853440}

GET memswap
-----------

Get plugin stats::

    # curl http://localhost:61208/api/4/memswap
    {"free": 3288137728,
     "percent": 23.4,
     "sin": 209358848,
     "sout": 1026351104,
     "time_since_update": 1,
     "total": 4294963200,
     "used": 1006825472}

Fields descriptions:

* **total**: Total swap memory (unit is *bytes*)
* **used**: Used swap memory (unit is *bytes*)
* **free**: Free swap memory (unit is *bytes*)
* **percent**: Used swap memory in percentage (unit is *percent*)
* **sin**: The number of bytes the system has swapped in from disk (cumulative) (unit is *bytes*)
* **sout**: The number of bytes the system has swapped out from disk (cumulative) (unit is *bytes*)
* **time_since_update**: Number of seconds since last update (unit is *seconds*)

Get a specific field::

    # curl http://localhost:61208/api/4/memswap/total
    {"total": 4294963200}

GET mpp
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/mpp
    []

Fields descriptions:

* **engine_id**: Engine identification (unit is *None*)
* **name**: Engine name (unit is *None*)
* **type**: Engine type (encoder/decoder/jpeg) (unit is *None*)
* **load**: Engine load (unit is *percent*)
* **utilization**: Engine utilization (unit is *percent*)
* **sessions**: Number of active sessions (unit is *None*)

GET network
-----------

Get plugin stats::

    # curl http://localhost:61208/api/4/network
    [{"alias": None,
      "bytes_all": 0,
      "bytes_all_gauge": 1467063785,
      "bytes_all_rate_per_sec": 0,
      "bytes_recv": 0,
      "bytes_recv_gauge": 1366687384,
      "bytes_recv_rate_per_sec": 0,
      "bytes_sent": 0,
      "bytes_sent_gauge": 100376401,
      "bytes_sent_rate_per_sec": 0,
      "interface_name": "wlp0s20f3",
      "key": "interface_name",
      "speed": 0,
      "time_since_update": 0.33472347259521484}]

Fields descriptions:

* **interface_name**: Interface name (unit is *None*)
* **alias**: Interface alias name (optional) (unit is *None*)
* **bytes_recv**: Number of bytes received (unit is *byte*)
* **bytes_recv_rate_per_sec**: Number of bytes received per second (unit is *byte* per second)
* **bytes_recv_gauge**: Number of bytes received (cumulative) (unit is *byte*)
* **bytes_sent**: Number of bytes sent (unit is *byte*)
* **bytes_sent_rate_per_sec**: Number of bytes sent per second (unit is *byte* per second)
* **bytes_sent_gauge**: Number of bytes sent (cumulative) (unit is *byte*)
* **bytes_all**: Number of bytes received and sent (unit is *byte*)
* **bytes_all_rate_per_sec**: Number of bytes received and sent per second (unit is *byte* per second)
* **bytes_all_gauge**: Number of bytes received and sent (cumulative) (unit is *byte*)
* **speed**: Maximum interface speed (in bit per second). Can return 0 on some operating-system (unit is *bitpersecond*)
* **is_up**: Is the interface up ? (unit is *bool*)
* **time_since_update**: Number of seconds since last update (unit is *seconds*)

Get a specific field::

    # curl http://localhost:61208/api/4/network/interface_name
    {"interface_name": ["wlp0s20f3"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/network/interface_name/value/wlp0s20f3
    {"wlp0s20f3": [{"alias": None,
                    "bytes_all": 0,
                    "bytes_all_gauge": 1467063785,
                    "bytes_all_rate_per_sec": 0,
                    "bytes_recv": 0,
                    "bytes_recv_gauge": 1366687384,
                    "bytes_recv_rate_per_sec": 0,
                    "bytes_sent": 0,
                    "bytes_sent_gauge": 100376401,
                    "bytes_sent_rate_per_sec": 0,
                    "interface_name": "wlp0s20f3",
                    "key": "interface_name",
                    "speed": 0,
                    "time_since_update": 0.33472347259521484}]}

GET now
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/now
    {"custom": "2026-08-01 10:56:07 CEST", "iso": "2026-08-01T10:56:07+02:00"}

Fields descriptions:

* **custom**: Current date in custom format (unit is *None*)
* **iso**: Current date in ISO 8601 format (unit is *None*)

Get a specific field::

    # curl http://localhost:61208/api/4/now/iso
    {"iso": "2026-08-01T10:56:07+02:00"}

GET npu
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/npu
    []

Fields descriptions:

* **npu_id**: NPU identification (unit is *None*)
* **name**: NPU name (unit is *None*)
* **load**: NPU load (unit is *percent*)
* **freq**: NPU frequency (unit is *percent*)
* **freq_current**: NPU current frequency (unit is *hertz*)
* **freq_max**: NPU maximum frequency (unit is *hertz*)
* **mem**: Memory consumption (unit is *percent*)
* **memory_used**: Memory used (unit is *byte*)
* **memory_total**: Memory total (unit is *byte*)
* **temperature**: NPU temperature (unit is *celsius*)
* **power**: NPU power consumption (unit is *watt*)

GET percpu
----------

Get plugin stats::

    # curl http://localhost:61208/api/4/percpu
    [{"cpu_number": 0,
      "dpc": None,
      "guest": 0.0,
      "guest_nice": 0.0,
      "idle": 24.0,
      "interrupt": None,
      "iowait": 0.0,
      "irq": 0.0,
      "key": "cpu_number",
      "nice": 0.0,
      "softirq": 0.0,
      "steal": 0.0,
      "system": 7.0,
      "total": 76.0,
      "user": 0.0},
     {"cpu_number": 1,
      "dpc": None,
      "guest": 0.0,
      "guest_nice": 0.0,
      "idle": 33.0,
      "interrupt": None,
      "iowait": 0.0,
      "irq": 0.0,
      "key": "cpu_number",
      "nice": 0.0,
      "softirq": 0.0,
      "steal": 0.0,
      "system": 0.0,
      "total": 67.0,
      "user": 1.0}]

Fields descriptions:

* **cpu_number**: CPU number (unit is *None*)
* **total**: Sum of CPU percentages (except idle) for current CPU number (unit is *percent*)
* **system**: Percent time spent in kernel space. System CPU time is the time spent running code in the Operating System kernel (unit is *percent*)
* **user**: CPU percent time spent in user space. User CPU time is the time spent on the processor running your program's code (or code in libraries) (unit is *percent*)
* **iowait**: *(Linux)*: percent time spent by the CPU waiting for I/O operations to complete (unit is *percent*)
* **idle**: percent of CPU used by any program. Every program or task that runs on a computer system occupies a certain amount of processing time on the CPU. If the CPU has completed all tasks it is idle (unit is *percent*)
* **irq**: *(Linux and BSD)*: percent time spent servicing/handling hardware/software interrupts. Time servicing interrupts (hardware + software) (unit is *percent*)
* **nice**: *(Unix)*: percent time occupied by user level processes with a positive nice value. The time the CPU has spent running users' processes that have been *niced* (unit is *percent*)
* **steal**: *(Linux)*: percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor (unit is *percent*)
* **guest**: *(Linux)*: percent of time spent running a virtual CPU for guest operating systems under the control of the Linux kernel (unit is *percent*)
* **guest_nice**: *(Linux)*: percent of time spent running a niced guest (virtual CPU) (unit is *percent*)
* **softirq**: *(Linux)*: percent of time spent handling software interrupts (unit is *percent*)
* **dpc**: *(Windows)*: percent of time spent handling deferred procedure calls (unit is *percent*)
* **interrupt**: *(Windows)*: percent of time spent handling software interrupts (unit is *percent*)

Get a specific field::

    # curl http://localhost:61208/api/4/percpu/cpu_number
    {"cpu_number": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]}

GET ports
---------

Get plugin stats::

    # curl http://localhost:61208/api/4/ports
    [{"description": "DefaultGateway",
      "host": "192.168.1.1",
      "indice": "port_0",
      "port": 0,
      "refresh": 30,
      "rtt_warning": None,
      "status": 0.005451,
      "timeout": 3}]

Fields descriptions:

* **host**: Measurement is be done on this host (or IP address) (unit is *None*)
* **port**: Measurement is be done on this port (0 for ICMP) (unit is *None*)
* **description**: Human readable description for the host/port (unit is *None*)
* **refresh**: Refresh time (in seconds) for this host/port (unit is *None*)
* **timeout**: Timeout (in seconds) for the measurement (unit is *None*)
* **status**: Measurement result (in seconds) (unit is *second*)
* **rtt_warning**: Warning threshold (in seconds) for the measurement (unit is *second*)
* **indice**: Unique indice for the host/port (unit is *None*)

Get a specific field::

    # curl http://localhost:61208/api/4/ports/host
    {"host": ["192.168.1.1"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/ports/host/value/192.168.1.1
    {"192.168.1.1": [{"description": "DefaultGateway",
                      "host": "192.168.1.1",
                      "indice": "port_0",
                      "port": 0,
                      "refresh": 30,
                      "rtt_warning": None,
                      "status": 0.005451,
                      "timeout": 3}]}

GET processcount
----------------

Get plugin stats::

    # curl http://localhost:61208/api/4/processcount
    {"pid_max": 0, "running": 1, "sleeping": 421, "thread": 2136, "total": 565}

Fields descriptions:

* **total**: Total number of processes (unit is *number*)
* **running**: Total number of running processes (unit is *number*)
* **sleeping**: Total number of sleeping processes (unit is *number*)
* **thread**: Total number of threads (unit is *number*)
* **pid_max**: Maximum number of processes (unit is *number*)

Get a specific field::

    # curl http://localhost:61208/api/4/processcount/total
    {"total": 565}

GET processlist
---------------

Get plugin stats::

    # curl http://localhost:61208/api/4/processlist
    [{"cmdline": ["/snap/firefox/8633/usr/lib/firefox/firefox",
                  "-contentproc",
                  "-isForBrowser",
                  "-prefsHandle",
                  "0:51728",
                  "-prefMapHandle",
                  "1:291494",
                  "-jsInitHandle",
                  "2:156120",
                  "-parentBuildID",
                  "20260714090335",
                  "-sandboxReporter",
                  "3",
                  "-chrootClient",
                  "4",
                  "-ipcHandle",
                  "5",
                  "-initialChannelId",
                  "{f897ebfb-a2b0-4635-85df-95a1323b45f3}",
                  "-parentPid",
                  "20546",
                  "-crashReporter",
                  "6",
                  "-crashHelperPid",
                  "20619",
                  "-crashHelper",
                  "7",
                  "-greomni",
                  "/snap/firefox/8633/usr/lib/firefox/omni.ja",
                  "-appomni",
                  "/snap/firefox/8633/usr/lib/firefox/browser/omni.ja",
                  "-appDir",
                  "/snap/firefox/8633/usr/lib/firefox/browser",
                  "19",
                  "tab"],
      "cpu_percent": 0.0,
      "cpu_times": {"children_system": 0.0,
                    "children_user": 0.0,
                    "iowait": 0.0,
                    "system": 5.65,
                    "user": 50.18},
      "gids": {"effective": 1000, "real": 1000, "saved": 1000},
      "io_counters": [225280,
                      0,
                      0,
                      0,
                      0,
                      460800,
                      0,
                      0,
                      0,
                      0,
                      559104,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      2625536,
                      0,
                      0,
                      0,
                      0,
                      66560,
                      0,
                      0,
                      0,
                      0],
      "key": "pid",
      "memory_info": {"data": 861675520,
                      "dirty": 0,
                      "lib": 0,
                      "rss": 836747264,
                      "shared": 126619648,
                      "text": 466944,
                      "vms": 3712446464},
      "memory_percent": 5.096569213861859,
      "name": "Isolated Web Co",
      "nice": 0,
      "num_threads": 29,
      "pid": 24387,
      "status": "S",
      "time_since_update": 1,
      "username": "nicolargo"},
     {"cmdline": ["/snap/firefox/8633/usr/lib/firefox/firefox"],
      "cpu_percent": 0.0,
      "cpu_times": {"children_system": 0.37,
                    "children_user": 0.1,
                    "iowait": 0.0,
                    "system": 64.82,
                    "user": 237.86},
      "gids": {"effective": 1000, "real": 1000, "saved": 1000},
      "io_counters": [575025152, 863887360, 0, 0, 0],
      "key": "pid",
      "memory_info": {"data": 947322880,
                      "dirty": 0,
                      "lib": 0,
                      "rss": 830218240,
                      "shared": 278282240,
                      "text": 466944,
                      "vms": 21469474816},
      "memory_percent": 5.056801384140021,
      "name": "firefox",
      "nice": 0,
      "num_threads": 115,
      "pid": 20546,
      "status": "S",
      "time_since_update": 1,
      "username": "nicolargo"}]

Fields descriptions:

* **pid**: Process identifier (ID) (unit is *number*)
* **name**: Process name (unit is *string*)
* **cmdline**: Command line with arguments (unit is *list*)
* **username**: Process owner (unit is *string*)
* **num_threads**: Number of threads (unit is *number*)
* **cpu_percent**: Process CPU consumption (returned value can be > 100.0 in case of a process running multiple threads on different CPU cores) (unit is *percent*)
* **memory_percent**: Process memory consumption (unit is *percent*)
* **memory_info**: Process memory information (dict with rss, vms, shared, text, lib, data, dirty keys) (unit is *byte*)
* **status**: Process status (unit is *string*)
* **nice**: Process nice value (unit is *number*)
* **cpu_times**: Process CPU times (dict with user, system, iowait keys) (unit is *second*)
* **gids**: Process group IDs (dict with real, effective, saved keys) (unit is *number*)
* **io_counters**: Process IO counters (list with read_count, write_count, read_bytes, write_bytes, io_tag keys) (unit is *byte*)
* **cpu_num**: CPU core number where the process is currently executing (0-based indexing) (unit is *number*)

GET programlist
---------------

Get plugin stats::

    # curl http://localhost:61208/api/4/programlist
    [{"childrens": [24387, 42194, 63717, 20793, 20787, 20801],
      "cmdline": ["Isolated Web Co"],
      "cpu_percent": 0,
      "cpu_times": {"system": 23.06, "user": 199.68},
      "io_counters": [225280,
                      0,
                      0,
                      0,
                      0,
                      460800,
                      0,
                      0,
                      0,
                      0,
                      559104,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      0,
                      2625536,
                      0,
                      0,
                      0,
                      0,
                      66560,
                      0,
                      0,
                      0,
                      0],
      "memory_info": {"data": 4156641280,
                      "rss": 3884990464,
                      "shared": 768462848,
                      "text": 2801664,
                      "vms": 21141073920},
      "memory_percent": 23.663205900807455,
      "name": "Isolated Web Co",
      "nice": 0,
      "nprocs": 6,
      "num_threads": 178,
      "pid": "_",
      "status": "S",
      "time_since_update": 1,
      "username": "nicolargo"},
     {"childrens": [20546],
      "cmdline": ["firefox"],
      "cpu_percent": 0,
      "cpu_times": {"children_system": 0.37,
                    "children_user": 0.1,
                    "iowait": 0.0,
                    "system": 64.82,
                    "user": 237.86},
      "io_counters": [575025152, 863887360, 0, 0, 0],
      "memory_info": {"data": 947322880,
                      "dirty": 0,
                      "lib": 0,
                      "rss": 830218240,
                      "shared": 278282240,
                      "text": 466944,
                      "vms": 21469474816},
      "memory_percent": 5.056801384140021,
      "name": "firefox",
      "nice": 0,
      "nprocs": 1,
      "num_threads": 115,
      "pid": "_",
      "status": "S",
      "time_since_update": 1,
      "username": "nicolargo"}]

Fields descriptions:

* **pid**: Process identifier (ID) (unit is *number*)
* **name**: Process name (unit is *string*)
* **cmdline**: Command line with arguments (unit is *list*)
* **username**: Process owner (unit is *string*)
* **num_threads**: Number of threads (unit is *number*)
* **cpu_percent**: Process CPU consumption (returned value can be > 100.0 in case of a process running multiple threads on different CPU cores) (unit is *percent*)
* **memory_percent**: Process memory consumption (unit is *percent*)
* **memory_info**: Process memory information (dict with rss, vms, shared, text, lib, data, dirty keys) (unit is *byte*)
* **status**: Process status (unit is *string*)
* **nice**: Process nice value (unit is *number*)
* **cpu_times**: Process CPU times (dict with user, system, iowait keys) (unit is *second*)
* **gids**: Process group IDs (dict with real, effective, saved keys) (unit is *number*)
* **io_counters**: Process IO counters (list with read_count, write_count, read_bytes, write_bytes, io_tag keys) (unit is *byte*)
* **cpu_num**: CPU core number where the process is currently executing (0-based indexing) (unit is *number*)

GET psutilversion
-----------------

Get plugin stats::

    # curl http://localhost:61208/api/4/psutilversion
    "7.2.2"

GET quicklook
-------------

Get plugin stats::

    # curl http://localhost:61208/api/4/quicklook
    {"cpu": 5.4,
     "cpu_hz": 4475000000.0,
     "cpu_hz_current": 707799124.9999999,
     "cpu_log_core": 16,
     "cpu_name": "13th Gen Intel(R) Core(TM) i7-13620H",
     "cpu_phys_core": 10,
     "gpu_mem": 0,
     "gpu_proc": 0,
     "load": 6.3,
     "mem": 62.7,
     "percpu": [{"cpu_number": 0,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 24.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 7.0,
                 "total": 76.0,
                 "user": 0.0},
                {"cpu_number": 1,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 33.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 67.0,
                 "user": 1.0},
                {"cpu_number": 2,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 33.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 67.0,
                 "user": 0.0},
                {"cpu_number": 3,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 33.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 67.0,
                 "user": 0.0},
                {"cpu_number": 4,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 15.0,
                 "interrupt": None,
                 "iowait": 9.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 2.0,
                 "total": 85.0,
                 "user": 7.0},
                {"cpu_number": 5,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 32.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 68.0,
                 "user": 0.0},
                {"cpu_number": 6,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 0.0,
                 "interrupt": None,
                 "iowait": 20.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 10.0,
                 "total": 100.0,
                 "user": 1.0},
                {"cpu_number": 7,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 32.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 68.0,
                 "user": 0.0},
                {"cpu_number": 8,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 33.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 67.0,
                 "user": 1.0},
                {"cpu_number": 9,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 0.0,
                 "interrupt": None,
                 "iowait": 33.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 100.0,
                 "user": 0.0},
                {"cpu_number": 10,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 0.0,
                 "interrupt": None,
                 "iowait": 33.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 100.0,
                 "user": 0.0},
                {"cpu_number": 11,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 33.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 67.0,
                 "user": 0.0},
                {"cpu_number": 12,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 33.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 67.0,
                 "user": 0.0},
                {"cpu_number": 13,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 0.0,
                 "interrupt": None,
                 "iowait": 32.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 100.0,
                 "user": 0.0},
                {"cpu_number": 14,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 32.0,
                 "interrupt": None,
                 "iowait": 0.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 68.0,
                 "user": 0.0},
                {"cpu_number": 15,
                 "dpc": None,
                 "guest": 0.0,
                 "guest_nice": 0.0,
                 "idle": 0.0,
                 "interrupt": None,
                 "iowait": 33.0,
                 "irq": 0.0,
                 "key": "cpu_number",
                 "nice": 0.0,
                 "softirq": 0.0,
                 "steal": 0.0,
                 "system": 0.0,
                 "total": 100.0,
                 "user": 0.0}],
     "swap": 23.4}

Fields descriptions:

* **cpu**: CPU percent usage (unit is *percent*)
* **mem**: MEM percent usage (unit is *percent*)
* **swap**: SWAP percent usage (unit is *percent*)
* **load**: LOAD percent usage (unit is *percent*)
* **cpu_log_core**: Number of logical CPU core (unit is *number*)
* **cpu_phys_core**: Number of physical CPU core (unit is *number*)
* **cpu_name**: CPU name (unit is *None*)
* **cpu_hz_current**: CPU current frequency (unit is *hertz*)
* **cpu_hz**: CPU max frequency (unit is *hertz*)
* **gpu_mem**: Average GPU Memory consumption (unit is *percent*)
* **gpu_proc**: Average GPU Processor consumption (unit is *percent*)

Get a specific field::

    # curl http://localhost:61208/api/4/quicklook/cpu_name
    {"cpu_name": "13th Gen Intel(R) Core(TM) i7-13620H"}

GET raid
--------

Get plugin stats::

    # curl http://localhost:61208/api/4/raid
    {}

GET sensors
-----------

Get plugin stats::

    # curl http://localhost:61208/api/4/sensors
    [{"critical": None,
      "key": "label",
      "label": "Ambient",
      "type": "temperature_core",
      "unit": "C",
      "value": 43,
      "warning": 0},
     {"critical": None,
      "key": "label",
      "label": "Ambient 3",
      "type": "temperature_core",
      "unit": "C",
      "value": 36,
      "warning": 0}]

Fields descriptions:

* **label**: Sensor label (unit is *None*)
* **unit**: Sensor unit (unit is *None*)
* **value**: Sensor value (unit is *number*)
* **warning**: System warning threshold (regardless of the user configuration in the glances.conf file) (unit is *number*)
* **critical**: System critical threshold (regardless of the user configuration in the glances.conf file) (unit is *number*)
* **type**: Sensor type (one of battery, temperature_core, fan_speed) (unit is *None*)

Get a specific field::

    # curl http://localhost:61208/api/4/sensors/label
    {"label": ["Ambient",
               "Ambient 3",
               "Ambient 5",
               "Ambient 6",
               "CPU",
               "Composite",
               "Core 0",
               "Core 4",
               "Core 8",
               "Core 12",
               "Core 16",
               "Core 20",
               "Core 28",
               "Core 29",
               "Core 30",
               "Core 31",
               "HDD",
               "Package id 0",
               "SODIMM",
               "Sensor 1",
               "Sensor 2",
               "dell_smm 0",
               "dell_smm 1",
               "dell_smm 2",
               "dell_smm 3",
               "dell_smm 4",
               "dell_smm 5",
               "dell_smm 6",
               "dell_smm 7",
               "dell_smm 8",
               "dell_smm 9",
               "i915 0",
               "iwlwifi_1 0",
               "temp",
               "CPU Fan",
               "Video Fan",
               "dell_smm 0",
               "dell_smm 1",
               "i915 0",
               "BAT BAT0"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/sensors/label/value/Ambient
    {"Ambient": [{"critical": None,
                  "key": "label",
                  "label": "Ambient",
                  "type": "temperature_core",
                  "unit": "C",
                  "value": 43,
                  "warning": 0}]}

GET smart
---------

Get plugin stats::

    # curl http://localhost:61208/api/4/smart
    {}

GET system
----------

Get plugin stats::

    # curl http://localhost:61208/api/4/system
    {"hostname": "nicolargo-xps15",
     "hr_name": "Ubuntu 24.04 64bit / Linux 7.0.0-28-generic",
     "linux_distro": "Ubuntu 24.04",
     "os_name": "Linux",
     "os_version": "7.0.0-28-generic",
     "platform": "64bit"}

Fields descriptions:

* **os_name**: Operating system name (unit is *None*)
* **hostname**: Hostname (unit is *None*)
* **platform**: Platform (32 or 64 bits) (unit is *None*)
* **linux_distro**: Linux distribution (unit is *None*)
* **os_version**: Operating system version (unit is *None*)
* **hr_name**: Human readable operating system name (unit is *None*)

Get a specific field::

    # curl http://localhost:61208/api/4/system/os_name
    {"os_name": "Linux"}

GET uptime
----------

Get plugin stats::

    # curl http://localhost:61208/api/4/uptime
    "1:27:01"

GET version
-----------

Get plugin stats::

    # curl http://localhost:61208/api/4/version
    "4.5.6"

GET vms
-------

Get plugin stats::

    # curl http://localhost:61208/api/4/vms
    {}

Fields descriptions:

* **name**: Vm name (unit is *None*)
* **id**: Vm ID (unit is *None*)
* **release**: Vm release (unit is *None*)
* **status**: Vm status (unit is *None*)
* **cpu_count**: Vm CPU count (unit is *None*)
* **cpu_time**: Vm CPU time (unit is *percent*)
* **cpu_time_rate_per_sec**: Vm CPU time per second (unit is *percent* per second)
* **cpu_time_gauge**: Vm CPU time (cumulative) (unit is *percent*)
* **memory_usage**: Vm memory usage (unit is *byte*)
* **memory_total**: Vm memory total (unit is *byte*)
* **load_1min**: Vm Load last 1 min (None if not supported by the engine) (unit is *None*)
* **load_5min**: Vm Load last 5 mins (None if not supported by the engine) (unit is *None*)
* **load_15min**: Vm Load last 15 mins (None if not supported by the engine) (unit is *None*)
* **ipv4**: Vm IP v4 address (unit is *None*)
* **engine**: VM engine name (unit is *None*)
* **engine_version**: VM engine version (unit is *None*)
* **time_since_update**: Number of seconds since last update (unit is *seconds*)

GET wifi
--------

Get plugin stats::

    # curl http://localhost:61208/api/4/wifi
    [{"key": "ssid",
      "quality_level": -60.0,
      "quality_link": 50.0,
      "ssid": "wlp0s20f3"}]

Get a specific field::

    # curl http://localhost:61208/api/4/wifi/ssid
    {"ssid": ["wlp0s20f3"]}

Get a specific item when field matches the given value::

    # curl http://localhost:61208/api/4/wifi/ssid/value/wlp0s20f3
    {"wlp0s20f3": [{"key": "ssid",
                    "quality_level": -60.0,
                    "quality_link": 50.0,
                    "ssid": "wlp0s20f3"}]}

GET all stats
-------------

Get all Glances stats::

    # curl http://localhost:61208/api/4/all
    Return a very big dictionary with all stats

Note: Update is done automatically every time /all or / is called.

GET stats of a specific process
-------------------------------

Get stats for process with PID == 777::

    # curl http://localhost:61208/api/4/processes/777
    Return stats for process (dict)

Enable extended stats for process with PID == 777 (only one process at a time can be enabled)::

    # curl -X POST http://localhost:61208/api/4/processes/extended/777
    # curl http://localhost:61208/api/4/all
    # curl http://localhost:61208/api/4/processes/777
    Return stats for process (dict)

Note: Update *is not* done automatically when you call /processes/.

GET top n items of a specific plugin
------------------------------------

Get top 2 processes of the processlist plugin::

    # curl http://localhost:61208/api/4/processlist/top/2
    []

Note: Only work for plugin with a list of items

GET item description
--------------------
Get item description (human readable) for a specific plugin/item::

    # curl http://localhost:61208/api/4/diskio/read_bytes/description
    "Number of bytes read."

Note: the description is defined in the fields_description variable of the plugin.

GET item unit
-------------
Get item unit for a specific plugin/item::

    # curl http://localhost:61208/api/4/diskio/read_bytes/unit
    "byte"

Note: the description is defined in the fields_description variable of the plugin.

GET stats history
-----------------

History of a plugin::

    # curl http://localhost:61208/api/4/cpu/history
    {"system": [["2026-08-01T08:56:08.669212+00:00", 2.6],
                ["2026-08-01T08:56:09.735603+00:00", 1.0],
                ["2026-08-01T08:56:10.751027+00:00", 1.0]],
     "user": [["2026-08-01T08:56:08.669209+00:00", 3.2],
              ["2026-08-01T08:56:09.735601+00:00", 0.9],
              ["2026-08-01T08:56:10.751026+00:00", 0.9]]}

Limit history to last 2 values::

    # curl http://localhost:61208/api/4/cpu/history/2
    {"system": [["2026-08-01T08:56:09.735603+00:00", 1.0],
                ["2026-08-01T08:56:10.751027+00:00", 1.0]],
     "user": [["2026-08-01T08:56:09.735601+00:00", 0.9],
              ["2026-08-01T08:56:10.751026+00:00", 0.9]]}

History for a specific field::

    # curl http://localhost:61208/api/4/cpu/system/history
    {"system": [["2026-08-01T08:56:07.445274+00:00", 2.6],
                ["2026-08-01T08:56:08.669212+00:00", 2.6],
                ["2026-08-01T08:56:09.735603+00:00", 1.0],
                ["2026-08-01T08:56:10.751027+00:00", 1.0]]}

Limit history for a specific field to last 2 values::

    # curl http://localhost:61208/api/4/cpu/system/history
    {"system": [["2026-08-01T08:56:09.735603+00:00", 1.0],
                ["2026-08-01T08:56:10.751027+00:00", 1.0]]}

GET limits (used for thresholds)
--------------------------------

All limits/thresholds::

    # curl http://localhost:61208/api/4/all/limits
    {"alert": {"alert_disable": ["False"], "history_size": 1200.0},
     "amps": {"amps_disable": ["False"], "history_size": 1200.0},
     "containers": {"containers_all": ["False"],
                    "containers_disable": ["False"],
                    "containers_disable_stats": ["command"],
                    "containers_max_name_size": 20.0,
                    "history_size": 1200.0},
     "core": {"history_size": 1200.0},
     "cpu": {"cpu_ctx_switches_careful": 640000.0,
             "cpu_ctx_switches_critical": 800000.0,
             "cpu_ctx_switches_warning": 720000.0,
             "cpu_disable": ["False"],
             "cpu_iowait_careful": 50.0,
             "cpu_iowait_critical": 90.0,
             "cpu_iowait_warning": 70.0,
             "cpu_steal_careful": 50.0,
             "cpu_steal_critical": 90.0,
             "cpu_steal_warning": 70.0,
             "cpu_system_careful": 50.0,
             "cpu_system_critical": 90.0,
             "cpu_system_log": ["False"],
             "cpu_system_warning": 70.0,
             "cpu_total_careful": 65.0,
             "cpu_total_critical": 85.0,
             "cpu_total_log": ["True"],
             "cpu_total_warning": 75.0,
             "cpu_user_careful": 50.0,
             "cpu_user_critical": 90.0,
             "cpu_user_log": ["False"],
             "cpu_user_warning": 70.0,
             "history_size": 1200.0},
     "diskio": {"diskio_disable": ["False"],
                "diskio_hide": ["loop.*", "/dev/loop.*"],
                "diskio_hide_zero": ["False"],
                "diskio_rx_latency_careful": 10.0,
                "diskio_rx_latency_critical": 50.0,
                "diskio_rx_latency_warning": 20.0,
                "diskio_tx_latency_careful": 10.0,
                "diskio_tx_latency_critical": 50.0,
                "diskio_tx_latency_warning": 20.0,
                "history_size": 1200.0},
     "folders": {"folders_disable": ["False"],
                 "folders_refresh": 60.0,
                 "history_size": 1200.0},
     "fs": {"fs_careful": 50.0,
            "fs_critical": 90.0,
            "fs_disable": ["False"],
            "fs_hide": ["/boot.*", ".*/snap.*"],
            "fs_refresh": 60.0,
            "fs_warning": 70.0,
            "history_size": 1200.0},
     "gpu": {"gpu_disable": ["False"],
             "gpu_mem_careful": 50.0,
             "gpu_mem_critical": 90.0,
             "gpu_mem_warning": 70.0,
             "gpu_proc_careful": 50.0,
             "gpu_proc_critical": 90.0,
             "gpu_proc_warning": 70.0,
             "gpu_temperature_careful": 60.0,
             "gpu_temperature_critical": 80.0,
             "gpu_temperature_warning": 70.0,
             "history_size": 1200.0},
     "help": {"history_size": 1200.0},
     "ip": {"history_size": 1200.0,
            "ip_disable": ["False"],
            "ip_public_api": ["https://ipv4.ipleak.net/json/"],
            "ip_public_disabled": ["True"],
            "ip_public_field": ["ip"],
            "ip_public_refresh_interval": 300.0,
            "ip_public_template": ["{continent_name}/{country_name}/{city_name}"],
            "ip_refresh": 60.0},
     "load": {"history_size": 1200.0,
              "load_careful": 0.7,
              "load_critical": 5.0,
              "load_disable": ["False"],
              "load_warning": 1.0},
     "mem": {"history_size": 1200.0,
             "mem_careful": 50.0,
             "mem_critical": 90.0,
             "mem_disable": ["False"],
             "mem_warning": 70.0},
     "memswap": {"history_size": 1200.0,
                 "memswap_careful": 50.0,
                 "memswap_critical": 90.0,
                 "memswap_disable": ["False"],
                 "memswap_warning": 70.0},
     "network": {"history_size": 1200.0,
                 "network_disable": ["False"],
                 "network_hide": ["docker.*", "lo"],
                 "network_hide_no_ip": ["True"],
                 "network_hide_no_up": ["True"],
                 "network_hide_zero": ["False"],
                 "network_rx_careful": 70.0,
                 "network_rx_critical": 90.0,
                 "network_rx_warning": 80.0,
                 "network_tx_careful": 70.0,
                 "network_tx_critical": 90.0,
                 "network_tx_warning": 80.0},
     "now": {"history_size": 1200.0},
     "percpu": {"history_size": 1200.0,
                "percpu_disable": ["False"],
                "percpu_iowait_careful": 50.0,
                "percpu_iowait_critical": 90.0,
                "percpu_iowait_warning": 70.0,
                "percpu_max_cpu_display": 4.0,
                "percpu_system_careful": 50.0,
                "percpu_system_critical": 90.0,
                "percpu_system_warning": 70.0,
                "percpu_user_careful": 50.0,
                "percpu_user_critical": 90.0,
                "percpu_user_warning": 70.0},
     "ports": {"history_size": 1200.0,
               "ports_disable": ["False"],
               "ports_port_default_gateway": ["True"],
               "ports_refresh": 30.0,
               "ports_timeout": 3.0},
     "processcount": {"history_size": 1200.0, "processcount_disable": ["False"]},
     "processlist": {"history_size": 1200.0,
                     "processlist_cpu_careful": 50.0,
                     "processlist_cpu_critical": 90.0,
                     "processlist_cpu_warning": 70.0,
                     "processlist_disable": ["False"],
                     "processlist_disable_stats": ["cpu_num"],
                     "processlist_mem_careful": 50.0,
                     "processlist_mem_critical": 90.0,
                     "processlist_mem_warning": 70.0,
                     "processlist_nice_warning": ["-20",
                                                  "-19",
                                                  "-18",
                                                  "-17",
                                                  "-16",
                                                  "-15",
                                                  "-14",
                                                  "-13",
                                                  "-12",
                                                  "-11",
                                                  "-10",
                                                  "-9",
                                                  "-8",
                                                  "-7",
                                                  "-6",
                                                  "-5",
                                                  "-4",
                                                  "-3",
                                                  "-2",
                                                  "-1",
                                                  "1",
                                                  "2",
                                                  "3",
                                                  "4",
                                                  "5",
                                                  "6",
                                                  "7",
                                                  "8",
                                                  "9",
                                                  "10",
                                                  "11",
                                                  "12",
                                                  "13",
                                                  "14",
                                                  "15",
                                                  "16",
                                                  "17",
                                                  "18",
                                                  "19"],
                     "processlist_status_critical": ["Z", "D"],
                     "processlist_status_ok": ["R", "W", "P", "I"]},
     "programlist": {"history_size": 1200.0},
     "psutilversion": {"history_size": 1200.0},
     "quicklook": {"history_size": 1200.0,
                   "quicklook_bar_char": ["โ–ช"],
                   "quicklook_cpu_careful": 50.0,
                   "quicklook_cpu_critical": 90.0,
                   "quicklook_cpu_warning": 70.0,
                   "quicklook_disable": ["False"],
                   "quicklook_gpu_mem_careful": 50.0,
                   "quicklook_gpu_mem_critical": 90.0,
                   "quicklook_gpu_mem_warning": 70.0,
                   "quicklook_gpu_proc_careful": 50.0,
                   "quicklook_gpu_proc_critical": 90.0,
                   "quicklook_gpu_proc_warning": 70.0,
                   "quicklook_list": ["cpu", "mem", "load"],
                   "quicklook_load_careful": 70.0,
                   "quicklook_load_critical": 500.0,
                   "quicklook_load_warning": 100.0,
                   "quicklook_mem_careful": 50.0,
                   "quicklook_mem_critical": 90.0,
                   "quicklook_mem_warning": 70.0,
                   "quicklook_swap_careful": 50.0,
                   "quicklook_swap_critical": 90.0,
                   "quicklook_swap_warning": 70.0},
     "sensors": {"history_size": 1200.0,
                 "sensors_battery_careful": 70.0,
                 "sensors_battery_critical": 90.0,
                 "sensors_battery_warning": 80.0,
                 "sensors_disable": ["False"],
                 "sensors_hide": ["unknown.*"],
                 "sensors_refresh": 10.0,
                 "sensors_temperature_core_careful": 45.0,
                 "sensors_temperature_core_critical": 80.0,
                 "sensors_temperature_core_warning": 65.0,
                 "sensors_temperature_hdd_careful": 45.0,
                 "sensors_temperature_hdd_critical": 60.0,
                 "sensors_temperature_hdd_warning": 52.0},
     "system": {"history_size": 1200.0,
                "system_disable": ["False"],
                "system_refresh": 60},
     "uptime": {"history_size": 1200.0},
     "version": {"history_size": 1200.0},
     "wifi": {"history_size": 1200.0,
              "wifi_careful": -65.0,
              "wifi_critical": -85.0,
              "wifi_disable": ["False"],
              "wifi_warning": -75.0}}

Limits/thresholds for the cpu plugin::

    # curl http://localhost:61208/api/4/cpu/limits
    {"cpu_ctx_switches_careful": 640000.0,
     "cpu_ctx_switches_critical": 800000.0,
     "cpu_ctx_switches_warning": 720000.0,
     "cpu_disable": ["False"],
     "cpu_iowait_careful": 50.0,
     "cpu_iowait_critical": 90.0,
     "cpu_iowait_warning": 70.0,
     "cpu_steal_careful": 50.0,
     "cpu_steal_critical": 90.0,
     "cpu_steal_warning": 70.0,
     "cpu_system_careful": 50.0,
     "cpu_system_critical": 90.0,
     "cpu_system_log": ["False"],
     "cpu_system_warning": 70.0,
     "cpu_total_careful": 65.0,
     "cpu_total_critical": 85.0,
     "cpu_total_log": ["True"],
     "cpu_total_warning": 75.0,
     "cpu_user_careful": 50.0,
     "cpu_user_critical": 90.0,
     "cpu_user_log": ["False"],
     "cpu_user_warning": 70.0,
     "history_size": 1200.0}

---

## File: docs/aoa/actions.rst

.. _actions:

Actions
=======

Glances can trigger actions on events for warning and critical thresholds.

By ``action``, we mean all shell command line. For example, if you want
to execute the ``foo.py`` script if the last 5 minutes load are critical
then add the ``_action`` line to the Glances configuration file:

.. code-block:: ini

    [load]
    critical=5.0
    critical_action=python /path/to/foo.py

All the stats are available in the command line through the use of the
`Mustache`_ syntax. `Chevron`_ is required to render the mustache's template syntax.

Additionaly to the stats of the current plugin, the following variables are
also available:
- ``{{time}}``: current time in ISO format
- ``{{critical}}``: critical threshold value
- ``{{warning}}``: warning threshold value
- ``{{careful}}``: careful threshold value

Another example would be to create a log file
containing used vs total disk space if a space trigger warning is
reached:

.. code-block:: ini

    [fs]
    warning=70
    warning_action=python /path/to/fs-warning.py {{mnt_point}} {{used}} {{size}}

.. note::

    For security reasons, Mustache-rendered values are sanitized: the
    characters ``&&``, ``|``, ``>`` and ``>>`` are replaced by spaces
    before execution. This prevents command injection through
    user-controllable data such as process names, container names or
    mount points.

    As a consequence, **shell operators (pipes, redirections, command
    chaining) cannot be used directly in action command lines**. If your
    action requires pipes, redirections or chained commands, write a
    shell script and call it from the action instead.

For example, to create a log file containing the total user disk
space usage for a device and notify by email each time a space trigger
critical is reached, create a shell script ``/etc/glances/actions.d/fs-critical.sh``:

.. code-block:: bash

    #!/bin/bash
    # Usage: fs-critical.sh <time> <device_name> 
    echo "$1 $2 $3" > /tmp/fs.alert
    python /etc/glances/actions.d/fs-critical.py

Then reference it in the configuration file:

.. code-block:: ini

    [fs]
    critical=90
    critical_action_repeat=/etc/glances/actions.d/fs-critical.sh {{time}} {{device_name}} {{percent}}

Within ``/etc/glances/actions.d/fs-critical.py``:

.. code-block:: python

    import subprocess
    from requests import get

    fs_alert = open('/tmp/fs.alert', 'r').readline().strip().split(' ')
    device = fs_alert[0]
    percent = fs_alert[1]
    system = subprocess.check_output(['uname', '-rn']).decode('utf-8').strip()
    ip = get('https://api.ipify.org').text

    body = 'Used user disk space for ' + device + ' is at ' + percent + '%.\nPlease cleanup the filesystem to clear the alert.\nServer: ' + str(system)+ '.\nIP address: ' + ip
    ps = subprocess.Popen(('echo', '-e', body), stdout=subprocess.PIPE)
    subprocess.call(['mail', '-s', 'CRITICAL: disk usage above 90%', '-r', '[email protected]', '[email protected]'], stdin=ps.stdout)

.. note::

    You can use all the stats for the current plugin. See
    https://github.com/nicolargo/glances/wiki/The-Glances-RESTFUL-JSON-API
    for the stats list.

It is also possible to repeat action until the end of the alert.
Keep in mind that the command line is executed every refresh time so
use with caution:

.. code-block:: ini

    [load]
    critical=5.0
    critical_action_repeat=/home/myhome/bin/bipper.sh

.. _Mustache: https://mustache.github.io/
.. _Chevron: https://github.com/noahmorrison/chevron

---

## File: docs/aoa/amps.rst

.. _amps:

Applications Monitoring Process
===============================

Thanks to Glances and its AMP module, you can add specific monitoring to
running processes. AMPs are defined in the Glances :ref:`configuration file<config>`.

You can disable AMP using the ``--disable-plugin amps`` option or pressing the
``A`` key.

Simple AMP
----------

For example, a simple AMP that monitor the CPU/MEM of all Python
processes can be defined as follows:

.. code-block:: ini

    [amp_python]
    enable=true
    regex=.*python.*
    refresh=3

Every 3 seconds (``refresh``) and if the ``enable`` key is true, Glances
will filter the running processes list thanks to the ``.*python.*``
regular expression (``regex``).

The default behavior for an AMP is to display the number of matching
processes, CPU and MEM:

.. image:: ../_static/amp-python.png

You can also define the minimum (``countmin``) and/or maximum
(``countmax``) process number. For example:

.. code-block:: ini

    [amp_python]
    enable=true
    regex=.*python.*
    refresh=3
    countmin=1
    countmax=2

With this configuration, if the number of running Python scripts is
higher than 2, then the AMP is displayed with a purple color (red if
less than countmin):

.. image:: ../_static/amp-python-warning.png

If the regex option is not defined, the AMP will be executed every refresh
time and the process count will not be displayed (countmin and countmax will
be ignored).

For example:

.. code-block:: ini

    [amp_conntrack]
    enable=false
    refresh=30
    one_line=false
    command=sysctl net.netfilter.nf_conntrack_count && sysctl net.netfilter.nf_conntrack_max

Note: for multiple command, please use the '&&'' separator.

For security reason, pipe is not directly allowed in a AMP command but you create a shell
script with your command:

.. code-block:: ini

    $ cat /usr/local/bin/mycommand.sh
    #!/bin/sh
    ps -aux | wc -l

and use it in the amps:

.. code-block:: ini

    [amp_amptest]
    enable=true
    regex=.*
    refresh=15
    one_line=false
    command=/usr/local/bin/mycommand.sh

User defined AMP
----------------

If you need to execute a specific command line, you can use the
``command`` option. For example, if you want to display the Dropbox
process status, you can define the following section in the Glances
configuration file:

.. code-block:: ini

    [amp_dropbox]
    # Use the default AMP (no dedicated AMP Python script)
    enable=true
    regex=.*dropbox.*
    refresh=3
    one_line=false
    command=dropbox status
    countmin=1

The ``dropbox status`` command line will be executed and displayed in
the Glances UI:

.. image:: ../_static/amp-dropbox.png

You can force Glances to display the result in one line setting
``one_line`` to true.

Security considerations
-----------------------

AMP ``command`` and ``service_cmd`` values are read verbatim from the
configuration file and executed. The execution helper interprets three
shell-like operators:

- ``&&`` to chain commands
- ``|`` to pipe one command output into the next one
- ``>`` to redirect the output to a file

These operators are convenient but mean that **anyone able to edit the
Glances configuration file can run arbitrary commands or write to arbitrary
files** through an AMP section.

For system services or any deployment where the configuration file is not
fully trusted, start Glances with the ``--disable-config-exec`` option. In
addition to disabling backtick command execution in configuration values,
this option makes AMP commands run as a single process: ``&&``, ``|`` and
``>`` are then treated as literal arguments and are no longer interpreted, so
an AMP command can neither chain commands, pipe, nor write to an arbitrary
file.

.. code-block:: console

    $ glances --disable-config-exec

Note: with ``--disable-config-exec`` set, AMP commands that rely on these
operators stop working. Move such logic into a dedicated shell script and
point the ``command`` option to that script instead.

Embedded AMP
------------

Glances provides some specific AMP scripts (replacing the ``command``
line). You can write your own AMP script to fill your needs. AMP scripts
are located in the ``amps`` folder and should be named ``glances_*.py``.
An AMP script define an Amp class (``GlancesAmp``) with a mandatory
update method. The update method call the ``set_result`` method to set
the AMP return string. The return string is a string with one or more
line (\n between lines). To enable it, the configuration file section
should be named ``[amp_*]``.

For example, if you want to enable the Nginx AMP, the following
definition should do the job (Nginx AMP is provided by the Glances team
as an example):

.. code-block:: ini

    [amp_nginx]
    enable=true
    regex=\/usr\/sbin\/nginx
    refresh=60
    one_line=false
    status_url=http://localhost/nginx_status

Here's the result:

.. image:: ../_static/amps.png

In client/server mode, the AMP list is defined on the server side.

---

## File: docs/aoa/cloud.rst

.. _cloud:

CLOUD
=====

This plugin displays information about the cloud provider if your host is running on OpenStack.

The plugin use the standard OpenStack `metadata`_ service to retrieve the information.

This plugin is disable by default, please use the --enable-plugin cloud option
to enable it.

.. image:: ../_static/cloud.png

.. _metadata: https://docs.openstack.org/nova/latest/user/metadata.html

---

## File: docs/aoa/connections.rst

.. _connections:

Connections
===========

.. image:: ../_static/connections.png

This plugin display extended information about network connections.

The states are the following:

- Listen: all ports created by server and waiting for a client to connect
- Initialized: All states when a connection is initialized (sum of SYN_SENT and SYN_RECEIVED)
- Established: All established connections between a client and a server
- Terminated: All states when a connection is terminated (FIN_WAIT1, CLOSE_WAIT, LAST_ACK, FIN_WAIT2, TIME_WAIT and CLOSE)
- Tracked: Current number and maximum Netfilter tracker connection (nf_conntrack_count/nf_conntrack_max)

The configuration should be done in the ``[connections]`` section of the
Glances configuration file.

By default the plugin is **disabled**. Please change your configuration file as following to enable it

.. code-block:: ini

    [connections]
    disable=False
    # nf_conntrack thresholds in %
    nf_conntrack_percent_careful=70
    nf_conntrack_percent_warning=80
    nf_conntrack_percent_critical=90

---

## File: docs/aoa/containers.rst

.. _containers:

Containers
==========

If you use ``containers``, Glances can help you to monitor your Docker, Podman,
or LXD containers. Glances uses the containers API through the `docker-py`_,
`podman-py`_, and `pylxd`_ libraries.

You can install this dependency using:

.. code-block:: console

    pip install glances[containers]

.. image:: ../_static/containers.png

Note: Memory usage is compute as following "display memory usage = memory usage - inactive_file"

It is possible to define limits and actions from the configuration file
under the ``[containers]`` section:

.. code-block:: ini

    [containers]
    disable=False
    # Only show specific containers (comma-separated list of container name or regular expression)
    show=thiscontainer,andthisone,andthoseones.*
    # Hide some containers (comma-separated list of container name or regular expression)
    hide=donotshowthisone,andthose.*
    # Show only specific containers (comma-separated list of container name or regular expression)
    #show=showthisone,andthose.*
    # Define the maximum containers size name (default is 20 chars)
    max_name_size=20
    # List of stats to disable (not display)
    # Following stats can be disabled: name,status,uptime,cpu,mem,diskio,networkio,ports,command
    disable_stats=command
    # Global containers' thresholds for CPU and MEM (in %)
    cpu_careful=50
    cpu_warning=70
    cpu_critical=90
    mem_careful=20
    mem_warning=50
    mem_critical=70
    # Per container thresholds
    containername_cpu_careful=10
    containername_cpu_warning=20
    containername_cpu_critical=30
    containername_cpu_critical_action=/etc/glances/actions.d/container-alert.sh {{Image}} {{Id}} {{cpu}} {{name}}
    # By default, Glances only display running containers
    # Set the following key to True to display all containers
    all=False
    # Define Podman sock
    #podman_sock=unix:///run/user/1000/podman/podman.sock

You can use all the variables ({{foo}}) available in the containers plugin.

.. note::

    Shell operators (``&&``, ``|``, ``>``, ``>>``) are **not allowed**
    directly in action command lines. If your action requires pipes or
    redirections, write a shell script and call it from the action.
    For example, create ``/etc/glances/actions.d/container-alert.sh``:

    .. code-block:: bash

        #!/bin/bash
        # Usage: container-alert.sh   <cpu> <name>
        echo "$1 $2 $3" > "/tmp/container_$4.alert"

    See :ref:`actions` for details.

Filtering (for hide or show) is based on regular expression. Please be sure that your regular
expression works as expected. You can use an online tool like `regex101`_ in
order to test your regular expression.

.. _regex101: https://regex101.com/
.. _docker-py: https://github.com/containers/containers-py
.. _podman-py: https://github.com/containers/podman-py
.. _pylxd: https://github.com/canonical/pylxd