Skip to content

0.24.14¤

BUGS¤

  1. Fixed Netbox get_interfaces raising KeyError with cache="force" when a requested interface was missing from the cached device data. Incomplete cache entries now trigger a fresh fetch.
  2. Fixed Netbox get_topology ignoring device_regex because it used an unsupported API filter. Device selection now uses name__regex, while directly connected neighbors remain included in the topology.

FEATURES¤

  1. Added Netbox move_ip task to move all source-interface IP addresses to another device interface, with dry-run, branching, and NFCLI support. Source primary references are cleared; is_primary=True replaces destination primaries with moved addresses.
  2. Added move_ip support to Netbox design_deploy through top-level and nested interface IP address wrappers.

ENHANCEMENTS¤

  1. Enhanced NFCLI show norfab workers with a compact table showing service, status, uptime, RAM, CPU, and total retained jobs, using readable column titles. Worker get_stats now includes total job counts and counts by status.
  2. Removed obsolete FastAPI /api/job handlers and unused job response models. Synchronous /api/job/run and generated service-task endpoints remain available.
  3. Refactored sync_vrrp to support shared VIP addresses across VRFs, normalize VIP roles to vrrp, and added vip_use_vrf=False to optionally assign new VIPs to an existing VRF. Bulk updates reduce API requests; dry-run previews retain the per-device action structure used by sync orchestration.
  4. Updated dependency pins:
  5. pyzmq: 27.1.0 -> 27.2.0.
  6. tornado: 6.5.7 -> 6.5.10.
  7. pydantic: 2.13.4 -> 2.14.1.
  8. orjson: 3.11.9 -> 3.13.0.
  9. python-dotenv: 1.2.2 -> 1.2.4.
  10. gitpython: 3.1.61 -> 3.2.1.
  11. nornir: 3.5.0 -> 3.6.0.
  12. napalm: 5.1.0 -> 5.2.0.
  13. netmiko: 4.7.0 -> 4.8.0.
  14. nornir-napalm: 0.5.0 -> 0.6.0.
  15. nornir-scrapli: 2025.1.30 -> 2026.10.13.
  16. ntc-templates: 9.2.0 -> 9.3.0.
  17. lxml: 6.1.1 -> 6.1.3.
  18. mcp: 1.28.1 -> 1.30.0.
  19. robotframework: 7.4.2 -> 7.5.
  20. langchain: 1.3.14 -> 1.4.6.
  21. langchain-core: 1.5.1 -> 1.6.12.
  22. langchain-openai: 1.4.1 -> 1.7.2.
  23. langchain-anthropic: 1.5.2 -> 1.7.6.
  24. langchain-mcp-adapters: 0.3.0 -> 0.3.2.
  25. langgraph: 1.2.9 -> 1.2.16.
  26. ollama: 0.6.2 -> 0.6.3.
  27. fastembed: 0.8.0 -> 0.9.0.
  28. qdrant-client: 1.18.0 -> 1.19.1.
  29. datamodel-code-generator: 0.71.0 -> 0.85.0.
  30. langgraph-checkpoint-sqlite: 3.1.0 -> 3.1.2.
  31. fastapi: 0.140.0 -> 0.143.3.
  32. uvicorn: 0.51.0 -> 0.54.0.
  33. pygments: 2.19.2 -> 2.21.0.

0.24.13¤

BUGS¤

  1. Fixed Netbox create_ip, including calls from design_deploy, allocating another address when the requested interface already had an IP within the selected prefix with an empty or different description. Interface reuse now prefers an exact description match, otherwise reuses the sole candidate, including anycast and VIP addresses. Ambiguous candidates fail instead of allocating another address.
  2. Fixed Netbox create_ip reporting a newly allocated address as unchanged when no subsequent metadata or device updates were needed. The task now preserves its created status so design_deploy includes the address in its creation results.

  3. Fixed NFCLI Nornir diagrams producing empty graphs because platform filters used template filenames, collected output used the wrong TTP template name, and template command settings such as prompt preservation were ignored. Platform filters now accept strings and lists with case-insensitive matching across operating systems, and collection skips platforms with no matching hosts.

ENHANCEMENTS¤

  1. Netbox sync_all and check_device_sync now expose the same nine sync categories, including BGP communities and excluding MAC addresses. Per-device results retain every category, with False for failures and None for disabled or unexecuted stages. Both tasks return child dry-run diffs keyed by category, and drift checks propagate child failures and failed resources. Standalone MAC address synchronization remains available.

0.24.12¤

BUGS¤

  1. Fixed Netbox worker startup failing with AttributeError when ssl_verify is enabled or omitted. Removed the unsupported urllib3 enable_warnings call; SSL warnings are only disabled when ssl_verify is False.
  2. Fixed client job dispatch omitting the configured timeout from worker requests, causing workers to use a 60-second fallback. Workers now receive the submitted timeout, preventing premature timeout checks during long-running tasks such as Netbox design_deploy and its nested IP allocations.
  3. Fixed generated FastAPI task endpoints passing request-body timeout as a task argument instead of a job option. The timeout now controls job execution and client waiting, defaulting to 600 seconds.
  4. Removed the unused retry job option from generated Netbox FastAPI request schemas; it did not control job result polling.

ENHANCEMENTS¤

  1. Added Job.check_timeout() method to NorFab job object
  2. Netbox design_deploy checks the job timeout at preparation and collection boundaries, stops with a timeout error, and retains completed collection results. Running calls are not interrupted.

0.24.11¤

BUGS¤

  1. Fixed Netbox sync_vrrp rejecting a later-discovered peer because its VIP was already assigned to another device's FHRP group. The task now discovers groups through VIP ownership and reuses groups with matching VIP, VRRP ID, protocol, and authentication. Groups with peers outside the selected devices retain their existing names.

0.24.10¤

ENHANCEMENTS¤

  1. Netbox design_deploy matches existing device roles by slug, using an explicit slug when supplied or the existing slugify utility on the role name. Name case differences now reuse the matching role.
  2. Netbox design_deploy connection records accept a tenant name string, such as tenant: demo, for cable creation and updates. Existing tenant reference dictionaries remain supported.
  3. Netbox create_bgp_peering accepts an existing tenant name in single-session mode and individual bulk entries, including design peerings. Reverse sessions inherit the tenant; existing sessions remain unchanged.
  4. Containerlab deploy_netbox accepts an optional branch argument to build a lab topology from devices and connections in a named NetBox branch.
  5. Netbox design_deploy config contexts accept a tenants list of tenant names, resolving them to IDs and adding associations on updates. Unknown tenant names produce an error.
  6. Nornir nornir_inventory_load_containerlab accepts load_netbox as a boolean or dictionary of Netbox inventory options to enrich imported host data while preserving Containerlab connection settings. Enabled loading requests all supported host data by default, ignoring worker Netbox settings; dictionaries override these defaults. Optional load_netbox_branch and load_netbox_instance automatically enable loading and select the branch and instance, overriding Netbox options. Dry runs can preview the enriched inventory. The task docstring documents every argument, its default, enrichment options, and inventory update behavior.
  7. NFCLI netbox sync all accepts an inline JSON object for sync-kwargs, alongside existing file URLs.

BUGS¤

  1. Fixed NetBox get_containerlab_inventory ignoring tenant selection when NetBox does not recognize the tenant__name device filter. The task now resolves the tenant by name and filters by tenant ID, including for branch reads.
  2. Fixed Netbox create_prefix dry-run next-available allocation rejecting suitable ranges when the first available range was too small. The search now checks all returned ranges and selects the first child that fits the requested prefix length, using that range's network address instead of the parent address. This also fixes the availability check used by create_ip with mask_len.
  3. Fixed Netbox design_deploy raising a missing-site error when updating an existing device without a site in its design record. Omitted site preserves the existing assignment.
  4. Fixed Containerlab deploy_netbox reusing port mappings from nodes with the same name in other labs. Port mappings are now reused only from the target lab.
  5. Fixed Containerlab lab-name completion emitting inspection progress events in NFCLI. The get_running_labs lookup now performs silent inspection.
  6. Fixed Containerlab inspect raising a TypeError when a failed inspection returned no result. destroy_lab now preserves the underlying inspection errors.

0.24.9¤

ENHANCEMENTS¤

  1. Netbox design_deploy supports dry_run_render to return rendered design text before YAML parsing, flattening, validation, or deployment, with dry_run=True in the result. Dictionary designs return unchanged.
  2. Netbox design_deploy matches devices by name only, allowing site and tenant updates for uniquely named devices. Tenant is used only to disambiguate duplicate names; unresolved matches fail instead of creating another device.

0.24.8¤

BUGS¤

  1. Fixed Netbox sync_device_interfaces clearing interface mode without clearing existing VLAN assignments. The update now clears the untagged VLAN and tagged VLAN list in the same request.
  2. Fixed Netbox sync_device_ip reporting duplicate non-shared IP errors for parsed live anycast addresses. Discovered anycast host addresses now extend the task's anycast ranges before overlap reconciliation.

ENHANCEMENTS¤

  1. Netbox sync_device_interfaces supports optional batch_fallback to retry failed create and update batches one interface at a time, report per-interface errors in results, logs, and events, and continue with subsequent bulk batches. Defaults to False.
  2. Netbox create_asn reuses range allocations by role and any supplied site. Explicit ASN numbers take precedence. With a range, role/site lookup takes precedence over description lookup. No match allocates the next available ASN. Multiple matches raise an error.
  3. Netbox design_deploy supports nested create_asn wrappers in BGP peering local_as and remote_as fields, allocating or reusing ASNs before session creation.

0.24.7¤

ENHANCEMENTS¤

  1. NetBox design_deploy extracts named VLAN definitions from nested and top-level L2VPN terminations and deploys them before attachment.
  2. NetBox design_deploy supports query filters in VRF and L2VPN import/export route-target lists to attach existing matches.
  3. NetBox object and multiobject custom fields resolve IP addresses by address, prefixes by prefix, BGP communities by value, circuits by CID, and device types by model. Other related objects use name; references must match exactly one object. The ACME design demonstrates single and multiple IP references on a device using dedicated seeded custom fields and IP addresses.

BUGS¤

  1. Fixed NetBox sync_vlans submitting duplicate names for different VIDs in the same scope. Later conflicting changes are skipped before bulk writes, and skipped creations are removed from interface targets.

0.24.6¤

BUGS¤

  1. Fixed NetBox create_bgp_peering ASN queries using a role name directly as a NetBox filter. The role value in local_as_query and remote_as_query is now slugified before lookup.
  2. Fixed NetBox create_bgp_peering attempting to create existing sessions when their names differ and repeated sessions within one bulk request. Sessions now match by device name, local and remote IP addresses, and local and remote ASN numbers before resolving object references.
  3. Fixed NetBox create_bgp_peering failing the entire task when a requested device does not exist. Existing-session lookup now excludes unknown devices so their sessions are skipped with an error.

ENHANCEMENTS¤

  1. NetBox design_deploy now creates or updates top-level and inline BGP peer groups before peerings. BGP peering import and export policies now accept names as well as inline dictionaries.
  2. NetBox create_bgp_peering checks for duplicate sessions using device names, IP addresses, and ASN numbers before resolving object references.

CHANGES¤

  1. NetBox design_deploy now defaults BGP peerings to create_reverse: false; set it to true to create the reverse session.

0.24.5¤

