tsnmp is the runtime package in the Trishul SNMP split.
tsmi is the optional compiler/enrichment producer.
This page is the canonical summary of how those two packages fit together, what compatibility is expected today, and what the current producer/runtime contract looks like.
The intended split is deliberate:
tsnmp
Protocol runtime, transport, manager API, thin CLI, optional enrichment consumertsmi
MIB parser/compiler that produces compiled JSON artifactstsnmp is designed to work without importing trishul-smi at runtime.
Core manager operations must still work when no bundle is loaded and when only
numeric OIDs are used.
Latest known released pairing for the current documented contract:
| Package | Version |
|---|---|
trishul-snmp |
0.1.1 |
trishul-smi |
0.4.3 |
What this pairing currently means in practice:
tsnmp runtime operations work with no tsmi package presentload_bundle(...)tsmi CLI and Python API can both emit optional bundle sidecarsThis is a compatibility window, not a forever-implicit promise for every future
JSON shape. If upstream JSON IR versioning changes, tsnmp should accept that
through an explicit compatibility path rather than by guesswork.
Today tsnmp accepts:
IF-MIB.jsonmanifest.jsonmanifest.json and oid_index.jsonImportant rule:
manifest.json is optional bundle metadataoid_index.json is optional reverse-lookup accelerationThat means this is a valid and supported runtime flow:
from trishul_snmp import load_bundle
bundle = load_bundle("./IF-MIB.json")
and so is this:
from trishul_snmp import load_bundle
bundle = load_bundle("./compiled-mibs")
If dependency modules are missing, the expected failure mode is reduced enrichment fidelity, not runtime breakage of core manager operations.
Use tsnmp alone.
This is the lightest path and the default operational baseline.
Compile one module and pass the resulting JSON file directly to tsnmp.
This is appropriate when you only care about a narrow subtree such as
IF-MIB::ifTable.
Example:
from trishul_snmp import V2cManager, load_bundle
bundle = load_bundle("./IF-MIB.json")
Compile a broader module set and load the directory.
This is the better fit when you want:
The main tsnmp/tsmi producer/runtime contract is now in a healthier state.
Current state with trishul-smi 0.4.3:
manifest.json, and oid_index.jsonmanifest.json and oid_index.json0.4.3 improve real-world compile coverage, but they do not change the tsnmp runtime input contractSo:
0.4.2tsnmp still should not make sidecars mandatory or couple itself to compiler internalstsnmp does not doTo keep the boundary clear, tsnmp currently does not do any of the following:
trishul-smi at runtimeIf non-tsmi JSON support becomes important later, it should land as an
explicit adapter contract or normalization layer, not as undocumented
best-effort ingestion.
At the current released pairing, the ecosystem is in a usable state:
tsmi CLI now matches the optional-sidecar bundle contract expected by tsnmptsmi 0.4.3 increase upstream compile coverage without widening the tsnmp runtime scopeFor deeper details, see: