Muninn
Muninn is a library that transforms unstructured network device CLI output into structured, type-hinted Python data structures.
Why Muninn?
- Standalone - No framework dependencies. Install and use it in any Python project.
- Simple API -
Muninn().parse(os, command, output)and you're done. - Well-tested - Every parser has test cases with platform and software version metadata.
- Type-aware - Import individual parsers to get
TypedDictreturn types that describe the parsed data structure, enabling IDE autocompletion and better AI-assisted coding. - Extensible - Load your own local parsers alongside built-in ones.
Installation
Muninn can be quickly and easily installed with uv as shown below:
uv add muninn-parsers
Or, if you prefer good old-fashioned pip, you can do so as shown below:
pip install muninn-parsers
Quick Examples
Auto-Discovering Parsers
Create a Muninn instance and call parse() with an OS identifier, the CLI command, and the raw output. Muninn automatically finds and runs the right parser:
from typing import Any
import muninn
mn = muninn.Muninn()
raw_output = """
Neighbor ID Pri State Dead Time Address Interface
10.1.1.1 1 FULL/DR 00:00:38 192.168.1.1 Ethernet1/1
10.1.1.2 1 FULL/BDR 00:00:33 192.168.1.2 Ethernet1/2
"""
result: dict[str, Any] = mn.parse("nxos", "show ip ospf neighbor", raw_output)
Returns:
{
"10.1.1.1": {
"priority": 1,
"state": "FULL/DR",
"dead_time": "00:00:38",
"address": "192.168.1.1",
"interface": "Ethernet1/1"
},
"10.1.1.2": {
"priority": 1,
"state": "FULL/BDR",
"dead_time": "00:00:33",
"address": "192.168.1.2",
"interface": "Ethernet1/2"
}
}
Using a Parser Directly
You can also import a specific parser and call it directly. This gives you access to the parser's TypedDict return type, which enables IDE autocompletion and helps AI coding assistants reason about the structure of the parsed data:
from muninn.parsers.nxos.show_ip_ospf_neighbor import (
ShowIpOspfNeighborParser,
ShowIpOspfNeighborResult,
)
raw_output = """
Neighbor ID Pri State Dead Time Address Interface
10.1.1.1 1 FULL/DR 00:00:38 192.168.1.1 Ethernet1/1
10.1.1.2 1 FULL/BDR 00:00:33 192.168.1.2 Ethernet1/2
"""
result: ShowIpOspfNeighborResult = ShowIpOspfNeighborParser.parse(raw_output)
# IDE autocompletion and type checking work here
Documentation
Full documentation is available at chartinolabs.github.io/Muninn.
- Changelog - Release history built from changelog fragments
- Changelog Fragments Guide - How to add release-note fragments
- Releasing - How to compile release notes and cut a release
Acknowledgments
- CLI output fixtures — Some test fixtures in this project use CLI output samples sourced from the Cisco Genieparser and Network to Code ntc-templates repositories.
- Schema inspiration — Parsed data schemas for some parsers were heavily inspired by the schema structures in the Cisco GenieParser repository.
Status
Early development. See the Design Philosophy page for project direction.
Metadata
Release files for muninn-parsers 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| muninn_parsers-0.7.0.tar.gz | 1.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| muninn_parsers-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.2 MB
Release files / muninn_parsers-0.7.0.tar.gz
| Download URL | muninn_parsers-0.7.0.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
25bd95877cf79d248dbe10924d15e2dce1cf69438b6f9ed8aac7cb747187bb3e
|
|
BLAKE2b-256 checksum How to use checksums |
63c7433c7833f7115725c921ba9d45b3fb7bfd5a3253bb428aa6142145c61054
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.
Transparency logRelease files / muninn_parsers-0.7.0-py3-none-any.whl
| Download URL | muninn_parsers-0.7.0-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
95fbf243226cc18ba418ca9c6cd936193f392ca091ffbfe9a45a395b773ec10c
|
|
BLAKE2b-256 checksum How to use checksums |
c2a11a07a899be270eb8800e0202aa5b6ff344accdebf18ff812dc028222efe2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.
Transparency log