BUGS¤

  1. Fixed inventory construction from a dictionary consuming the caller's configuration. The same dictionary can now be reused to create multiple inventories.
  2. Invalid inventory hooks now fail inventory loading with the attach point and function in the error, preventing startup without a configured hook.
  3. Fixed NetBox design_deploy failing to flatten route-target custom function records without a name. Custom function records in route targets, VRRP groups, and console and power port collections now pass through flattening unchanged.
  4. Fixed NetBox design_deploy lookup preparation treating custom function records as ordinary objects. Every ordinary top-level collection can now mix object definitions and custom functions without requiring the custom records to supply object lookup fields.
  5. Fixed NetBox design_deploy dry runs reporting a device local context update for devices that do not yet exist and were skipped.
  6. Fixed NetBox sync_bgp_peerings failing after creates when matched NetBox BGP sessions have no name. Sync now updates all matched sessions by NetBox ID, and update_bgp_peering accepts IDs in bulk updates while retaining name-based selection.
  7. Fixed NetBox create_ip leaving a device's primary IP unchanged when is_primary=True is requested for an IP already assigned to its interface. The task now sets the matching IPv4 or IPv6 primary IP without saving an unchanged IP record.
  8. Fixed NetBox create_ip ignoring the requested IP status. New and existing IP addresses now receive the requested status when it differs from their current value.
  9. Fixed starting an existing FakeNOS network loses control of the old process issue

ENHANCEMENTS¤

  1. NetBox create_ip now includes link peer allocation errors in its result after allocating the local IP, including errors raised by the peer task.

0.24.4¤

ENHANCEMENTS¤

  1. NetBox create_bgp_peering now uses default in generated session names when no VRF is supplied. This changes the name only; it does not assign a VRF to the session.
  2. NetBox create_bgp_peering now accepts separate local_as_query and remote_as_query NetBox ASN filters, including per-session filters in bulk requests. Device data paths through asn_source are no longer supported.
  3. NetBox create_bgp_peering now accepts local_ip_query and remote_ip_query filters to find existing IP addresses, including by device and interface names, before creating individual or bulk sessions.
  4. NetBox sync_device_ip now allows duplicate VIP addresses across interfaces in one sync, matching anycast behavior. The VIP role may come from live data or an existing NetBox IP.
  5. NetBox create_ip now supports one-based ip_index selection, including both usable addresses of a /31. Existing interface and VRRP-group assignments are reused before the index is considered. An indexed address already in NetBox can be duplicated for the anycast or VIP role. Without ip_index, normal allocation uses the next available address and sets the requested role.

0.24.3¤

BUGS¤

  1. Fixed NetBox check_device_sync reporting devices out of sync when neither the live device nor NetBox has VRRP assignments.

ENHANCEMENTS¤

  1. NetBox sync_vrrp now includes NetBox-only assignments in the diff's delete list, so dry runs and check_device_sync report VRRP drift. Regular sync runs leave those assignments in NetBox and report no applied deletions.
  2. NetBox create_asn now adds supplied sites, tags, and custom-field list values to an existing ASN without removing its current values. Object and multiobject custom fields accept related object names or IDs; missing or ambiguous names fail.
  3. NetBox create_ip now resolves names in object and multiobject custom fields and adds new custom-field list values when reusing an existing IP address.
  4. NetBox create_prefix now resolves names in object and multiobject custom fields and adds new tags and custom-field list values when updating an existing prefix.
  5. NetBox create_vlan now resolves names in object and multiobject custom fields and adds new tags and custom-field list values when updating an existing VLAN.
  6. NetBox create_bgp_peering now resolves named object and multiobject custom-field references for new sessions. A session that already exists is reported under exists and left unchanged.
  7. NetBox update_bgp_peering now adds supplied tags and custom-field list values to existing sessions, resolves named custom-field object references, and includes these changes in dry-run diffs.
  8. NetBox design_deploy now creates and updates L2VPNs and their interface or VLAN terminations, accepts inline L2VPN route targets and terminations, and deduplicates route targets by name. Its processors resolve named object and multiobject custom-field references on creates and updates; updates add tags, custom-field list values, and supported relationship members such as ASN sites, VRF route targets, interface VLANs, BGP policies, and config context sites. Designs can use create_bgp_peering for new sessions and update_bgp_peering for existing ones.

0.24.2¤

ENHANCEMENTS¤

  1. NetBox check_device_sync now accepts per-task sync_kwargs inline or from an nf:// YAML file, allowing each dry-run synchronizer's filtering, mapping, and comparison options to be configured independently.
  2. NetBox create_prefix can associate an existing VLAN using vlan (VID) and vlan_group (group name), including updates and dry-run diffs. Both arguments are required together; a site cannot replace the VLAN group.

  3. NetBox create_ip accepts vrrp_group to allocate and reuse virtual IP addresses assigned to an existing VRRP group by name, with dry-run support.

BUGS¤

  1. Fixed NetBox IP address synchronization reporting duplicate-IP conflicts for virtual addresses already assigned to FHRP groups.
  2. Fixed NetBox BGP peering synchronization filtering existing NetBox sessions before five-tuple identity comparison or collapsing same-name sessions, which could classify an existing session as a create instead of an update. Synchronization now reads every NetBox session directly, keys both datasets by the device, local address, local ASN, remote address, and remote ASN tuple, and applies session filters only to live data.
  3. Fixed NetBox VRF synchronization reporting route-target and routing-policy updates with identical old and new values when NetBox already contained every live value plus additional associations. Additive associations are now merged before comparison, so NetBox-only values are retained and the VRF is reported as in sync.
  4. Fixed NetBox BGP peering synchronization silently accepting requested devices that do not exist in NetBox. Missing devices are now reported while valid devices in the same request continue to synchronize.

  5. Fixed IPv4 /32 and IPv6 /128 create_ip allocations with default peer settings by automatically skipping peer creation and peer-subnet reuse.

CHANGES¤

  1. NetBox sync_device_ip now excludes live addresses labelled vrrp, glbp, hsrp, or carp, as well as matching NetBox IPs assigned to non-interface objects. FHRP synchronization tasks own those addresses; sync_vrrp creates or reuses VRRP IPs and assigns them to FHRP groups.
  2. NetBox sync_all now runs sync_vrrp after IP address synchronization and before BGP peering synchronization.
  3. NetBox get_bgp_peerings now reports an error when multiple BGP sessions on a device share the same name. Its name-keyed response keeps the first session and skips later duplicates.
  4. Rewrote the Netbox design deployment engine around ordered object handlers and bulk pynetbox creates and updates, with nested device definitions, next-available allocations, custom functions, and configuration contexts. Previous design syntax is not backward compatible. See the design deployment documentation.
  5. NetBox create_ip now interprets role in a prefix filter dictionary as a role name instead of a slug, resolves it to role_id, and reports an error if the role does not exist. Existing filters using role slugs must use the corresponding role names.

0.24.1¤

ENHANCEMENTS¤

  1. NetBox VRF synchronization now exits early when the complete diff contains no actionable changes, avoiding unnecessary approval and write preparation for already synchronized resources. Live results use a defined action-summary structure and include every resolved NetBox device in the interface section.
  2. NetBox device inventory synchronization live results now use the shared typed action-summary structure per device.
  3. NetBox interface synchronization live results now use the shared typed action-summary structure per device.
  4. NetBox MAC address synchronization live results now use the shared typed action-summary structure per device, including an explicit empty deleted list.
  5. NetBox IP address synchronization live results now use the shared typed action-summary structure per device, including an explicit empty deleted list.
  6. NetBox prefix synchronization live results now use the shared typed action-summary structure, including an explicit empty deleted list.
  7. NetBox VLAN synchronization live results now use typed action-summary mappings for VLAN scopes and device interfaces.
  8. NetBox VRRP synchronization live results now use the shared typed action-summary structure per device.
  9. NetBox BGP peering synchronization live results now use the shared typed action-summary structure per device.
  10. NetBox BGP ASN synchronization live results now use the shared typed action-summary structure for global actions.
  11. NetBox BGP community synchronization live results now use the shared typed action-summary structure for route targets and plugin communities.
  12. NetBox leaf synchronization tasks now exit before approval and write preparation when their finalized diff contains no actionable create, update, or delete operations.
  13. NetBox check_device_sync now evaluates canonical task diffs and includes VLAN, prefix, BGP community, route-target, and VRRP drift in its read-only per-device assessment. MAC address checking was removed from this task.

BUGS¤

  1. Fixed NetBox interface synchronization attempting to change a cabled interface to type virtual. The rejected transition is now reported as an error while unrelated interface updates continue.
  2. Fixed NetBox IP address synchronization failing when a matching IP is assigned to a non-interface object, such as an FHRP group. IP role resolution now handles the missing interface name while preserving anycast detection.

0.24.0¤

FEATURES¤

  1. Added NetBox design deployment using validated YAML and Jinja2 templates, with reusable includes, custom functions, allocations, nested objects, and the netbox design deploy NFCLI command.

ENHANCEMENTS¤

  1. NetBox VLAN synchronization now validates region-scoped VLAN groups against up to five levels of the device site's region hierarchy.
  2. NetBox VLAN synchronization now silently prefers descriptive live VLAN names over autogenerated VLAN<VID> names instead of reporting the discarded autogenerated name as a conflict.
  3. NetBox VLAN synchronization now ignores empty live descriptions when another device reports a non-empty description for the same VLAN.

BUGS¤

  1. Fixed NetBox interface synchronization assigning parsed parent relationships to interfaces whose physical type is preserved from NetBox.
  2. Fixed NetBox BGP community synchronization converting an unset route-target or community name custom field into the literal "None" string before appending live community names.
  3. Fixed NetBox VLAN synchronization failing an entire bulk write when a proposed VLAN name already exists in the same group or site. Conflicting VLAN creations and updates are now reported clearly and skipped while unrelated changes continue.

0.23.7¤

BUGS¤

  1. Fixed open connections left behind when Nornir runtime hosts were deleted or replaced, including hosts loaded from NetBox. Create, delete, and load actions now use the Nornir Salt connections task to close connections for all hosts before changing the inventory.

ENHANCEMENTS¤

  1. NetBox sync tasks now include failed Nornir devices in resources_failed, including through sync_all, while preserving results from devices that succeeded.
  2. Added open_file_descriptors, tcp_sockets, and threads process stats to worker, broker, and client monitoring.

0.23.6¤

BUGS¤

  1. Fixed NorFab.start worker-list normalization to preserve topology dictionary entries and their depends_on metadata instead of calling string methods on them.
  2. Replaced idle worker and client SQLite job polling at ten queries per second with event-driven wake-ups, and reduced idle worker and FakeNOS command-queue wake-ups from ten per second to one, without delaying queued work.
  3. Limited every marker-based Docker test runner to the workers required by its suite instead of starting the complete shared test topology.
  4. Fixed Nornir workers starting both a base watchdog and a Nornir watchdog. Watchdogs now use one interruptible interval wait instead of waking ten times per second to accumulate elapsed time.
  5. Fixed NorFab.start ignoring explicit run_broker=False and run_workers=False overrides when constructor defaults enabled those components, preventing unintended broker and worker startup.
  6. Fixed NorFab instances sharing mutable worker-process and plugin registries, preventing one instance from observing or destroying another instance's runtime state.
  7. Prevented repeated NorFab.start() calls and attempts to restart a destroyed instance, avoiding ambiguous incremental startup and partially initialized runtime state. A failed startup attempt now requires constructing a new NorFab instance before retrying.
  8. Added fail-fast Pydantic validation for circular worker dependencies in topology inventory before broker or worker startup.
  9. Fixed FileSharing worker and client nf:// path validation to reject traversal using Windows-style backslashes on Linux and resolve symbolic links before enforcing publication and download directory boundaries.
  10. Fixed the FileSharing walk task returning URLs with an extra slash, such as nf:///filesharing/file.txt, when running on POSIX systems.

