Design Philosophy
Atomic Design
netapi follows Atomic Design principles, where complex systems are built from simple, composable parts:
| Primitives |
The smallest building blocks (auth, http, parsers) |
| Protocols |
Transport-layer abstractions (RESTCONF, SSH) |
| Capabilities |
Vendor-agnostic operations (backup, monitor) |
| Vendors |
Platform-specific implementations (ISE, pfSense) |
| Workflows |
Orchestrated multi-step operations |
Zettelkasten Integration
Every component includes structured metadata linking to the Principia knowledge base:
"""
Cisco ISE ERS API Client.
---
uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
created: 2026-01-10T17:00:00Z
stability: stable
type: vendor
category: cisco/ise
tags: [cisco-ise, ers-api, rest, authentication]
dependencies:
primitives:
- primitives/auth/basic.py
- primitives/http/sync_client.py
principia:
concepts:
- principia:PRJ-ISE-HOME/ers-api.md
---
"""
Design Goals
-
Atomic Composability - Build complex operations from simple, tested primitives
-
Capability-First - Organize by what you DO (backup, monitor), not just who makes it
-
Principia Integration - Bidirectional links between knowledge and executable code
-
Secrets-Aware - Native dsec support across home/lab/staging/production
-
Zero TUI Dependencies - Pure library —
netapi-tuiconsumes this
Relationship to netapi-tui
# netapi-tui/pyproject.toml
[project]
dependencies = [
"netapi>=0.1.0", # This library
"textual>=0.86", # TUI framework
"rich>=13.9", # Terminal formatting
]
# Usage in netapi-tui
from netapi.vendors.cisco.ise import ERSClient
client = ERSClient.from_dsec('home.lab.ise.primary')
endpoints = client.endpoints.list()