GKG Monetization Engineering
Two parallel tracks: instrument usage across all Orbit surfaces, and wire up tier-based access gating in the Rails monolith. ## Instrumentation Every Orbit entry point needs usage tracking for adoption metrics and billing. Surfaces to instrument: - **REST API** (`/api/v4/orbit/*`) — query, schema, status, tools endpoints - **MCP** (`tools/call`) — `query_graph` and `get_graph_schema` tool invocations - **gRPC** — `ExecuteQuery`, `GetGraphSchema`, `GetClusterHealth`, `ListTools` RPCs - **Dashboard frontend** — page views, graph interactions, schema explorer usage Per surface, capture: caller identity, endpoint/tool name, response format (raw vs llm), query type, result counts, latency, and whether the call was redacted. ## Tier gating Orbit is currently gated only by the `:knowledge_graph` feature flag. The `:orbit` entry in `PREMIUM_FEATURES` exists but is not checked. Work here: - Add `licensed_feature_available?(:orbit)` checks to all Orbit endpoints (REST, MCP, GraphQL mutations) - Keep the feature flag as a kill switch alongside tier enforcement - Rate limiting per plan tier if Product decides to differentiate - Coordinate with Fulfillment on metering or seat-based billing requirements ## Children - [Rails Monolith Tier Gating #221](https://gitlab.com/gitlab-org/orbit/knowledge-graph/-/issues/221) — feature gating and license enforcement in the Rails monolith - [GitLab Knowledge Graph Instrumentation for Usage Billing &20762](https://gitlab.com/groups/gitlab-org/-/work_items/20762) — usage instrumentation across all Orbit surfaces
epic