ENHANCEMENTS¤

  1. Batched FastAPI task discovery so all new routes are registered before OpenAPI is regenerated once per discovery cycle. Schema regeneration no longer repeats FastAPI application setup or adds duplicate documentation routes.
  2. Staggered worker process creation by a configurable topology.workers_start_interval (default 0.5 seconds) to reduce the CPU burst caused by importing every service stack simultaneously. Set it to 0 to retain fully parallel startup. FastAPI's Uvicorn readiness check also uses a less aggressive polling interval.
  3. Added an idle NorFab Docker Compose service with one worker for every configured test service and a docker-profile-idle Invoke task that monitors CPU, memory, and block I/O over a configurable period, reports stability against configurable thresholds, saves CSV samples, and always removes the profiling container.
  4. Added NORFAB_INVENTORY_DIR support to NFCLI. When --inventory is omitted, the variable identifies the directory containing inventory.yaml and supplies the NorFab base directory, allowing commands such as nfcli -c to work consistently inside test containers.
  5. Added shared ordered interface_map rules to NetBox IP synchronization so live interface names can be mapped before filtering, role inference, and IP assignment lookup.

0.23.5¤

BUGS¤

  1. Fixed NetBox anycast IP synchronization to reuse an unassigned IP record only once per sync, creating separate records for later device assignments within same sync.
  2. Fixed NetBox VLAN, VRF, and interface synchronization to treat empty downloaded VLAN or interface maps as no mapping rules instead of failing Pydantic validation.
  3. Updated NetBox IP and prefix synchronization for dictionary-shaped TTP interface addresses, including parsed IP role reconciliation and unassigned VRRP address creation for later FHRP-group synchronization.

0.23.4¤

BUGS¤

  1. Fixed NetBox bulk sync failure handling to mark tasks failed, stop later sync_all stages, and preserve results from batches completed before an error, including BGP peering synchronization.
  2. Fixed an invalid exception reference in NetBox IP allocation fallback handling.
  3. Fixed NetBox VLAN synchronization to preserve an existing VLAN name when live data only supplies the generated VLAN<VID> name.
  4. Restored live 802.1Q mode reconciliation in sync_device_interfaces, including access interfaces without VLAN assignments, while keeping tagged and untagged VLAN membership in sync_vlans.
  5. Fixed Nornir watchdog connection tracking to remove stale hosts from a stable dictionary snapshot and record connection-use timestamps under the task's existing connection lock before it is released. Dry-run tasks no longer update connection-use timestamps.

ENHANCEMENTS¤

  1. Added configurable batch_size handling to all NetBox sync operations that perform bulk writes, covering device inventory, interfaces, IPAM, VLAN, VRF, and BGP resources. Bulk creates, updates, and interface deletes use sequential requests of 1000 objects by default, accept any positive integer override, and report progress for each batch.
  2. Automatic HTTP retries no longer include POST requests, avoiding repeated create operations when the outcome of a timed-out request is uncertain.

0.23.3¤

CHANGES¤

  1. Moved VLAN creation, attributes, tagged and untagged membership, and VLAN-derived interface mode from sync_device_interfaces to sync_vlans. The VLAN task uses the shared interface_map rules and returns separate vlans and interfaces diffs.
  2. VLAN membership updates are additive: empty live lists preserve NetBox assignments, except that native VLANs can be replaced. The first matching vlan_map rule applies to a VLAN and all its memberships. Interface mapping uses substring containment; if multiple names map to one interface, only the first selected name from a resolved VLAN is processed. Q-in-Q service VLAN assignments are not supported.
  3. Invalid memberships and missing VLAN groups are reported without stopping unrelated VLAN synchronization. Device scopes and VLAN groups are fetched in bulk, as are VLAN creations and attribute updates. If devices report different names for one VLAN, the first descriptive name takes precedence over VLAN<VID>.
  4. Removed vlan_group, vlan_map, require_vlan_group, and ignore_vlans from sync_device_interfaces and its NFCLI command. Brief get_interfaces output no longer includes tagged or untagged VLAN fields.
  5. sync_all now creates interfaces before assigning VRFs or VLANs, and stops before later stages if VLAN synchronization fails. Per-device VLAN results contain only that device's interface actions. check_device_sync now includes VRF object and interface-assignment drift.
  6. Moved interface VRF assignment to sync_vrfs, using the TTP getter's normalized address-family and interface data. Results separate vrfs, route_targets, and per-device interfaces diffs. Matching assignments are reported as in sync; changed assignments are updated after missing VRFs are created. Interface, VLAN, and VRF synchronization share the same interface_map rules.
  7. Missing route targets appear in VRF dry-run and approval plans; created targets appear in live results. VRF route-target IDs are resolved and cached after the diff. Duplicate same-name VRFs still resolve to the lowest ID, with a warning event and log message.
  8. Added additive IPv4/IPv6 import and export BGP routing-policy associations through configurable multi-object VRF custom fields. Missing policies appear in plans, are created before VRF writes, and appear in live results. Policy processing is skipped when the BGP plugin is absent; other VRF synchronization continues.
  9. Task-local caches reduce NetBox lookups. Interface synchronization reuses IDs from initial reads and bulk creations, reports ignored type-only differences as in sync, and gives dry-run precedence over approval. VRF synchronization caches selected VRFs.
  10. Flattened VRF, route-target, and routing-policy diff and result sections by removing their global wrapper. VRF sync now emits fewer progress events and uses matching text for paired events and logs.

0.23.2¤

ENHANCEMENTS¤

  1. Enhanced NetBox sync_vrrp handling of incomplete live records. Groups with a missing or empty virtual address are now reported explicitly and skipped, while a missing or empty priority uses the VRRP default of 100.
  2. Enhanced NetBox sync_vlans and sync_device_interfaces with shared batch VLAN resolution by VID, VLAN-group VID ranges, configured VLAN group, and direct device-compatible NetBox scope. Native NetBox group ranges are checked as intervals without expansion, compatible VLAN groups take precedence over direct-site VLANs, global VLANs act as a final fallback, ambiguous matches are errors, and explicit incompatible group mappings are reported and skipped without fallback.

0.23.1¤

BUGS¤

  1. Fixed NetBox sync_vrrp querying all IP addresses when live parsing returned no usable VRRP assignments. The task now fails before NetBox reconciliation or IP searching when the normalized live assignment count is zero.
  2. Fixed NetBox sync_vrrp diff-key collisions by including protocol in the per-device assignment key (interface:protocol:group_id). VRRPv2 IPv4 and VRRPv3 IPv6 assignments can now use the same interface and group ID without overwriting each other during normalization or comparison.

ENHANCEMENTS¤

  1. Added require_vlan_group to NetBox sync_vlans and sync_device_interfaces. When enabled, VLANs that match neither vlan_map nor the scalar vlan_group are reported and skipped instead of falling back to the device site.

0.23.0¤

FEATURES¤

  1. Added strict, versioned Pydantic monitoring schemas for common process and messaging statistics and for broker, client, worker, job, database, and broker-side worker-connection data. The models provide a documented contract that can also be published as JSON Schema.
  2. Added thread-safe, process-lifetime monitoring of CPU, resident memory, uptime, messages sent and received, message failures, received events, and reconnects. Statistics remain in memory and reset when the owning process restarts.
  3. Added extensible worker monitoring models, with NornirWorkerMonitoringStats as the first service-specific schema. It exposes typed Nornir host counts, failed-host recovery, connection cleanup, and inventory-source status metrics as top-level fields.
  4. Added get_status() interfaces for the broker and clients and a get_worker_status task for workers to report component identity, endpoints, runtime directories, and CurveZMQ authentication configuration separately from performance statistics.
  5. Added the NetBox sync_vrrp task and netbox sync vrrp NFCLI command to reconcile TTP-parsed VRRPv2 and VRRPv3 groups, interface assignments, priorities, authentication, names, and virtual IP addresses. Existing unassigned IPs are reused, missing IPs are created with the vrrp role, and IPs assigned to other objects are reported without reassignment.

ENHANCEMENTS¤

  1. Added first-class get_stats() interfaces to clients, workers, and the broker. Their role-specific responses now consolidate connection, keepalive, queue, running-job, concurrency, client job, and SQLite database statistics where applicable.
  2. Updated NFWeb monitoring to consume and validate the unified statistics format directly, eliminating legacy numeric-string parsing while retaining its existing in-memory history and dashboard response contract.
  3. Updated NFCLI and the Textual monitoring client to display statistics through the unified interfaces, including the existing client job and database statistics commands.
  4. Split NFCLI broker, client, and worker inspection into explicit status and statistics commands. Status output restores environment and authentication information, while statistics output remains suitable for performance monitoring.

CHANGES¤

  1. Moved WorkerWatchDog from norfab.core.worker to norfab.core.monitoring. The watchdog now performs health checks and supplies worker-specific metric values, while NFPWorker builds and validates the complete monitoring response.
  2. Removed the broker show_broker management operation, worker get_watchdog_stats task, and old standalone client statistics attributes. This release does not provide backward compatibility for those interfaces.
  3. Changed NFPClient.get_stats() to return a JSON-ready dictionary after internal Pydantic validation.
  4. Removed the untyped worker details mapping from monitoring responses.

0.22.7¤

ENHANCEMENTS¤

  1. Enhanced NetBox sync_vlans and sync_device_interfaces to skip and report each VLAN mapped to a missing VLAN group while continuing to synchronize the remaining VLANs instead of aborting the task.
  2. Increased default worker and client jobs queue size to 10000 from 1000 items.

0.22.6¤

ENHANCEMENTS¤

  1. Normalized NetBox sync_device_ip and sync_device_prefixes diff output to always include create, update, delete, and in_sync actions, including empty plans and fully synchronized objects.
  2. Refactored NFWeb topology to seed selected devices from cached Nornir inventory, merge scoped NetBox and live discovery data with origin tracking, and add Topology, Protocols, and Stats filters.

0.22.5¤

ENHANCEMENTS¤

  1. Added tri-state preserve_description handling to NetBox sync_vlans, sync_vrfs, sync_device_interfaces, and sync_bgp_peerings. The default preserves an existing NetBox description only when live text is empty; True always preserves it, while False always applies live text, including an empty string. NetBox sync_bgp_asn now uses the same shared description policy while retaining its existing True default.
  2. Enhanced NetBox sync_bgp_community to skip live community values that do not contain :, preventing well-known names such as Junos no-export from being synchronized as NetBox BGP community objects.
  3. Enhanced NetBox sync_vrfs to handle multiple existing NetBox VRFs with the same name deterministically by logging a warning and reconciling against the matched VRF with the numerically lowest ID.
  4. Enhanced NetBox sync_vrfs to silently skip live parser records whose instance_type is present and not equal to vrf.
  5. Extended NetBox get_bgp_peerings to support the branch argument when reading BGP sessions from a NetBox branch.
  6. Extended NetBox get_devices, get_connections, get_topology, get_nornir_inventory, and get_containerlab_inventory with branch-aware reads. Nested inventory lookups propagate the branch to all supported data retrieval tasks.
  7. Added branch support to NetBox netbox_graphql and rest; both validate or create the branch through the existing pynetbox branch lifecycle and send its schema ID in the X-NetBox-Branch header. The deprecated graphql task remains unchanged.
  8. Branch-aware NetBox device, interface, circuit, BGP peering, Nornir inventory, and Containerlab inventory reads now bypass cache without changing existing cache keys or non-branch cache behavior.
  9. Refactored NetBox get_circuits to use the paginated netbox_graphql task with explicit circuit and cache-freshness queries, replacing its dependency on the deprecated graphql task.
  10. Added branch support to NetBox get_circuits, including device and circuit queries, REST termination path tracing, optional interface enrichment, and circuit lookups made by Nornir and Containerlab inventory tasks.

