> ## Documentation Index
> Fetch the complete documentation index at: https://docs.internal.nscale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Relationship: Microsoft Matrix (Kusto) connector

> The Microsoft Matrix Kusto connector as a consumer of Fleet Manager inventory.

* **Kind:** Projection
* **Version:** 1
* **Fleet Manager owner:** Fleet Manager squad, #fleet-manager-chat (individual claimant pending)
* **Counterpart owner:** Microsoft via the Nscale account team; internal delivery owner Fleet Manager squad
* **Last reviewed:** 2026-09-09

## What flows

The `matrix-connector` (`src/fleet_manager/api/connectors/matrix/`, ADR-0021 and ADR-0022) consumes [device](../start-here/glossary#node)
and cable inventory events over JetStream, drains a delivery queue into [Kusto](../start-here/glossary#kusto) projection tables for servers,
NVSwitches, datacentres and link staging, and runs a polling backstop. It holds `inventory:read` and
`inventory-links:read`. It also reads [NetBox](../start-here/glossary#netbox) directly: `wire_netbox_direct` installs either the two-clock sync
loop (`netbox_direct_enabled`) or the legacy per-delivery `NetBoxDirectFeed`, and both populate the `EthDevices`
and `IbInventory` tables from NetBox rather than from Fleet Manager projections, so this connector has an
observation input of its own (see [netbox](./netbox)). Site scope is a fail-closed `site_filter`; the freshness
target is under five minutes.

## What breaks if this changes

A `DeviceInventoryProjection` or cable projection shape change breaks table transforms and the schema lint. A NetBox
outage or schema change stales `EthDevices` and `IbInventory` directly, independent of Fleet Manager. A
NetBox naming deviation (a missing asset tag, an off-convention [IB](../start-here/glossary#infiniband) switch name) raises `MatrixTransformError` in
the worker: in production the delivery is marked failed and dead-lettered with a monitored gauge, in dev the record
is skipped with a warning and a counter. The row is missing from the customer feed either way, but the signal is in
the delivery queue, logs and metrics, not silent.

## Enforcement

* **Principal:** `matrix-connector`.
* **Mechanism:** towards Fleet Manager, FM OAuth client (private-key JWT) in the hub chart roster; towards NetBox, the NetBox API token (see [netbox](./netbox)); towards Kusto, the
  Azure service principal in the `azure-kusto` and `azure-kusto-admin` [1Password](../start-here/glossary#1password) items
  (`src/fleet_manager/settings/clients/azure_kusto.py`); towards [NATS](../start-here/glossary#nats), the `fleet-matrix-connector-client` certificate on the Fleet Manager-owned plane (see
  [nats](./nats)).
* Hub roster client `matrix-connector`; `matrix-connector-schema-lint` [pre-commit](../start-here/glossary#pre-commit) hook.
* Settings: `src/fleet_manager/settings/agents/matrix.py`; operations guide
  [Matrix Connector Operations](../operator-guide/matrix-connector-operations).

## Gaps

* Kusto ingest visibility is Microsoft-side; Fleet Manager measures queue age, not sink-visible latency.

## Change log

* 2026-09-09 v1: created; describes present behaviour.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.