Official plugin

Inventory true-up

Diff a CSV/JSON device inventory against your saved sessions — see what's new, changed, or missing, then apply selected changes.

What it does

Inventory true-up reconciles an external device inventory against the sessions you already have saved in TermZ. You produce the inventory file with your own tooling — an export from whatever you treat as your source of truth, such as an IPAM/DCIM (NetBox, Infoblox), an NMS (SolarWinds, Zabbix, LibreNMS), a CMDB, or even a spreadsheet — and the plugin diffs it against your saved sessions, grouping every record as new, changed, or missing. You review the diff and apply only the changes you want.

File format

The file is either CSV or JSON, with one record per device. The fields are the same either way.

FieldRequiredMeaning
nameYesUnique session name. This is the join key.
hostNoIP address or hostname.
portNoPort number.
usernameNoLogin user.
kindNossh · telnet · raw · serial · local (default ssh).
folder_pathNoPOSIX-style path, e.g. /DC1/Core.
equipment_typeNoEquipment type label.
tagsNoJSON: array of strings. CSV: ;-separated.
notesNoFree text.
external_idNoThe source system's stable device id (e.g. a NetBox/NMS/CMDB record id, serial number, or asset tag).

CSV

The first row is the header using the column names above (case-insensitive; extra columns are ignored).

name,host,port,username,kind,external_id
core01,10.30.1.5,22,admin,ssh,netbox:1204
edge-07,10.30.2.9,22,admin,ssh,netbox:1187

JSON

An array of objects, or a { "sessions": [...] } envelope:

[
  { "name": "core01", "host": "10.30.1.5", "port": 22, "username": "admin", "external_id": "netbox:1204" }
]

How matching works

  1. Records are joined to saved sessions by name — your session names are unique, so the name is the join key.
  2. The fields compared are host, port, username, and kind. A device whose IP changed but kept its name shows as Changed.
  3. external_id is optional. When present, the plugin learns external_id → session on a confirmed match (kept in the plugin's own storage), so a later rename still matches by id. Nothing needs to be staged ahead of time, and omitting external_id breaks nothing.

The Missing bucket — sessions absent from the file — is only shown when you tick “This file is a complete export.” A partial pull must never read as a mass decommission.

Permissions it uses

Like every TermZ plugin, Inventory true-up runs sandboxed and can only do what you grant it. It requests:

  • List sessions — read your saved session list (names, hosts, ports, usernames, folders) to build the diff. It never sees your passwords.
  • Modify sessions — add and update saved sessions when you apply changes. It never touches stored passwords or other vault secrets.
  • Read / write its storage — the plugin's own private data (such as the learned external_id → session map), isolated from other plugins and from your vault.

Back to all plugins · Plugins in the docs.