BUGS¤

  1. Fixed NetBox sync_device_interfaces duplex comparison by normalizing NetBox choice dictionaries to scalar values before diffing against live interface data.
  2. Fixed NetBox sync_device_ip matching to prioritize an IP already assigned to the target interface before applying VRF and duplicate-address fallback rules.
  3. Fixed NetBox BGP peering reads to pass the selected branch through get_bgp_peerings, get_devices, and pynetbox calls during sync_bgp_peerings.

0.22.4¤

ENHANCEMENTS¤

  1. Enhanced NetBox sync_bgp_community handling for standard BGP plugin communities that share the same value. The task now keeps live community names in the sync identity and matches existing NetBox communities by value plus community-name custom-field containment, then value plus description, before falling back to value-only matching.
  2. Added preserve_description to NetBox sync_bgp_asn, defaulting to True, so existing NetBox ASN descriptions stay unchanged unless explicitly overridden.
  3. Enhanced NetBox sync_bgp_asn device custom-field associations to use only parser records where local_asn is True, preventing peer ASNs from being associated with the observing device.

BUGS¤

  1. Fixed NetBox sync_device_interfaces VLAN mapping for VLAN names returned by Nornir getters. Matching named VLANs now resolve against their mapped VLAN group rather than falling back to the device site, and newly created group-scoped VLANs no longer receive a site association.

0.22.3¤

FEATURES¤

  1. Added the NetBox sync_bgp_asn task and netbox sync bgp-asn NFCLI command to reconcile globally unique live ASNs, descriptions, and optional device associations with NetBox IPAM. Existing ASNs can be updated without an RIR; creating missing ASNs requires an existing NetBox RIR supplied through rir.

ENHANCEMENTS¤

  1. Enhanced the NetBox sync_bgp_community task with optional device-to-community associations. The configured device_custom_field, which defaults to devices, records the NetBox devices on which each route target or BGP plugin community was observed while preserving existing associations.
  2. Added ignore_asn_by_range filtering to the NetBox sync_bgp_asn task so individual ASNs and numerical ranges, such as 65000 and 65100-65200, can be excluded from synchronization.
  3. Enhanced sync_device_interfaces to resolve VLAN names returned by Nornir interface getters against existing site- or group-scoped NetBox VLANs before diffing, while retaining numeric VID lookup and creation behavior. Added Juniper vMX-style FakeNOS coverage for access and trunk interfaces containing named VLAN members.
  4. Added raise_on_empty to NetBox get_interfaces, defaulting to the existing error behavior, and disabled it internally for sync_device_interfaces so devices with no existing NetBox interfaces can be initialized from live data.

BUG FIXES¤

  1. Fixed sync_device_interfaces raising a KeyError while initializing a device that has no existing NetBox interfaces.

CHANGES¤

  1. Removed the NetBox crud_update task's ineffective partial argument. Updates consistently use PATCH semantics through pynetbox, including standard device attributes and custom field data.
  2. Renamed the NetBox vlan_map rule fields vlan_ids, device_names, interface_names, and vlan_group to match_vlan_ids, match_device_names, match_interface_names, and set_vlan_group, respectively.

0.22.2¤

ENHANCEMENTS¤

  1. Added first-class git://<remote-name>/<path> file retrieval for clients and workers. The File Sharing resolve_git_url task synchronizes the configured Git remote on demand and returns its published nf:// URL, keeping all Git access inside the File Sharing service. Git fetches disable terminal, browser, GUI, and credential-helper authentication fallbacks so rejected credentials fail without interactive prompts.
  2. Enhanced the NetBox sync_device_inventory, sync_vlans, sync_device_prefixes, sync_vrfs, sync_device_interfaces, sync_mac_addresses, sync_device_ip, sync_bgp_peerings, and sync_bgp_community tasks to surface per-device Nornir resources_failed entries in task errors, error events, and logs while retaining usable results from successful devices without failing the overall NetBox task.
  3. Enhanced sync_bgp_community community-name custom-field handling to normalize comma-separated strings, trim empty or padded entries, preserve existing names, append only missing live names, and store the resulting names in stable sorted order for idempotent synchronization.
  4. Enhanced sync_device_interfaces MTU and speed handling to preserve existing NetBox values when both live configuration and operational status return missing or zero values, preventing incomplete parsing data from producing unwanted updates.
  5. Enhanced the NFWeb monitoring dashboard with stacked fabric-wide broker and worker CPU and memory history, current fabric totals, synchronized time zoom, synchronized top-ten worker comparison scrolling, and selected-worker job status and task summaries.
  6. Improved NFWeb monitoring refresh behavior by reading the latest shared sample at the selected interval, coalescing manual refreshes with active collection, and merging and deduplicating HTTP and WebSocket samples without allowing older responses to replace newer data.
  7. Improved NFWeb partial-sample diagnostics by validating broker and worker monitoring responses, identifying workers with missing resource data, and presenting collection warnings in the compact Fabric observability toolbar.

0.22.1¤

FEATURES¤

  1. Added the NetBox sync_bgp_community task and netbox sync bgp-communities NFCLI command. The task uses the TTP Templates BGP communities getter, stores route targets in IPAM and other community types in the NetBox BGP plugin, and appends missing live community-set names by value into an optional custom field.

ENHANCEMENTS¤

  1. Adding gitpython to filesharing service version output
  2. Enhancing NFWeb NorFab monitoring dasboard

0.22.0¤

FEATURES¤

  1. Added File Sharing Git remote synchronization. Configure public or authenticated GitHub repositories in worker inventory, then clone a selected branch and make its files available to NorFab workers under an nf:// mount automatically or on demand using the create_remote_git, git_clone, and delete_remote_git tasks and matching NFCLI commands.

ENHANCEMENTS¤

  1. Enabled safe NetBox interface type updates by default. Existing interfaces can transition from other to virtual, bridge, or lag, and between those logical types, while specific physical types and transitions to the other fallback remain protected. New interface creation continues to accept any parsed type.
  2. Added NetBox branching support to all CRUD tasks by forwarding the optional branch argument when creating the pynetbox client.
  3. Added nf:// YAML file support for NetBox interface_map and vlan_map synchronization inputs, including use inside the sync_all per-task configuration. Downloaded mappings use the same Pydantic validation as inline rules.
  4. Expanded NetBox sync_all to run inventory, VLAN, prefix, VRF, interface, MAC address, IP address, and BGP peering synchronization in dependency order. Task-specific options now use the inline or nf:// YAML sync_kwargs mapping, and setting any task key to false skips that stage while later stages continue.
  5. Consolidated the Docker development Compose environment into one all-in-one container that installs the full dependency set and mounts the local NorFab package over the installed source.
  6. Exposed NFWeb on all IPv4 interfaces by default, advertised its preferred LAN address, and allowed HTTP and WebSocket access from any browser origin.

BUGS¤

  1. Reduced idle CPU usage in broker, client, and worker ZeroMQ owner loops by restoring the poll timeout from 10 ms to 100 ms. Outbound messages can wait up to 100 ms for an idle owner loop, while active socket traffic still wakes the poller immediately.

0.21.2¤

BUGS¤

  1. Fixed a client job result collection race that could return None to callers, including FastAPI endpoints, after a worker had completed successfully. Final job snapshots now take precedence over mutable database state, terminal job statuses (COMPLETED, FAILED, and STALE) cannot transition to another status, and late polling responses are ignored for finished jobs.
  2. Fixed ZeroMQ socket lock starvation introduced by the 0.21.1 keepalive scheduling changes.

ENHANCEMENTS¤

  1. Refactored broker, client and worker socket I/O so each ZeroMQ socket is owned by one loop, with bounded client and worker outbound queues drained by zmq_send_recv.

0.21.1¤

FEATURES¤

  1. Added broker ip_allowlist inventory support using PyZMQ's native source-IP authentication filter. The allowlist accepts exact IP addresses only, applies when zmq_auth is enabled, and defaults to ["*"] to allow connections from any source.
  2. Added Nornir errdisabled-host handling:
  3. Failed hosts now remain excluded from later tasks and recover automatically after failed_hosts_recovery_timeout, which defaults to 60 seconds.
  4. Added reset_failed_hosts_before_task, default false. Setting it to true enables the earlier always-reset compatibility mode and disables persistent errdisabled-host behavior, making watchdog timeout recovery unnecessary.
  5. Added the on_failed task argument, default false, exposed as on-failed in NFCLI, to include errdisabled hosts in one specific run without clearing their failed state.
  6. Added errdisabled_hosts_list and errdisabled_hosts_clear service tasks, exposed through NFCLI as show nornir errdisabled-hosts and nornir clear errdisabled-hosts. List results include the host, errdisabled timestamp, remaining recovery time, and failure reason when available.
  7. Nornir task results now report hosts executed during the job in resources and hosts that failed during that job in resources_failed.

ENHANCEMENTS¤

  1. Improved long-running broker, client, and worker reliability by serializing ZeroMQ socket polling and receiving with concurrent keepalive, dispatcher, API, and job-thread sends, using short non-blocking poll cycles to avoid delaying outbound traffic.
  2. Made worker broker reconnection thread-safe by serializing socket shutdown, replacement, registration, and keepalive retargeting so background threads cannot use a socket while it is being replaced.
  3. Enhanced NetBox sync_device_interfaces to supplement interface configuration parsing with operational interface status, filling MTU, duplex, and speed only when configuration parsing returns no value.

0.21.0¤

FEATURES¤

  1. Added the independent NetBox sync_device_prefixes task and NFCLI netbox sync prefixes command to derive canonical prefixes from FakeNOS-backed live interface data, reconcile creates and site updates, optionally associate VRFs and sites, and support filters, dry-run, approval, and branching workflows.
  2. Added the NetBox sync_vlans task and NFCLI netbox sync vlans command to reconcile live VLAN names and descriptions with site- or VLAN-group-scoped NetBox VLANs. The task supports Nornir device selection, dry-run and approval workflows, branch-aware operations, scalar VLAN-group fallback, and VLAN ID filtering. VLAN deletion is intentionally excluded because live parsing cannot reliably identify stale NetBox VLANs.
  3. Added shared ordered vlan_map rules to NetBox VLAN and interface synchronization. Rules support VLAN ID ranges, device-name globs, VLAN-name globs for VLAN sync, and interface-name globs for interface sync; the first matching rule selects an existing VLAN group by exact name.
  4. Added the NetBox sync_vrfs task and NFCLI netbox sync vrfs command to collect global VRFs with the Nornir TTP vrfs getter and synchronize them by name.

ENHANCEMENTS¤

  1. Enhanced VLAN group mapping to use each NetBox VLAN group's configured vid_ranges, with explicit rule vlan_ids acting as a narrower boundary. Unmatched VLANs use the scalar vlan_group when supplied, otherwise they retain device-site fallback behavior.
  2. Added ordered interface_map rules to NetBox sync_device_interfaces to rename live interfaces by device-name glob, device-type model glob, and literal match/replace values before filtering and comparison.
  3. Added Invoke developer tasks for documentation, checks, linting, and Docker-based tests, including opt-in per-file parallel containers with isolated runtimes, and added Vulture dead-code detection to the project checks.

