A modern SNMP runtime toolkit with optional compiled-JSON MIB enrichment
Project description
trishul-snmp
A modern SNMP runtime, manager, and simulator toolkit written in Python.
trishul-snmp (tsnmp) is a package-first SNMP runtime for manager-side use,
notification handling, and narrow simulator-style responder flows. It keeps the
protocol runtime independent from MIB compilation and uses compiled JSON
artifacts only when symbolic enrichment is desired.
For the canonical tsnmp/tsmi split, tested version pairing, and current
ecosystem status, see Ecosystem and Compatibility.
The split with trishul-smi (tsmi) is intentional:
tsnmpRuntime, transport, manager API, thin CLI, optional enrichment consumertsmiParser/compiler that produces compiled JSON artifacts
The primary product is the importable Python package. The CLI is intentionally thin and secondary.
Features
- async-first Python API
- SNMPv2c manager runtime
- read-only operations:
getget_nextget_bulkwalkbulkwalk
- outbound SNMPv2c trap and inform send
- inbound SNMPv2c trap and inform listen
- offline notification decode
- narrow read-only SNMPv2c responder / simulator
- simulation rules for dynamic OID values (counters, gauges, uptime, timestamps)
- bundle-backed auto-population of simulator object sets
- in-memory MIB bundle iteration and substring search
- JSON-safe notification event serialization
- in-tree BER / ASN.1 / SNMPv2c wire codec
- UDP transport and request dispatcher
- optional symbolic translation and display enrichment from compiled JSON MIB artifacts
- works with numeric OIDs and no MIB bundle loaded
Scope
Current main-branch baseline:
- manager operations plus notification send/listen/decode
- narrow read-only responder / simulator support
- SNMPv2c-only
- read-only operations only
- async-first Python API first, CLI second
- optional compiled-JSON enrichment via
tsmiartifacts - no runtime dependency on
trishul-smi
Deliberately deferred:
- raw MIB file or raw MIB directory ingestion
pysnmpAPI compatibility shims- direct runtime dependency on the
trishul-smiPython package - sync wrapper
- SNMPv1
- SNMPv3
set- full agent framework
- writable responder support
- compiler workflows inside
tsnmp
Installation
pip install trishul-snmp
For local development:
pip install -e .[dev]
Requires Python >=3.10.
Quick Start
Numeric GET with no bundle:
import asyncio
from trishul_snmp import V2cManager
async def main() -> None:
async with V2cManager(host="10.0.0.10", community="public") as manager:
response = await manager.get("1.3.6.1.2.1.1.3.0")
for varbind in response.varbinds:
print(varbind.oid_str, varbind.value_type, varbind.display_value)
asyncio.run(main())
Symbolic GET with a compiled JSON bundle:
import asyncio
from trishul_snmp import V2cManager, load_bundle
bundle = load_bundle("./IF-MIB.json")
async def main() -> None:
async with V2cManager(
host="10.0.0.10",
community="public",
bundle=bundle,
) as manager:
response = await manager.get("IF-MIB::ifDescr.1")
for varbind in response.varbinds:
print(varbind.display_name, "=", varbind.display_value)
asyncio.run(main())
Documentation
- Documentation Index — entry point for package docs
- Getting Started — install, first requests, and runtime flows
- Ecosystem and Compatibility —
tsnmp/tsmisplit, tested pairing, bundle inputs, ecosystem status - Python API — manager, notify, responder, and public runtime types
- CLI Reference — polling, notification, and offline decode commands
- Configuration — manager, notify, responder, and bundle/runtime knobs
- Architecture — layering, package structure, and call flows
- Bundle Contract — compiled JSON inputs, sidecars, validation, scope
- Roadmap — shipped scope and deferred work
- Contributing — dev setup and quality gates
- Changelog — version history
- v0.1.0 Release Notes — archived initial release notes
- v0.1 Design Plan — historical planning and design doc
Repository Layout
trishul_snmp/Package sourcetests/Test suitedocs/Application and design documentationdocs/archive/Archived planning and historical release notesREADME.mdRepository/GitHub landing page
Community
Canonical package docs live under docs/. GitHub/community entry
points live under .github/.
Development
Checks used in this repo:
python3 -m pytest -q
python3 -m ruff check .
python3 -m ruff format --check trishul_snmp tests
python3 -m mypy
License
MIT — see LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file trishul_snmp-0.3.1.tar.gz.
File metadata
- Download URL: trishul_snmp-0.3.1.tar.gz
- Upload date:
- Size: 111.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f2615acfba1079481cb6c7cf3d3219c63d31033b154a7005b3cbba019950cf9
|
|
| MD5 |
b962134b169d6d5ffad13b07ea5d489d
|
|
| BLAKE2b-256 |
c426a3aaa831905ff604f0489180265f6c434c63a0c3e97c89be9283a587f7d0
|
Provenance
The following attestation bundles were made for trishul_snmp-0.3.1.tar.gz:
Publisher:
release.yml on tosumitdhaka/trishul-snmp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
trishul_snmp-0.3.1.tar.gz -
Subject digest:
4f2615acfba1079481cb6c7cf3d3219c63d31033b154a7005b3cbba019950cf9 - Sigstore transparency entry: 1549699945
- Sigstore integration time:
-
Permalink:
tosumitdhaka/trishul-snmp@abcdc74df4f6599141d8ba78400f3f9abc452052 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/tosumitdhaka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@abcdc74df4f6599141d8ba78400f3f9abc452052 -
Trigger Event:
push
-
Statement type:
File details
Details for the file trishul_snmp-0.3.1-py3-none-any.whl.
File metadata
- Download URL: trishul_snmp-0.3.1-py3-none-any.whl
- Upload date:
- Size: 49.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eef011942f80dd03e9256d0efe52e0f87e3f2c02261aae1523a91411e1f5c436
|
|
| MD5 |
a3ef02e0c54ce054cb6736454249979f
|
|
| BLAKE2b-256 |
45624ccb2bb2a411de392131c2e2574db96acc22eba7a04d3e98322771a0f39a
|
Provenance
The following attestation bundles were made for trishul_snmp-0.3.1-py3-none-any.whl:
Publisher:
release.yml on tosumitdhaka/trishul-snmp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
trishul_snmp-0.3.1-py3-none-any.whl -
Subject digest:
eef011942f80dd03e9256d0efe52e0f87e3f2c02261aae1523a91411e1f5c436 - Sigstore transparency entry: 1549699960
- Sigstore integration time:
-
Permalink:
tosumitdhaka/trishul-snmp@abcdc74df4f6599141d8ba78400f3f9abc452052 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/tosumitdhaka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@abcdc74df4f6599141d8ba78400f3f9abc452052 -
Trigger Event:
push
-
Statement type: