Skip to main content

NetBox FMS -- Fiber Management System

Under active development -- alpha. netbox-fms is pre-1.0 and changing fast. Models, migrations, REST endpoints, and configuration keys may break between releases without deprecation cycles. Pin an exact version in production, expect to read the CHANGELOG before every upgrade, and back up your database before running migrations. Issue reports and PRs are very welcome.

A NetBox plugin for fiber cable management, splice planning, and circuit provisioning.

PyPI Python NetBox CI codecov Documentation License: AGPL-3.0

Define fiber cable construction as reusable blueprints, auto-instantiate components on cable creation, plan splices with diff computation and draw.io export, and provision end-to-end fiber circuits with DAG-based pathfinding -- all within NetBox's native UI and API.

Features

  • Cable type blueprints with auto-instantiation -- Define fiber cable construction once as a FiberCableType, then create instances that automatically populate buffer tubes, ribbons, strands, and cable elements following NetBox's Device/DeviceType pattern.
  • Four construction cases -- Loose tube, ribbon-in-tube, central-core ribbon, and tight buffer cable designs with full template-driven instantiation.
  • EIA/TIA-598, ABNT NBR 14771, and DIN IEC 60304 color schemes -- Each FiberCableType selects the strand color standard applied when instances are created; tube and ribbon template color pickers follow the selected standard.
  • Per-wavelength loss budgeting -- Attach manufacturer max-attenuation specs (dB/km) to each FiberCableType at any wavelength. FiberCircuitPath.calculated_loss_db computes per-wavelength losses across the full cable path from spec values and each cable's glass_length.
  • Splice planning -- Map strand-to-strand connections in splice closures, compute diffs against live state, and export diagrams to draw.io for field crews.
  • Fiber circuit provisioning -- End-to-end provisioning with DAG-based pathfinding and multi-hop tracing.
  • Provider span awareness -- The trace engine crosses core Circuits cabled inline (leased dark fiber through a provider meet-me room) as opaque hops; each fiber circuit tracks the provider circuits it rides, with provider/circuit impact filters and deletion protection.
  • Device fiber overview -- Per-device fiber connection view, splice closure management with tray and group organization.
  • Slack loop tracking -- Record slack loop locations and storage methods at splice closures, with insert-into-closure workflows.
  • Port label templates -- FMS-provisioned FrontPorts and RearPorts carry human-readable labels (cable, tube, ribbon, strand color, absolute fiber number) rendered from sandboxed Jinja2 templates, customizable plugin-wide through PLUGINS_CONFIG and refreshed automatically when the cable is relabeled.
  • Port name templates -- Optional front_port_name_template / rear_port_name_template settings render write-once port names with the same token set; a rendered set that would not fit the dcim column or would not be unique on the device falls back to the pk-based grammar with a warning, so a cable end is never half-named.
  • Full REST API and GraphQL -- All models exposed via NetBox's standard API framework.

Compatibility

Plugin version NetBox version Python
0.3.x-0.5.x 4.5-4.7 3.12-3.14

Installation

pip install netbox-fms

In your NetBox configuration.py:

PLUGINS = [
    "netbox_fms",
]

Run migrations and restart NetBox:

cd /opt/netbox/netbox
python manage.py migrate
sudo systemctl restart netbox netbox-rq

Configuration

netbox-fms has no required PLUGINS_CONFIG entries. See Configuration for optional settings.

Documentation

Full documentation: jsenecal.github.io/netbox-fms

netbox-fms is part of a three-plugin set that models the full optical transport stack:

  • netbox-pathways -- physical cable plant documentation with PostGIS. Models conduits, aerial spans, structures (poles, manholes, cabinets), and the geographic routes NetBox cables traverse. FMS describes what is inside a fiber cable and how strands are spliced; Pathways describes where the cable physically runs.
  • netbox-wdm -- WDM (Wavelength Division Multiplexing) device management. Models ITU channel plans, ROADM mappings, and wavelength services that ride on top of the fiber circuits FMS provisions.

Contributing

PRs welcome. Use conventional-commits PR titles (feat:, fix:, chore:, docs:, ...) -- release-drafter assembles release notes from them. Run make setup after cloning to install dev dependencies and the pre-commit hooks (including the AI-attribution-rejecting commit-msg hook).

For questions and discussion, join the #netbox channel on the NetDev Community Slack.

License

GNU Affero General Public License v3.0.

Metadata

Release files for netbox-fms 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for netbox-fms 0.5.1
File Size Uploaded
netbox_fms-0.5.1.tar.gz 372.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for netbox-fms 0.5.1
File Interpreter ABI Platform
netbox_fms-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 706.8 kB

Release files / netbox_fms-0.5.1.tar.gz

Download URL netbox_fms-0.5.1.tar.gz
Size 372.9 kB
Tags Source
SHA-256 checksum
How to use checksums
486c926c7e2d34928a4f2130d87abfddcdec0fed9fcaf598e20f228b5bb6eeb1
BLAKE2b-256 checksum
How to use checksums
e572d1a1e83aa49d57aafdbf145570d26b6f307d302aac094a1981259ebfe94c
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 Oct 5, 2026.

Transparency log

Release files / netbox_fms-0.5.1-py3-none-any.whl

Download URL netbox_fms-0.5.1-py3-none-any.whl
Size 333.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a58ebf09ab2a6d7aa31bfb069aa5f9a8d1966f078b0444c387bd732bd80ea0d
BLAKE2b-256 checksum
How to use checksums
b54faf09169f7b90ff1958bdfd8655c462b01a885c3dd3a76a24a3537ce6e03a
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 Oct 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page