CHANGES¤

  1. Refactored NetBox sync_device_ip to synchronize IP addresses only. Prefix collection, matching, and writes now belong exclusively to sync_device_prefixes; sync_all no longer creates prefixes implicitly.
  2. Changed NetBox sync_device_prefixes ignore_ranges filtering to compare canonical live prefixes and exclude only prefixes fully contained within an ignored network.

BUGS¤

  1. Fixed NetBox sync_device_ip duplicate detection to compare canonical host addresses without prefix lengths, preventing identical non-anycast IPs with different masks from being created in the same synchronization payload.
  2. Fixed NetBox sync_bgp_peerings to validate parsed source IP addresses and skip peerings with invalid values, such as undefined when a BGP session is down.
  3. Added textual into full extras for norfab installtion.
  4. Fixed NFAPI startup consuming excessive CPU by yielding while waiting for worker initialization events instead of busy-waiting.

0.20.6¤

FEATURES¤

  1. Added a Nornir create_host_from_netbox replace option to delete all current runtime hosts with InventoryFun before loading the requested NetBox hosts.
  2. Enhanced NetBox sync_device_interfaces with ignore_vlans and ignore_vrf options, plus ordered interface-name and VLAN-ID-range mappings for dynamic vlan_group selection.

ENHANCEMENTS¤

  1. Improved Jinja2 template rendering for Nornir cli, cfg, and test tasks by reusing fetched and compiled nf:// templates across per-host rendering loops while preserving dynamic per-host template URLs and include support.
  2. Added NFCLI Nornir test markdown presence flag to emit rich markdown test reports.

BUGS¤

  1. Fixed NetBox branch-aware tasks to reject merged branches before using them.

0.20.5¤

FEATURES¤

  1. Added NetBox sync_device_ip ignore_vrf option to control VRF-aware matching and creation for IP addresses and prefixes.
  2. Added FakeNOS worker inventory networks.<name>.auto_start support to start selected virtual networks automatically when the worker initialises.

CHANGES¤

  1. Added FakeNOS-backed cEOS coverage for Nornir CLI and NetBox sync_device_interfaces tests.
  2. Changed NetBox sync task FastAPI endpoints to use POST.
  3. Added NetBox branch provisioning progress events when branch-aware tasks wait for a branch to become ready.

0.20.4¤

FEATURES¤

  1. Added NFAPI .env detection and loading with python-dotenv before inventory initialization, making local variables available to NFCLI and inventory Jinja2 templates. Local .env values override existing process variables by default; load_env_override=False preserves existing values. NFAPI also exposes list_environment_variables() for inspecting its environment.
  2. Added FastMCP task result guardrails with ordered aggregate byte limits, recursive regex replacement, selective regex blocking, wildcard inventory selectors, and raw-result preservation in the FastMCP client database.
  3. Added the Nornir netbox.filter Jinja2 helper to retrieve filtered NetBox core and plugin objects for dynamic configuration and test-suite rendering.
  4. Added Nornir create_host_from_netbox runtime inventory task and NFCLI nornir inventory create-host-from-netbox command to create or replace in-memory Nornir hosts from explicit NetBox device names.

ENHANCEMENTS¤

  1. Added show fastmcp guardrails NFCLI command to fetch FastMCP tools data and display configured tool guardrails and result guardrails in separate sections.
  2. Enhanced Nornir cli MCP task results with built-in redaction guardrails for documented network-device, Linux, HTTP header, URL credential, OAuth token parameter, netrc, and PEM private-key secrets, replacing matched values with REDACTED while preserving raw job results in the FastMCP client database.
  3. Enhanced NFCLI input request prompts to show the approval timeout and automatically send False/No when the prompt expires.
  4. Enhanced NFCLI approval previews to use nested output by default.
  5. NorFab netbox service and Netbox v4.6 compatibility verified and tested
  6. NorFab netbox service and Netbox BGP plugin v0.19.0 compatibility verified and tested
  7. NorFab netbox service and Netbox Branching plugin v1.1.1 compatibility verified and tested
  8. Enhanced Netbox check_device_sync with an optional inventory check that runs sync_device_inventory in dry-run mode and includes inventory state in the per-device summary and detailed diff.
  9. Enhanced NetBox sync_device_inventory with inventory-parse-template for parsing live inventory with a custom TTP template.

CHANGES¤

  1. Renamed NetBox sync interactive confirmation argument from with_review/with-review to with_approval/with-approval.
  2. Reworked NorFab logging isolation so NFAPI no longer configures application logging by default, NorFab-owned broker and worker processes configure logging from their own inventories, and default file logs are written as per-process JSONL files under __norfab__/logs. NFCLI and TUI opt in to NFAPI process logging with distinct names, and show norfab logging now retrieves broker and worker logs through normal NorFab client calls with human-readable output by default and raw records with details.
  3. Dependencies updates:

  4. ntc-templates 9.1.0 -> 9.2.0

  5. textual 8.2.7 -> 8.2.8
  6. mcp 1.27.2 -> 1.28.1
  7. langchain 1.3.4 -> 1.3.14
  8. Added langchain-core 1.5.1 optional dependency
  9. langchain-openai >=0.2 -> 1.4.1
  10. langchain-anthropic >=0.2 -> 1.5.2
  11. langchain-mcp-adapters >=0.1 -> 0.3.0
  12. langgraph >=0.2 -> 1.2.9
  13. Added fastembed 0.8.0 optional dependency
  14. Added qdrant-client 1.18.0 optional dependency
  15. datamodel-code-generator 0.61.0 -> 0.71.0
  16. pynetbox 7.7.0 -> 7.8.0
  17. fastapi 0.136.3 -> 0.140.0
  18. uvicorn 0.49.0 -> 0.51.0

  19. Changing Nornir parse ttp logic to not mark results as failed if any of cli commands collection failed for any of the hosts

BUGS¤

  1. Fixed NetBox CRUD tasks to support third-party plugin endpoints

0.20.3¤

BUGS¤

  1. Fixing nornir tests nfcli shell to pass verbose_on_fail to results processing, to make sure return results as table even when have failed tests.

FEATURES¤

  1. Added FastMCP tool call guardrails to reject unsafe MCP tool calls before NorFab job dispatch. Guardrails can be defined by tasks or FastMCP inventory, support regex, contains, and equals checks, can disable built-in task guardrails with tools.disable_builtin_guardrails, and are visible through show fastmcp tools.

ENHANCEMENTS¤

  1. Extended Nornir worker statistics with SID, NetBox, Containerlab inventory load statuses and managed nornir_hosts count.
  2. Enhanced NetBox worker REST filtering to route task-side pynetbox.filter() calls through adaptive bulk_filter, automatically chunking long list filters to avoid URI length errors while preserving query options such as fields, limit, and ordering.
  3. Improved result status coloring for nornir test task
  4. Nornir show hosts table added index column
  5. Enhanced Nornir cli task MCP metadata with default guardrails that block reboot, reload, restart, configuration-mode, shell-mode, OS/image/package operations, outbound ssh/telnet, commit, delete, clear, debug, reset, zeroize, and related state-changing commands when called through FastMCP.
  6. Enhanced Nornir cfg task MCP metadata with default guardrails that block reboot, reload, restart, do ... and run ... operational escapes, delete, erase, zeroize, and outbound ssh/telnet commands when called through FastMCP.

CHANGES¤

  1. Moved NorFab platform nfcli show commands under show norfab, including show norfab client jobs, show norfab broker workers, and show norfab workers statistics.
  2. Moved worker job history commands from show nornir jobs to show norfab workers jobs.
  3. Moved NFCLI inventory configuration shell from configure to norfab configure.
  4. Added a service filter to show norfab workers jobs summary and show norfab workers jobs details.
  5. Moved worker utility commands from workers to norfab workers.
  6. Moved the NFCLI client version report from show norfab version to show norfab client version.

0.20.2¤

ENHANCEMENTS¤

  1. Updated NFCLI shells to accept single values for task arguments backed by worker list inputs, normalizing them before dispatch for NetBox and Nornir commands.
  2. Enhanced Netbox update_interfaces_description task to render description templates for virtual, LAG, and disconnected interfaces that have no connection data, with clearer dry-run wording and expanded test coverage for static, dry-run, connected, and unconnected interface updates.
  3. Enhanced Netbox get_connections task with an interfaces argument to filter by exact interface or port names using optional GraphQL variables; update_interfaces_description now passes selected interfaces through when rendering connection-aware descriptions, and create_ip now uses exact interface matching for peer lookups.
  4. Updating Tasks' documentation to follow consistent template
  5. Refactoring tests files structure to follow services layout

BUGS¤

  1. NFAPI fixing depends_on feature check when dependency worker is yet to start

0.20.1¤

ENHANCEMENTS¤

  1. Improved NFCLI ERROR status highlighting to make it red color
  2. Added interactive review to Netbox sync tasks; with_approval=True runs a dry-run preview before prompting and only applies changes after review.
  3. Enhancing nfcli terminal event output, added header, footer job info, shortened timestamps, removed uuid from every event, its only in header, additional summary info displayed in footer now.
  4. Improving file tab completion choice handling by returning top folders only not all files in the tree
  5. Added device manufacturer, platform and type to Netbox inventory transform function
  6. Updated Nornir NFCLI table rendering to use PICLE table outputter and removed nornir-salt from nfcli installation extras.
  7. Added name argument to NFAPI make_client() and deterministic default client names using the entry script and current folder hash to reduce client identity and local job database collisions.
  8. Added support to pass on job object to RetryRunner for connection events logging

BUGS¤

  1. Fixed Netbox worker API calls to use retry-enabled sessions for status, REST, GraphQL, and pynetbox requests to reduce intermittent failures from transient Netbox gateway errors.
  2. Inventory loading fixed to correctly calculate base_dir when inventory_data used
  3. Fixed Netbox get_devices filtering with large single-key list filters to avoid URI length errors.
  4. Fixing Nornir parse TTP to not exit the job if have some hosts failed.
  5. Fixing Netbox inventory sync to not exit on devices that failed collecting live data, skip and continue processing the rest instead.

CHANGES¤

  1. Changed nornir parse ttp default mode to non-strict
  2. Changed netbox sync tasks default timeout to 600

0.20.0¤

FEATURES¤

  1. Added Netbox sync_device_inventory task to synchronize device chassis serial numbers and installed modules from live Nornir inventory. The task supports module type and module bay creation, pattern-based inventory mappings, custom Python transformers, filtering, deletion controls, and dry-run previews.
  2. Added support for prompts to mcp service, added two prompts to Nornir cli task.
  3. Nornir worker adding SNMP tasks to support get, walk, set operation using SNMP v1/2/3

CHANGES¤

  1. Removed the Netbox sync_device_facts task. Device serial number synchronization is now handled by sync_device_inventory using the live inventory record whose slot is chassis.
  2. Extended Netbox sync_all to run device inventory synchronization before interfaces, MAC addresses, IP addresses, and BGP peerings. Added inventory_* mapping, transformer, filtering, and module creation arguments; process_deletions and message are shared across the applicable synchronization stages.
  3. Updating docker deployment files

BUGS¤

  1. Adding deepdiff package to full installation extras, Netbox worker would fail to start if not installed.
  2. Changing mcp package python dependencies to remove python version specification of <3.14 as it failed to get installed for Py3.14
  3. Fixing Netbox Inventory URL handling when it ends with forward slash
  4. Fixing full extras to enlist all dependencies

