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