Skip to content

Releases: Vadims06/topolograph

v2.66.16

Choose a tag to compare

@Vadims06 Vadims06 released this 14 Jul 11:34

Topolograph Release Notes v2.66.16

Fixes

OSPF Watcher events via Fluent Bit: correct up/down classification
Adjacency and network up/down events received from a watcher running the
Fluent Bit exporter were misclassified as cost changes, so they never appeared
in the up/down event history. They are now stored and shown correctly.

Fluent Bit event payload parsing
Nested link, network and TE-metric fields in Fluent Bit event payloads are now
normalised on ingestion, so all event types (adjacency, network, TE metric)
are accepted regardless of exporter payload shape.

Internal

  • Test infrastructure improvements.

Compatibility

Feature Minimum version
Fluent Bit event export OSPF Watcher >= v3.2.0

Topolograph remains compatible with existing Logstash and Vector exporters;
no watcher upgrade is required for them.

v2.66 (13.07.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 13 Jul 10:12

Features

Redesigned public landing page

Overload-bit aware shortest-path calculation
Path computation now honours the overload / stub-router flag on nodes.

  • IS-IS: overloaded nodes are hard-excluded from transit. If the only path transits an overloaded node the destination is reported as unreachable, and the reachable prefix up to the blocking node is highlighted on the graph.
  • OSPF stub-router (max-metric): overloaded nodes remain reachable as last resort. The path is returned but flagged so the user knows it forwards through a node advertising max-metric.

The UI displays a warning banner (⚠ Destination unreachable … or ⚠ Forwarded via overloaded router) below the path description when the flag fires. No change for graphs without any overloaded node.

API: POST /path/ and POST /path/network/ responses include a new optional overload object when at least one node carries the flag:

{
  "overload": {
    "verdict": "unreachable | reachable",
    "last_resort": false,
    "blocked_by": "pe-r2",
    "partial_path_nodes_name_as_ll": ["192.168.100.100", "pe-r2"]
  }
}

Cisco OSPF TE opaque-area (Type 10) support
TE metric, admin group, max/reservable bandwidth, and unreserved bandwidth are now parsed from Cisco show ip ospf database opaque-area output in addition to FRR. Parsed TE attributes are attached to graph edges for path-cost display.

OAuth 2.0 authorization-code provider for AI agent integration

Demo graph now ships with sample monitoring events
New users can now see what the OSPF/IS-IS monitoring timeline looks like without connecting a real watcher first.

Register page now available in all six languages

Updated How-To guide screenshots

YAML diagram edit toolbar
The /yaml-diagram page now has a toolbar for editing a loaded/shown/saved graph directly, without hand-editing YAML: add or edit a node, delete a node, and add/edit/delete an edge (parallel duplicate edges are shown individually so the right one can be picked). Every change is applied immediately through the graph's REST API and reflected back into the YAML text area and the diagram.

YAML diagram source code editor
The /yaml-diagram source pane is now a code editor: syntax highlighting for keys/values/comments, line numbers, a structure overview with per-block item counts, and a minimap. Tab/Shift-Tab indent, auto-indent on Enter, and native undo/redo are preserved.

image

Design Mode: save a write-shared diagram in place
A diagram shared with write access can now be saved back to the same shared graph instead of forking a new copy.

TE edge attributes
The edge help now documents optional traffic-engineering attributes: admin_group, temetric, max_link_bw, max_rsrv_link_bw, and unreserved_bw_0 .. unreserved_bw_7.

AI agent landing form

ECMP: spread parallel links
Expanding an ECMP edge now draws each member link as its own straight, evenly spread parallel line anchored at its own point on the node border, instead of a shared curved fan. Endpoint nodes grow to fit the fan and shrink back once the ECMP edges are collapsed.

image

Fixes

Google login no longer fails with Internal Error
Fixed a bug that caused every Google sign-in to fail after the user granted consent.

"The topology is absolutely the same." no longer repeats on every page open

Upload page cosmetic fix
Fixed an internal cosmetic issue on the upload page that caused browser console errors. No functional impact.

Some API/UI actions returned a 500 error instead of "not found" for missing records

Monitoring dashboard now shows the correct graph creation time

Watcher status dock no longer overlaps content on scroll
The monitoring page's watcher status panel now scrolls with the page instead of staying fixed in place.

Path lookup could crash on a monitored graph with certain watcher events
Applying watcher events to the graph now reuses the same event-resolution logic as the OSPF/IS-IS monitoring page, so a down/up flap resolves correctly and a TE event is no longer mistaken for a cost change.

UI's shortest-path diagram could disagree with the /api/path endpoint
On a watcher-monitored graph, /api/path reflects watcher-detected cost changes and link flaps since the graph was captured, while the "show shortest path" and "remove edge to see backup path" diagrams still showed the graph exactly as originally captured. The two could report a different number of equal-cost paths, or a different cost, for the same graph and routers. Both diagrams now apply the same watcher event resolution /api/path uses, so they never disagree about a monitored graph's current state.

Edge details API: return 404 for an out-of-range edge_id in get_edge_details.

ECMP link expand/collapse no longer moves endpoint nodes
Expanding and collapsing ECMP links now keeps the graph layout stable instead of causing visible node movement.

Compatibility

Feature IS-IS Watcher OSPF Watcher Topolograph
Agent OAuth 2.0 provider any any ≥ v2.66.1
SRLG visualization and tracking ≥ v3.2.0 ≥ v2.66
Node-flag display (overload / attached / ABR / ASBR) ≥ v3.1.6 ≥ v2.66
Overload-bit aware path calculation ≥ v3.1.6 ≥ v2.66
Heartbeat / live-watcher indicator ≥ v3.1.1 ≥ v2.63

v2.65 (07.06.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 13 Jul 09:47

Topolograph Release Notes v2.65

Features

API: new GET /api/events/{graph_time}/adjacency/timeline endpoint
Returns adjacency up/down events already grouped into chronological time waves, so a client can narrate a network incident without post-processing hundreds of raw events. Grouping is computed server-side.

  • Waves are split by inter-event gaps: a new wave starts when the gap to the next event exceeds TIMELINE_GAP_MULTIPLIER * median_gap_sec (median is robust to bursts). median_gap_sec and the multiplier are echoed in the response.
  • Each wave is characterised with start_ts, end_ts, duration_sec, event_count, density, distinct_devices, trigger_device, pattern and converged.
  • start_ts/end_ts are ISO 8601 with Z (e.g. 2025-05-10T17:08:17.707000Z), the same format as the start_time/end_time query params, so a client can re-query the existing /adjacency endpoint for a wave's individual events.

pattern classifies the wave by device state, mirroring the graph-level status from /graph/{graph_time}/status:

pattern Meaning Example Related graph status
outage At least one device is left down at the end of the wave (fell and did not come back). R1 down (no later up); R1 down, R2 down→up (R1 still down) critical (single host down)
flap Everything that went down came back up within the wave. Independent of device count. R1 down→up; R1..R100 each down→up warning (host down then up)
up Only up events, nothing went down in the wave (recovery or brand-new adjacency). R1 up, R2 up ok (up-only events)

converged is true when every device left down in the wave recovers later on the timeline (this or any later wave).

API: GET /api/graph/{graph_time}/status now includes top_unstable_devices
A top-N list of {device, event_count} sorted descending, answering "which device is worst" without a separate endpoint.

Fixes

Event time-range query is now inclusive at both ends
Re-querying a wave's [start_ts, end_ts] time window now returns exactly that wave's events (no boundary events lost). Previously, events at the exact end timestamp were excluded.

all_host_up_down_events is now returned in chronological order
GET /api/events/{graph_time}/adjacency sorts host up/down events by @timestamp in the DB query (previously returned in insertion order).

Configuration

  • TIMELINE_GAP_MULTIPLIER (default 5): the multiplier used to detect wave boundaries. Override via the environment variable of the same name.

v2.64 (01.06.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 13 Jul 09:43

Topolograph Release Notes v2.64

Features

New endpoint: GET /api/graph/{graph_time}/edges
Returns a paginated list of edges for a graph with support for graph-level pre-filters (protocol, watcher, area) and per-edge attribute filters. Exact match (?weight=10) and range operators (__gt, __lt, __gte, __lte) are supported for any edge attribute including TE fields (temetric, max_link_bw, max_rsrv_link_bw, unreserved_bw_0..7), IS-IS fields (isis_level), and arbitrary user-defined attributes.

GET /api/graph/{graph_time}/nodes — new filters
Added protocol (ospf / ospfv3 / isis / yaml), watcher (true/false), and area query parameters. These check graph-level document flags before touching igraph, returning 404 with a clear message when the graph does not match the filter.

GET /api/diagram/{graph_time}/nodes and /edges — pagination
Both endpoints now return { items: [...], pagination: { page, per_page, total, total_pages } } instead of a bare list. Added page and per_page query parameters. Fixed style: deepObject swagger declaration — parameters are now style: form (flat key=value), matching how the handlers have always read request.args.

MCP server updated
get_nodes and get_edges MCP tools now call /graph/{graph_time}/nodes and /graph/{graph_time}/edges respectively, exposing protocol, watcher, area, page, and per_page parameters. get_edges accepts edge_query_params as a flat dict for per-edge attribute filtering.

GET /api/graph/ — monitoring filters, search, and pagination
The graph-list endpoint now returns { items: [...], pagination: { page, per_page, total, total_pages } } and adds:

  • is_monitored (true/false) — filter by provenance: graphs received from a watcher vs manually uploaded. Each returned graph also reports is_monitored.
  • is_live — per-graph field: whether the source watcher is currently sending heartbeats (last_seen within 3× its heartbeat interval). Manual graphs and graphs with no recent heartbeat are false.
  • name — case-insensitive substring over graph_time or watcher_name (e.g. ?name=before_maintenance).
  • latest_only now returns the single newest graph among those matching the filters (previously one per watcher).
  • page / per_page pagination. The watcher_name query parameter is removed — use name instead.

The Topolograph SDK (graphs.list / graphs.get) and MCP get_all_graphs tool expose the same parameters and surface is_monitored / is_live.

Area filtering on /nodes, /networks, and /edges
Narrow query results to a specific OSPF or IS-IS area in one parameter:
?area=0, ?area=0.0.0.1, or ?area=49.0001.

  • /nodes?area=X — returns only routers that participate in area X. Area Border Routers (ABRs) appear in every area they belong to.
  • /networks?area=X — returns only networks advertised in area X. The displayed area field on each network and termination point reflects the actual advertising area.
  • /edges?area=X — returns edges with at least one endpoint in area X. Useful for plotting an area's adjacencies including its boundary links to neighboring areas.

Standard OSPF area formats (0, 1, 0.0.0.1) are accepted interchangeably. IS-IS areas (49.0001, etc.) are matched as written.

Fixes

API: GET /api/diagram/{graph_time}/edges?src_node=<ip> returned 404 "Node was not found"
Connexion did not reliably bind src_node/dst_node query parameters to function arguments when values contained dots (e.g. IP addresses). The parameters are now read directly from request.args. Additionally, filtering edges by only src_node (without dst_node) no longer triggers a false 404 for the empty destination.

API: getPath with unknown IS-IS node ID raised an unhandled exception
Searching for a non-existent node by IS-IS-style attribute (e.g. AAAA.BBBB.CCCC) on an OSPF graph raised a KeyError because the attribute does not exist on OSPF graphs. The error is now caught and returned as a proper {"error": "..."} response.

API: GET /api/events/{graph_time}/adjacency and /networks returned 500 for OSPF graphs
Two bugs caused the event endpoints to fail on OSPF graphs:

  1. swagger.yml marked level_number (an IS-IS-only field) as required in all four event response schemas — Connexion response validation rejected OSPF events that omit it. The field is now optional in NetworkUpDownEvent, HostUpDownEvent, LinkMetricChangeEvent, and NetworkMetricChangeEvent.
  2. TELinkMetricChangeEvent had no output_api property, causing an AttributeError when TE link metric events were serialised for the API response. Added output_api returning the same shape as LinkMetricChangeEvent.output_api.

Performance

Faster /nodes and /edges responses on large graphs
Per-router area membership is now computed once when a graph is uploaded rather than recomputed on every API request. Graphs uploaded with earlier versions benefit automatically on first read after the upgrade.

v2.63 (25.05.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 25 May 19:36
1c087c3

New Features

Watcher heartbeat and status card

OSPF Watcher and IS-IS Watcher now send periodic heartbeats to Topolograph. A new Watchers Status card on the monitoring page shows each connected watcher with its area/ASN and the time of last contact, auto-refreshed every 30 seconds.
watcher_status

Improvements

Monitoring page UI: Fixed layout.

Runtime upgrade

Python 3.11 → 3.12. Existing user passwords are transparently re-hashed on first login - no manual action required.

Fixes

  • Fixed logout redirect error introduced in v2.62.

v2.62 (30.04.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 30 Apr 22:10

New Features

Multi-LSDB upload workflow

LSDB upload now supports both single-file and multi-file workflows in one screen, making bulk ingestion easier during onboarding and migration tasks.
multiple_lsdb_form

Monitoring: broader event visibility

Monitoring now includes node-related events in addition to edge transitions, improving visibility during incident triage and change tracking.

ospf-monitoring-page-print-all-events-of-edge

Monitoring timeline and controls

Filter is added for the events in the Timeline. Fix max size of the Timeline to fit the screen size, better color-coded event markers.

ospf-monitoring-page-new-filter-is-applied

Fixes

Monitoring panel behavior: Edge event panel layout and interactions were stabilized, and edge tooltip state now stays synchronized with timeline filtering.

Other Improved API stability and UI interfaces.

v2.61 (30.04.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 30 Apr 22:08

New Features

Multi-language support

The interface is available in English, Russian, Chinese, Portuguese, Spanish, and French, with French included alongside the earlier set.

Translations are maintained in topolograph-lang and shipped with the application as a submodule so language packs can move on their own cadence.

Fixes

Shortest-path lookup: Choosing a destination router in the shortest-path tool no longer shows invalid or empty choices when some router identifiers are missing from the current graph data.

v2.59 (28.03.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 28 Mar 19:49

Improvements

Monitoring TE attributes over OSPF/IS-IS Watchers was added on Monitoring page

Real-time monitoring (including TE link attributes delivered over BGP-LS) appears in the Topolograph UI as updates stream in:

v2.58 (08.03.2026)

Choose a tag to compare

@Vadims06 Vadims06 released this 08 Mar 14:01

Topolograph Release Notes v2.58

New Features

Traffic Engineering (TE) link attributes: Topolograph can now use TE data from your OSPF or IS-IS LSDB to show link-level traffic-engineering information on the diagram. You get visibility into link TE metric, administrative group (affinity), maximum and reservable bandwidth, and unreserved bandwidth per priority—useful for capacity planning, path analysis, and finding links that meet your TE constraints. When TE data is present, you can filter diagram links by TE metric or bandwidth from the UI and via the diagram edges API or the Topolograph SDK.

UI improvements:

  • Graph background updated for better visibility
  • Popup forms and compare form layout refined
  • Edge tooltips: two-column layout and scroll for long attribute lists; bandwidth values formatted for readability
  • Network Statistics text placement adjusted
  • Network loading performance improved for large topologies

v2.57.2 (19.02.2025)

Choose a tag to compare

@Vadims06 Vadims06 released this 23 Feb 22:31
3bc0f33

Improvements

  • Build-in Napalm removed
  • 'vector', 'fluentbit' exporters support is added
  • Add network statistics and scoring system

Scoring

Scoring expanded

Scoring, subnets expanded

  • Watcher, new buttons: Pause, Enable Popups, Show Errors (show malformed BGP-LS messages)
    Watch demo