0.19.0¤

FEATURES¤

  1. Added device check-sync task to Netbox service to check if device interfaces, ips, bgp, mac are in sync with Netbox
  2. Added device sync-all task to sync all data from live device into Netbox
  3. Adding powershell installation script and updating install instructions - this script install Norfab going through interactive installation process.
  4. Adding run_shell_cmd task to workers to run arbitrary shell command on the host, adding picle shell workers run-shell-command .. command too
  5. Adding ignore_peer_ranges argument to sync bgp peerings task
  6. Adding bearer token authentication support for fastmcp service, together with related task and nfcli shell commands
  7. Adding NFPClient.submit_job() API returning a blocking job future object with events(), result() and send_response() methods for event-aware and interactive client workflows

ENHANCEMENTS¤

  1. Improving netbox Sync BGP peerings task to make better use of lookup cache for asn, vrf, rir, ip objects resolutions
  2. MCP service policy now enforced for tool calls not only for discovery
  3. Netbox sync device interfaces improved VLAN handling - now it creates vlan if its missing, added vlan_group argument to specify group to associate with vlan, otherwise it is associated with device site. Vlan retrieval for existing vlan helper is either via group, device site or global.
  4. Netbox service sync IP task updated to honor anycast role for existing Netbox IPs and re-use role anycast for discovered IPs
  5. Refactoring bgp peerings sync to support name template being a jinja2 template string as well as adding extra variables to renderer context
  6. Enhancing bgp syn task to use 5 tuple to represent bgp session identity instead of name, allowing to detect session name changes.

BUGS¤

  1. Fixing ip sync task bulk update list construction, making sure IDs are always present for items
  2. Fixing IP sync prefixes filtering using bulk_filter
  3. Fixing IP creation logic to check existing ip first, and if not found proceed with find a suitable prefix
  4. Fixing resolve_ip helper function to pickup longest prefix length prefix to create IP in
  5. Fixing resolve_vrf function to detect when multiple VRF with same name present in netbox and to emit warning message to the user

CHANGES¤

  1. Adding Pydantic task input and output models for all services, refactoring NFCLI shells to use these models.
  2. Moving pydantic models to dedicated per-worker files.
  3. Refactoring core client and worker job handling to use future-based job tracking, normalized job events and client input request/response flow; run_job() remains available for synchronous job execution
  4. Dependencies updates:

  5. tornado 6.5.5 -> 6.5.7

  6. pydantic 2.12.5 -> 2.13.4
  7. orjson 3.11.7 -> 3.11.9
  8. picle 0.12.0 -> 0.12.2
  9. rich 14.3.3 -> 15.0.0
  10. pyreadline3 3.5.4 -> 3.5.6
  11. netmiko 4.6.0 -> 4.7.0
  12. nornir-scrapli 2025.01.30 -> 2025.1.30
  13. ntc-templates 9.0.0 -> 9.1.0
  14. requests 2.32.5 -> 2.34.2
  15. scrapli-community 2025.01.30 -> 2025.1.30
  16. lxml 6.0.2 -> 6.1.1
  17. textual 8.1.1 -> 8.2.7
  18. mcp 1.27.1 -> 1.27.2
  19. langchain 1.2.12 -> 1.3.4
  20. langchain-community 0.4.1 -> 0.4.2
  21. langchain-ollama 1.0.1 -> 1.1.0
  22. ollama 0.6.1 -> 0.6.2
  23. datamodel-code-generator 0.55.0 -> 0.61.0
  24. langgraph-checkpoint-sqlite 3.0.3 -> 3.1.0
  25. pynetbox 7.6.1 -> 7.7.0
  26. deepdiff 9.0.0 -> 9.1.0
  27. fastapi 0.135.1 -> 0.136.3
  28. uvicorn 0.42.0 -> 0.49.0
  29. python-multipart 0.0.22 -> 0.0.32

0.18.1¤

CHANGES¤

  1. Added CreateIpInput Pydantic model for Netbox create_ip task input validation and used it as input argument for @Task decorator
  2. Added CreateIpBulkInput Pydantic model for Netbox create_ip_bulk task input validation and used it as input argument for @Task decorator
  3. Replaced **kwargs in Netbox create_ip_bulk task with explicit typed arguments matching create_ip signature
  4. Enhanced IP allocation logic for allocating next available prefix when child prefix already contains IPs in Netbox
  5. Enhanced create ip logic for detecting IP address assigned object
  6. Changing norfab to produce json schema for tasks by model fields names instead of aliases by_alias=False.
  7. Updating nornir parse napalm to use nornir task task
  8. Fix create prefix task to make sure to check if /31 subnet can be allocated even if available prefixes return /30
  9. Create ip task enhanced to handle case when multiple parent prefixes matched in Netbox by prefix filter
  10. Fix create ip when create peer ip is true, check if mask len 32 or 128 raise error in that case - can not create peer ip for /32 or /128 prefixes
  11. Adding is_timed_out method to worker Job object to alow monitor job time out from inside tasks

FEATURES¤

  1. Adding brief mode to get interfaces to return only essential interfaces data

0.18.0¤

BUGS¤

  1. Fixing Netbox prefix allocation with parent filtering by dictionary
  2. Fixing netbox crud tasks to use Pydantic model for input validation
  3. Enhancing netbox worker filtering for large number of items to avoid 414 error

CHANGES¤

  1. Complete refactoring of Netbox sync_device_interfaces task
  2. Complete refactoring of Netbox sync_device_ip task
  3. Dependency updates:

  4. mcp 1.26.0 -> 1.27.1

FEATURES¤

  1. Created Netbox task sync_mac_addresses
  2. Enhancing streamlit web ui network map application to support 2d and 3d view of the topology - support Netbox data, LLD and BGP data overlay on single graph
  3. Adding Netbox get_topology task to fetch devices and links in topology format

0.17.3¤

ENHANCEMENTS¤

  1. Improving logic for local ip sourcing for BGP sessions

BUGS¤

  1. Fixing BGP sessions name forming for Netbox sync bgp tasks
  2. Fixing deepdiff dependency for Netbox service

0.17.2¤

FEATURES¤

  1. Adding new Netbox sync_bgp_peerings task to synchronize BGP sessions between live devices and NetBox
  2. Adding new Netbox create_bgp_peerings task to create BGP peerings
  3. Adding new Netbox update_bgp_peerings task to update BGP peerings
  4. Nornir Test markdown results adding results summary table when extensive is True
  5. Fixing logic of detecting assigned interface for create IP task

0.17.1¤

CHANGES¤

  1. Refactored Netbox get_connections task, remove include_virtual arguments, cables argument, now these data always retrieved.
  2. Refactoring Netbox graphql fetch function to use variables, pagination, persistent sessions and threading to enhance data retrieval performance

FEATURES¤

  1. Netbox get connections added remote interface label extraction for physical interfaces, console port, power ports, front/rear ports
  2. Netbox get connections added remote interface MAC addresses extraction
  3. Nornir tests markdown report added timestamps and duration summary

BUGS¤

  1. Fixing get connections handling for provider network
  2. Fixing client and worker job db timestamps handling for created_at

0.17.0¤

CHANGES¤

  1. Updating Netbox get_devices task to use pynetbox for fetching brief device info, fixing bug with pagination
  2. Enhancing Netbox get_devices to cache sites data to reduce amount of API calls
  3. Updating Netbox get_interfaces to use pynetbox for fetching brief interfaces info, fixing bug with pagination
  4. Refactoring Containerlab worker moving it to dedicated directory.
  5. Refactoring FastAPI worker moving it to dedicated directory.
  6. Refactoring Workflow worker moving it to dedicated directory.
  7. Refactoring FastMCP worker moving it to dedicated directory.

FEATURES¤

  1. Adding agentic AI capabilities to the NorFab client via NFPClient.get_agent() method:

  2. New norfab/core/agent.py module with NFPAgent class — single-file, zero overhead when unused

  3. LangGraph ReAct agent with auto-discovered NorFab service tools
  4. Multi-provider LLM support: openai, anthropic, ollama, groq, mistral, openrouter, google, bedrock
  5. Optional MCP server integration via langchain-mcp-adapters (stdio, sse, streamable-http)
  6. Optional RAG knowledge base via Chroma or FAISS
  7. Optional multi-turn conversation memory (in-process buffer or SQLite)
  8. Configuration via client -> agent_profiles section in inventory.yaml
  9. New norfab[clientagent] optional dependency group

  10. Adding new Netbox CRUD tasks for generic REST API access to any NetBox object type:

  11. crud_list_objects — lists all available NetBox object types from the OpenAPI schema, results cached for 24 hours

  12. crud_search — free-text search across multiple object types simultaneously using the q parameter
  13. crud_read — retrieve objects by ID(s) or filter dict(s), supports pagination and field selection
  14. crud_create — create one or multiple objects in a single request, supports dry_run preview
  15. crud_update — partial (PATCH) or full (PUT) update of one or multiple objects by ID, supports dry_run diff
  16. crud_delete — delete one or multiple objects by ID, supports dry_run preview
  17. crud_get_changelogs — retrieve object change history, supports NetBox 4.0+ with automatic fallback to older versions

  18. FastMCP service - adding MCP tool exposure policy via inventory tools.policy:

  19. tools.policy is an ordered list of policy entries with service, tasks, and action keys

  20. service accepts glob patterns matched against NorFab service names
  21. tasks accepts glob patterns matched against service task names
  22. action supports allow or reject
  23. Policies are evaluated top-down, first matching entry wins
  24. If no policy entry matches, tool is allowed by default

BUGS¤

  1. Nornir parse ttp enhancing return result to be for parsed template only to avoid extra data from other templates
  2. Netbox get_connection fixing handling of remote interface when it has no lag associated with it
  3. Fixing nfcli nowait argument handling

0.16.6¤

BUGS¤

  1. Fixing Nornir parse_ttp task hosts filtering

0.16.5¤

BUGS¤

  1. Fixing Nornir N2G diagram calling UUID handling

CHANGES¤

  1. Splitting Nornir parse task into 3 tasks parse_ttp, parse_napalm, parse_textfsm
  2. Enhancing nfcli shell nornir parse commands
  3. Watchdog thread now starts automatically for every worker, so far implemented RAM usage monitoring

FEATURES¤

  1. Nornir service nfcli added nornir parse textfsm command
  2. Nfcli - adding these commands:

  3. show workers statistics

  4. show workers brief

  5. Adding experimental Textual TUI monitoring dashboard


0.16.4¤

BREAKING CHANGES¤

Below changes are to simplify NorFab codebase and reduce maintenance burden.

  1. Netbox get_interfaces now return complete REST API interfaces data without trying to flatten or normalize it
  2. Netbox get_devices now return complete REST API devices data without trying to flatten or normalize it

0.16.3¤

BUGS¤

  1. Enhancing error handling for worker results compress to not fail silently if task returns data that is not JSON serializable
  2. Fixing get_interfaces and get_devies output models validation handling
  3. Fixing fakenos models to not interfer with nfcli imports - no fakenos required to be installed for nfcli to load, moved fakenos tasks models to dedicated file
  4. Enhancing nfcli output to skip workers that had no results returned in nested output

