SDK-first NetBox toolkit with Python SDK, CLI, and Textual TUIs
Project description
netbox-sdk
SDK-first NetBox integration package for Python automation, terminal workflows, and Textual UIs.
netbox-sdk is an SDK-first NetBox toolkit with terminal interfaces built on
one shared runtime:
netbox_cli— Typer command-line interfacenetbox_tui— Textual terminal applicationsnetbox_sdk— standalone REST API SDK shared by both
Published package names remain:
netbox-sdknetbox-console
Integration Package Details
netbox-sdk is an integration package, not a NetBox plugin. It is not installed
into NetBox with PLUGINS, does not add Django models or views, and does not
need a plugin config name. Its certification evidence therefore focuses on the
same quality criteria that apply to ecosystem packages: open-source licensing,
package metadata, API compatibility, tests, documentation, support channels, and
release maintainability.
| Area | Evidence |
|---|---|
| License | Apache-2.0 in LICENSE.txt and pyproject.toml package metadata |
| Package | netbox-sdk on PyPI, with netbox_sdk, netbox_cli, and netbox_tui import packages |
| Python | Python 3.11, 3.12, and 3.13 |
| NetBox API compatibility | Typed clients for NetBox 4.6, 4.5, 4.4, and 4.3; live CI against v4.6.1, v4.5.10, and v4.5.8 |
| Tests | Mock API suite, live NetBox suite, security tests, type checks, package metadata checks, and strict docs builds in GitHub Actions |
| Support | GitHub issues for bugs/features/docs requests; docs at https://emersonfelipesp.github.io/netbox-sdk/ |
Quick Start with the Demo Instance
Install:
pip install 'netbox-sdk[all]'
Authenticate against the public demo instance:
nbx demo init
Try a few commands:
nbx demo dcim devices list
nbx demo ipam prefixes list
nbx demo tui
nbx demo dev tui
Install
Current release documented on the docs site matches docs/snippets/package-version.txt (aligned with pyproject.toml). For the latest PyPI build you can omit the pin; add ==<version> to match that documentation snapshot.
Minimal SDK only:
pip install netbox-sdk
CLI:
pip install 'netbox-sdk[cli]'
TUI:
pip install 'netbox-sdk[tui]'
Everything:
pip install 'netbox-sdk[all]'
Pinned (same version as the docs site / package-version.txt):
pip install 'netbox-sdk[all]==0.0.9.post1'
With uv as a user tool:
uv tool install --force 'netbox-sdk[cli]'
Developer checkout:
git clone https://github.com/emersonfelipesp/netbox-sdk.git
cd netbox-sdk
uv sync --dev --extra cli --extra tui --extra demo
uv run nbx --help
Common Commands
nbx init
nbx dcim devices list
nbx dcim devices get --id 1
nbx tui
nbx dev tui
nbx cli tui
nbx logs
Architecture
netbox_sdkowns config, auth, caching, schema parsing, request resolution, shared formatting, and demo helpers.netbox_cliowns thenbxcommand tree and lazy-loadsnetbox_tuiwhere needed.netbox_tuiowns all Textual apps, themes, widgets, and TCSS.
Runtime Dependencies
Base SDK installs depend on aiohttp, pydantic, email-validator, rich, and
pyyaml. Optional extras add the terminal surfaces and local test tools:
cli: Typer-powerednbxcommand treetui: Textual terminal applicationsmock: FastAPI/uvicorn mock NetBox API for integration testsdemo: Playwright-powered demo setup automationbranching: semantic marker for NetBox Branching workflows; no extra runtime dependency is required today
External services are optional at runtime. The Python SDK can target any NetBox instance reachable over HTTPS/HTTP, and the local mock API can be used for offline tests.
netbox-sdk vs pynetbox
Contributor Workflow
uv sync --dev --extra cli --extra tui --extra demo
uv run pre-commit install --hook-type pre-commit --hook-type pre-push
uv run pre-commit run --all-files
uv run ty check netbox_sdk netbox_cli netbox_tui tests
uv run pytest
IDE Support
Open the repository in VS Code. When prompted, install the recommended
extensions (ms-python.vscode-pylance, ms-python.python,
charliermarsh.ruff). Pylance picks up types from all three packages
automatically — each ships a py.typed PEP 561 marker.
Type checking uses two gates: ty (Astral, fast, pre-commit + CI) and
pyright (Pylance-compatible, pre-commit). Both run at typeCheckingMode = "basic". To run them manually:
uv run ty check netbox_sdk netbox_cli netbox_tui tests
uv run pyright netbox_sdk netbox_cli netbox_tui
Release Process
Use a single GitHub release title pattern for every release:
netbox-sdk vX.Y.Z
Example:
gh release create v0.0.9.post1 \
--title "netbox-sdk v0.0.9.post1"
When cutting a release, bump pyproject.toml and netbox_sdk.__version__, then keep docs in sync: docs/snippets/package-version.txt, mkdocs.yml → extra.package_version, and the version strings in docs/snippets/documented-release-*.md and docs/snippets/pip-pinned-*.txt / uv-pinned-cli.txt. uv lock must reflect the new version. tests/test_docs_alignment.py asserts snippet and MkDocs metadata match pyproject.toml.
Project details
Release history Release notifications | RSS feed
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 netbox_sdk-0.0.9.post1.tar.gz.
File metadata
- Download URL: netbox_sdk-0.0.9.post1.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a4876dca2f327a8d18052bc15bdde717c7684f5b4b6dca0bdfa4616235a6187
|
|
| MD5 |
64c550bfccc387964dc4ba6bf5bddc33
|
|
| BLAKE2b-256 |
755023062f3db21b68b16eece492a209c06ab1ab3bf84556339376fb90e50f3d
|
File details
Details for the file netbox_sdk-0.0.9.post1-py3-none-any.whl.
File metadata
- Download URL: netbox_sdk-0.0.9.post1-py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
778a2975a2c6b29e704af36223e81114b10ac1b69483a4e3b9e0cadbedd713df
|
|
| MD5 |
bf7ec92e416185fe27d71c513dc88904
|
|
| BLAKE2b-256 |
5a630b33f8ddd4df79c95c73814d3a5fa0cd1d0f3092663ce4ddbc6f096fb407
|