CHANGES¤

  1. Dependencies upgrades:

  2. tornado 6.5.4 → 6.5.5

  3. orjson 3.11.5 → 3.11.7
  4. rich 14.3.2 → 14.3.3
  5. tabulate 0.9.0 → 0.10.0
  6. ntc-templates 8.1.0 → 9.0.0
  7. scrapli 2025.01.30 → 2026.2.20
  8. xmltodict 1.0.2 → 1.0.4
  9. robotframework 7.4.1 → 7.4.2
  10. langchain 1.2.10 → 1.2.12
  11. datamodel-code-generator 0.54.0 → 0.55.0
  12. fastapi 0.129.0 → 0.135.1
  13. uvicorn 0.40.0 → 0.42.0
  14. fakenos 1.0.0 → 1.0.1

0.16.2¤

BUGS¤

  1. Fixing markdown tests report to calculate success rate correctly
  2. Fixing Nornir cli input model to allow either commands or run_ttp to be provided

CHANGES¤

  1. Dependencies upgrades:

  2. picle 0.11.0 -> 0.11.1

  3. Netbox get_devices task refactored to use Pynetbox and REST API, as a result Netbox inventory filters for devices now can use Pynetbox device style filtering instead of GraphQL filters.

  4. Enhanced logging for Netbox worker and tasks

FEATURES¤

  1. Adding new FakeNOS service to simulate networks interactions for automation testing
  2. Netbox get_interfaces task added caching

0.16.1¤

BUGS¤

  1. Fixing Netbox dependency for data-model-generator library
  2. Fixing Netbox get_interface queries performance

0.16.0¤

FEATURES¤

  1. Nornir Tests task - adding support for groups argument, added support to nfcli shell as well
  2. Adding configuration model to edit NorFab configuration using NFCLI shell
  3. NFCLI - adding history and commands history persistency across runs
  4. Nornir netbox get inventory task added support to pass on cache variable to control overall cache behaviour
  5. Netbox get_interfaces task uses REST API now and return interfaces extra information, such as connected endpoints
  6. NFCLI - adding new show jobs statistics and show jobs database-statistics commands to view local jobs database statistics

CHANGES¤

  1. Dependencies updates:

    • picle: 0.9.0 → 0.11.0 - enhanced command help and man tree output, commands history
  2. Netbox worker refactoring:

  3. moving tasks out to dedicated files to shrink main worker .py file

  4. moved Netbox worker related models under worker folder itself
  5. get_circuit changing cache argument to None to honor global cache setting
  6. get_interfaces task refactored to use REST API instead of GraphQL API

  7. Netbox get_interfaces - refactored to use rest api via pynetbox instead of GraphQL API

  8. Enhancing nornir tests markdown results report - adding groups, description, comments to test details, added total failed an success rate counters, modified table output to display failed tests first.
  9. Enhancing workers and client jobs database operations toward reducing memory usage and improving speed - switching to orjson instead of json, dropping text columns in favour of byte blobs and switching zlib compression to level 1
  10. Adding orjson lib to core dependencies
  11. Refactored Nornir worker:

  12. splitting tasks into dedicated files and moving all in dedicated folder

  13. moving related pydantic models under new nornir_worker folder

  14. Refactoring broker to use orjson instead of json library

BUGS¤

  1. NFCLI netbox get functions - adding missing pipe models
  2. Client - fixing race condition when calling destroy and dispatcher threads still using zmq socket
  3. NFCLI fixing Nornir cli and cfg tasks multiline collection of commands
  4. Nornir worker - fixing not to raise error when not able to load Nebtox inventory.

0.15.4¤

BUGS¤

  1. Fixing FastMCP service tool calling results validation and adding additional tool calling tests

FEATURES¤

  1. Agent service - adding support to build agents using YAML definition
  2. Agent service - adding support for grok LLM provider

CHANGES¤

  1. Dependencies updates:

    • pyyaml: 6.0.2 → 6.0.3
    • pyzmq: 27.0.2 → 27.1.0
    • psutil: 7.0.0 → 7.2.2
    • tornado: 6.5.2 → 6.5.4
    • pydantic: 2.11.7 → 2.12.5
    • rich: 14.1.0 → 14.3.2
    • pyreadline3: 3.4.1 → 3.5.4
    • cerberus: 1.3.5 → 1.3.8
    • jmespath: 1.0.1 → 1.1.0
    • ncclient: 0.6.15 → 0.7.0
    • ntc-templates: 8.0.0 → 8.1.0
    • scrapli-netconf: 2025.01.30 → 2026.1.12
    • xmltodict: 0.13.0 → 1.0.2
    • lxml: 4.9.4 → 6.0.2
    • textfsm: 1.1.3 → 2.1.0
    • dnspython: 2.4.2 → 2.8.0
    • robotframework: 7.3.2 → 7.4.1
    • langchain: 1.0.2 → 1.2.10
    • langchain-ollama: 1.0.0 → 1.0.1
    • ollama: 0.6.0 → 0.6.1
    • pynetbox: 7.5.0 → 7.6.1
    • fastapi: 0.116.1 → 0.129.0
    • uvicorn: 0.35.0 → 0.40.0
    • python-multipart: 0.0.20 → 0.0.22
    • mcp pinned to 1.26.0

DOCS¤

  1. Updating FastMCP service documentation

0.15.3¤

FEATURES¤

  1. Netbox service - get_interfaces task added interface_list argument to filter interfaces by a list of names
  2. Netbox service - get_circuits task added add_interface_details argument to add ip addresses, vrf and child interface info to the circuits when set to True
  3. Netbox service - create_ip_bulk task added interface_list argument to filter interfaces by a list of names
  4. Netbox worker - support added for 4.5 Netbox version

CHANGES¤

  1. Nornir - Removed complete output from tests markdown report

BUGS¤

  1. Netbox - get_connections fixing parent endpoint handling for virtual interfaces

0.15.2¤

BUGS¤

  1. NorFab nfcli - Fixing show jobs call

CHANGES¤

  1. NorfabNfcli - enhancing jobs commands on the client to query local database
  2. NorFab client - refactored mmi calls, removed get, post and recv_from_broker methods as not needed anymore
  3. FastAPI - removed job_post and job_get api as no longer needed, might need to refactor it in the future
  4. NorFab client - enhanced fetch_jobs db method to allow filter by service, workers, last N jobs etc.

FEATURES¤

  1. NorFab nfcli - added nowait argument to not wait for job results and return prompt straight away

0.15.1¤

BUGS¤

  1. Nornir service watchdog - fixing connection_idle_timeout handling
  2. Netbox service - fixing ssl_verify handling to suppress InsecureRequestWarning
  3. Norfab shell - fixed references to deprecated broker fss calls, replaced with calls to filesharing service

0.15.0¤

CHANGES¤

  1. Introduce sqlite3 DB into client for jobs state persistence
  2. Updated NFP semantics for better performance and readability
  3. Worker - added support for job.stream capability to stream a set of bytes back to client, used for file transfers, added new NFP.STREAM command as part of this effort
  4. Added support for new NFP.PUT command for client to update running jobs on worker, currently used by client to command worker a number of file offsets to stream back, but can be extended to provide user input mid job execution, e.g. agent requesting input from user.
  5. Client - refactored fetch_file method to use new stream and put capabilities
  6. Nornir test markdown - various markdown output improvements such as added total tests to summary, added test number column to the table, added host name next to every collected command, removed support for hosts inventory as it bogged browser memory for being too long.

FEATURES¤

  1. Client and worker - added delete_fetched_files task to remove files fetched from broker
  2. Created new filesharing service worker to host files, by default broker runs 1 such worker locally, this improves norfab hosting capabilities and open paths toward integrating with external file sharing resources e.g. github, s3, http etc.

0.14.0¤

CHANGES¤

  1. Netbox sync_device_interfaces - refactored to use bulk update and bulk create operations
  2. Netbox service - deprecated support for Netbox below 4.4.0 version
  3. Netbox service - get_interfaces added label and mark_connected fields
  4. Netbox service - get_connections added remote_device_status field
  5. Nornir service - test task added nornir hosts inventory to results if extensive set to true
  6. Nornir tests markdown - added hosts expandable inventory section
  7. Nornir tests markdown - added total tests number for detailed section for each host
  8. Nornir tests markdown - updated headings and paragraphs content
  9. Enhanced message construction for NFP protocol by adding message builder
  10. Enhanced client, worker and broker socket handling by adding thread locks

FEATURES¤

  1. Netbox service - added create_device_interfaces task
  2. Netbox service - added branch_create_timeout inventory argument to control timer waiting for new branch to be created
  3. Netbox service - added integration with Netbox BGP Plugin in a form of get_bgp_peerings task to fetch BGP sessions data for devices, added nfcli shell command to call get_bgp_peerings task.
  4. Netbox service - get_nornir_inventory task added support for bgp_sessions argument. if True, fetched devices' BGP peerings from netbox and stores them under bgp_sessions key in host's data.

BUGS¤

  1. Nornir tests markdown - fixed detailed output handling to not collect suite into summary table
  2. Nfcli - fixed show client command function calling

0.13.0¤

BUG FIXES¤

  1. Fixing event severity handling in worker.

CHANGES¤

  1. Changed worker to use sqlite database for job persistent storage instead of json files
  2. Netbox sync device facts - enhanced sync logic to use bulk device updates

FEATURES¤

  1. Nornir test task - added extensive argument to return detailed results
  2. Client - added markdown argument to run_job method to support rendering results into markdown output
  3. Client - added Nornir test task markdown render function to return tests results in a form of markdown report.
  4. Client - added generic markdown render function to return results in a form of markdown report.

0.12.7¤

FEATURES¤

  1. NFAPI logging - added support for logging->log_events parameter to emit events as syslog messages
  2. Added context manager support for NFAPI to simplify invocation from python scripts

CHANGES¤

  1. NFAPI changed start method arguments from start_broker to run_broker and workers to run_workers
  2. Nornir task - enhanced task import logic
  3. Nornir worker - added filter hosts method to reduce duplicate code
  4. NorFab client - added ensure_bytes method to reduce duplicate code

0.12.6¤

BUGS¤

  1. Netbox service - fixed get_circuits handling bug, was not returning circuits data due to recent code refactoring, updated test to catch this kind of an issue.

0.12.5¤

BUGS¤

  1. Containerlab - fixing error handling when result is None
  2. Workflow - fixed emitting event progress for cli shell
  3. Netbox - bulk ip create updated to sort interfaces names to make ip allocation order deterministic

CHANGES¤

  1. Updated dependencies:
  2. TTP 0.9.5 -> 0.10.0
  3. nornir-salt 0.22 -> 0.23

  4. Renamed Netbox service tasks:

  5. update_device_facts -> sync_device_facts
  6. update_device_interfaces -> sync_device_interfaces
  7. update_device_ip -> sync_device_ip

FEATURES¤

  1. Netbox service - get_connections enhanced to retrieve power outlet connections.

0.12.4¤

BUGS¤

  1. Netbox worker - fixing handling of Netbox instance for child subnet creation

FEATURES¤

  1. Netbox worker - update interface descriptions task now can supply dictionary of interface descriptions

0.12.3¤

BUGS¤

  1. Fixing handling of entry points for sourcing norfab workers plugins for Py3.10+

CHANGES¤

  1. Docker images updated to use Py3.11

0.12.2¤

CHANGES¤

  1. Updated Python version dependencies
  2. Adding FastMCP worker
  3. Updating agent worker - work in progress
  4. Adding Streamlit worker to host WEB UI - work in progress

0.12.1¤

BUGS¤

  1. Netbox service - restored Netbox v4.2.0 support
  2. Fixing Picle shell netbox get interfaces to have interface_regex argument
  3. Fixing Picle check netbox get connection arguments

0.12.0¤

BUGS¤

  1. FastAPI Service - fixing JSON references for OpenAPI schema, which previously broken led to error in swagger and redoc UIs rendering.

FEATURES¤

  1. Netbox service - get_interfaces task added interfaces_regex filter
  2. Netbox service - get_connections task added interfaces_regex filter
  3. Netbox service - get_connections added support to retrieve virtual interfaces connections for physical and lag interfaces
  4. Netbox service - create_ip added support to automatically assign IPs to link peers or use peers IP addresses prefixes to allocate next available IP address
  5. Netbox service - create_ip added support to create child subnet within parent prefix and assign IP out of it
  6. Netbox service - added new task create_ip_bulk to create IP addresses for devices using interfaces regex match
  7. FastMCP service - created NorFab MCP service

0.11.2¤

CHANGES¤

  1. Moving to Python 3.10 as primary supported version instead of 3.9 due to addition of FastMCP service which only supports Py3.10 and up.
  2. Updated build dockerfiles to use python:3.10-slim-trixie as a base image

BUGS¤

  1. Fixing FastAPI worker argument handling by setting it to all by default

0.11.1¤

BUGS¤

  1. Fixed containerlab show lab outputting
  2. Enhanced nfcli logic to be able to start broker and workers only without a client
  3. Updated aio Dockerfile to start broker and workers only

0.11.0¤

FEATURES¤

  1. FastAPI Services - enhanced to generate API endpoints for all services tasks automatically using @Task decorator data
  2. NFCLI - Picle show containerlab containers now emits output with nested tables
  3. Netbox Service - create_ip task enhanced to source prefixes to allocate next IP from using prefix description string
  4. Netbox Service - Added create_prefix task to allocate next available prefix
  5. Nornir Service - Adding nb_create_prefix Jinja2 filter allocate next available prefix during templates rendering
  6. Worker - Added fastapi argument to @Task decorator to control FastAPI REST API endpoints auto-generation
  7. Containerlab Service - added support for Containerlab 0.69+
  8. Netbox Service - added support for branching plugin, made create and update tasks be branch aware, updated nfcli shells to support branch argument
  9. Netbox Service - added delete_branch task

BUGS¤

  1. Fixing nornir test picle shell test task handling for verbose-result and dry-run
  2. Fixing nornir test handling for when suite renders to empty tests for a host
  3. Fixed Netbox service instance variable options sourcing for CLI shells

CHANGES¤

  1. Upgrading NAPALM library dependency from 5.0.0 to 5.1.0
  2. Upgrading PICLE library dependency from 0.9.0 to 0.9.1
  3. Upgrading Pynetbox library dependency from 7.4.0 to 7.5.0
  4. Refactoring Netbox service pydantic models
  5. BREAKING CHANGE: Starting NorFab 0.11.0 containerlab service only supports Containerlab 0.69+
  6. Dependencies updates.

0.10.0¤

FEATURES¤

  1. Adding support for Netbox >= 4.3.0
  2. Enhanced Netbox service inventory device filters to support GraphQL query string for device_list queries.
  3. Added Netbox service create_ip task to allocate new or source existing IP from prefix
  4. Added nb_create_ip Jinja2 filter to Nornir service to source IP allocations during templates rendering
  5. Added nfcli shell netbox create ip command to run IP allocations from interactive command line

0.9.1¤

BUGS¤

  1. Fixing list and dict annotations to also allow None values for workers tasks.

0.9.0¤

FEATURES¤

  1. Adding concurrency to worker jobs execution, adding new worker inventory parameter max_concurrent_jobs
  2. Adding @Task() decorator to expose worker methods as tasks, this decorator performs automatic type checking using type annotation, alternatively it supports input/output pydantic models to verify input arguments and return results.
  3. Passing on job argument to all NorFab tasks, job is an object that contains relevant metadata - client address, juuid, args, kwargs etc. Job object can be used to emit events.
  4. Adding workers echo task to perform tests, added respective nfcli commands tree workers.ping.
  5. Adding workers list_tasks method to return information about tasks in MCP compatible format.
  6. Added picle shell man.tasks command to retrieve information about NorFab services tasks

CHANGES¤

  1. Improved Netbox device update nfcli to include Fx hosts filtering for nornir datasource
  2. Result object added task_started and task_completed timestamp and service parameters

BREAKING CHANGES¤

  1. Instead of self.event worker now need to use job.event
  2. To add pydantic input / output models for tasks need to use @Task() decorator instead of @Task decorator
  3. Nornir Jinja2 templates context nornir.cli removed, need to use norfab.run_job instead

0.8.2¤

BUGS¤

  1. Fixed nornir inventory load from containerlab handling

0.8.1¤

BUGS¤

  1. Fixed show containerlab inventory command
  2. Fixed Nornir Worker inventory load handling
  3. Netbox interface update improving mac address handling

FEATURES¤

  1. Netbox service added get_containerlab_inventory task
  2. Containerlab service added deploy_netbox task

CHANGES¤

  1. Improved client post job retry logic
  2. FN filter argument for Nornir add presence handling for nfcli

0.8.0¤

CHANGES¤

  1. Restructuring pydantic models structures for better following DRY principles:
  2. Moved FastAPI models under norfab.models.fastapi
    1. Added norfab.models.nornir pydantic models
    2. Events and results models moved under norfab.models
  3. Added broker zmq_auth inventory parameter to turn zero mq authentication and encryption off
  4. Added verbose-result command line argument to relevant tasks to emit result details
  5. Updated CLI shells to support PICLE 0.9.0
  6. Enhanced Netbox service to support working with instances of Netbox of different major and minor releases

BUGS¤

  1. Fixed broker to allow workers reconnect on restart.

FEATURES¤

  1. Improved worker jinja2 templates rendering logic to allow render URL first and next download its content
  2. Added nornir refresh CLI command to refresh Nornir workers instances and reload inventory
  3. Added support for Netbox 4.2
  4. Added support for Nornir service to pull hosts inventory from Containerlab service

0.7.0¤

FEATURES¤

  1. Added new workflow service to run simple workflows constructed using YAML DSL

CHANGES¤

  1. NFCLI shells - updated to use nested outputter where appropriate
  2. Nornir worker - updated to set failed flag for its tasks according to test results
  3. Worker - Added status field to worker result object to reflect job execution status
  4. Nornir Service - replaced cfg_dry_run and cli_dry_run arguments with dry_run argument
  5. NFCLI shell - added aliases to use dash instead of underscore
  6. NFCLI shell - Moved Nornir service show commands under show nornir xyz path

0.6.0¤

FEATURES¤

  1. Added support for worker plugins
  2. Added support for nfcli custom shells

CHANGES¤

  1. All workers loaded into NorFab using entrypoints implementing lazy loading - workers classes only imported when they being used, in some cases allowing to save on startup time.

0.5.0¤

FEATURES¤

  1. FastAPI service added bearer authentication support
  2. Added hooks attachpoints nornir-startup and nornir-exit to influence Nornir service workers startup and exit

0.4.0¤

CHANGES¤

  1. Improved netbox get_circuits logic.
  2. Standardised worker get_version and get_inventory methods

Features¤

  1. Added runtime_inventory task to Nornir service, #6
  2. Added support to configure startup and exit hook functions in inventory to be executed by nfapi on start and on exit.

0.3.1¤

CHANGES¤

  1. Improved logging handling for NFAPI if it failing to start a worker
  2. Update client get method to return result as a dictionary for broker MMI, file and inventory services
  3. Enhanced Netbox update_device_facts and update_device_interface to support batch_size argument - a number of devices to process at a time
  4. Improved nfcli shell for Netbox service to provide more arguments for netbox update device facts command

FEATURES¤

  1. Added Netbox Service update_device_ip task to retrieve device interface IP addresses and create them in Netbox
  2. Added support to NorFab simple inventory and nfapi to load inventory from dictionary data as well as to explicitly provide base_dir information where to anchor NorFab environment
  3. Added support for NorFab inventory workers section items to be dictionaries in addition to OS path to YAML files allowing to construct workers inventory out of dictionaries and/or YAML files.

0.3.0¤

FEATURES¤

  1. Added "show version" support for nfcli client to display versions of locally installed libraries, fixes. #4
  2. Added "show broker version" support for nfcli client to retrieve broker report of the version of libraries broker is running on, fixes. #4
  3. Added support "show broker inventory" command to display broker inventory
  4. Simple inventory added support to produce a serialized dictionary output
  5. Broker added "show_broker_inventory" and "show_broker_version" MMI endpoints
  6. Added support for simple inventory service to render inventory using Jinja2, renderer passed on env variable that contains operating system environment variables, allowing to source any env data into NorFab inventory for both broker and workers. #5
  7. Created fastapi service to host REST API for NorFab

0.2.4¤

BUGS¤

  1. Fixed nfcli --workers-list handling
  2. Fixed job_data url handling for nornir cli/cfg/test tasks
  3. Fixed nfapi handling of empty worker name

FEATURES¤

  1. Added a set of confirmed commit shell commands to nornir cfg netmiko plugin

0.2.3¤

FEATURES¤

  1. Added nfcli --workers-list option to specify a list of workers to start

CHANGES¤

  1. Fixed handling of jinja2 import for the worker to make it optional

0.2.1¤

CHANGES¤

  1. Improved libs imports handling to account for distributed deployment
  2. Improved logging handling
  3. Fixed nfcli issue with starting components on NorFab #2
  4. Changed CTRL+C handling to trigger graceful NorFab exit

FEATURES¤

  1. Added broker -> shared_secret parameter in inventory.yaml to configure clients and workers broker shared secret key
  2. Added and tested docker files

0.2.0¤

CHANGES¤

  1. refactored get_circuits to use ThreadPoolExecutor to fetch circuits path from netbox
  2. adding job_data json load to nornir cli, cfg and test tasks

BUGS¤

  1. Fixing netbox get_devices dry run test
  2. Fixed netbox get_circuits devices site retrieval handling

FEATURES¤

  1. Added cache to Netbox get_circuits and get_devices tasks
  2. Added new agent worker to start working on use cases to interface with LLMs

0.1.1¤

BUGS¤

  1. Fixed Netbox CLI Shell handling of NFCLIENT

CHANGES¤

  1. Updated and tested dependencies for Netmiko 4.5.0
  2. Updated and tested dependencies for Nornir 3.5.0
  3. Updated and tested dependencies for Nornir-Salt 0.22.1

0.1.0¤

Changes¤

  1. Changes to Nornir service module files structure
  2. PICLE dependency updated: 0.7. -> 0.8.
  3. Made Nornir Service progress argument set to True by default to emit and display events for all Nornir Jobs
  4. Nornir tests changed table argument to be set to True by default
  5. Improved nfapi broker start logic to wait until broker fully initialized before proceeding to start workers

Features¤

  1. Added support for Nornir parse task to source TTP template from file with autocompletion
  2. Added Nornir File Copy task to copy files to devices using SCP
  3. Added support for logs to be collected into single file from all NorFab local processes
  4. Added to NorFab worker job_list and job_details methods
  5. Added show jobs summary and show jobs details commands to NorFab shell and to Nornir shell
  6. Added --create-env argument to nfcli utility to create NorFab folders and files to make it easier to get started using norfab

BUGS¤

  1. Fixed Nornir Service Watchdog to clean up dead connections from hosts data

0.0.0¤

Initial Release

Notable Features¤

  1. NorFAB Broker, Client and Worker base classes
  2. Nornir Service
  3. Network Service
  4. Simple Inventory Datastore Service
  5. File service
  6. ZeroMQ encryption