type: hybrid) on each data plane is used to forward the data to Tyk MDCB on the control plane, which then writes it to the Control Plane’s persistent storage.
Why a Separate Pump Process
Tyk Gateway writes traffic logs to its own local Redis, which is not reachable from the control plane. Tyk MDCB never reaches into a data plane’s Redis itself. It only receives data pushed to it over the RPC connection Gateways already use for configuration synchronization. The Hybrid Pump is a Tyk Pump instance, configured withtype: hybrid, deployed alongside your data plane Gateways. It reads traffic logs from the local Redis and forwards them, individually or as aggregated analytics, to Tyk MDCB, the same role Tyk Pump plays when the control and data planes are combined, adapted for a deployment where they’re separate.
Tyk Gateway also has a legacy built-in mechanism for this, enabled with
analytics_config.type: rpc, which sends traffic logs to Tyk MDCB without a separate pump process. It has no aggregation support and runs inside the Gateway process itself. The Hybrid Pump is the current recommended approach. If you adopt the Hybrid Pump, set analytics_config.type to an empty string on your Data Plane Gateways to disable the legacy mechanism, otherwise both compete to send the same traffic logs to Tyk MDCB.Connecting the Hybrid Pump to Tyk MDCB
To connect to Tyk MDCB, on the control plane, the Hybrid Pump needs to know where to find it (connection_string) and a secret to authenticate with (api_key).
api_key is the API key of a Tyk Dashboard user, obtained by registering a user scoped to the same Organisation as your data plane. See Tyk MDCB for that setup.
Set use_ssl: true to encrypt this connection over TLS. The Hybrid Pump is the TLS client and Tyk MDCB the server; there’s no client certificate involved, so this only encrypts the connection, it doesn’t identify the Pump to MDCB (api_key does that). If Tyk MDCB’s certificate isn’t trusted by your system’s CA pool, for example because it’s self-signed, set ssl_insecure_skip_verify: true rather than skip TLS entirely.
Hybrid Pump Meta
The Hybrid Pump is declared and configured like any other pump, as described in the Tyk Pump configuration guide, with both common and pump-specific settings. The specific settings live inmeta:
Tuning the RPC Connection Pool
rpc_pool_size controls how many concurrent RPC connections the Hybrid Pump opens to Tyk MDCB. Each connection can carry data independently, so a larger pool lets the pump push more data to Tyk MDCB in parallel.
Consider increasing this value if:
- You’re running high API request volumes and the pump can’t keep up with sending data to Tyk MDCB.
- You’re sending (non-aggregated) traffic logs, which produce significantly more records than
aggregatedmode.
rpc_pool_size also has diminishing returns past a point: Tyk MDCB only processes up to 8,192 RPC calls concurrently by default, a limit shared across every connection from every data plane. Once that’s saturated, more connections just queue for the same shared budget rather than increasing overall throughput.
There’s usually no benefit to raising rpc_pool_size beyond your actual concurrency needs.
Traffic Logs or Aggregated Analytics
The Hybrid Pump can send every traffic log to Tyk MDCB, or it can create aggregated analytics. Theaggregated field controls this behavior:
aggregated: false(default): the Hybrid Pump sends every traffic log to Tyk MDCB individually. This is the appropriate mode to use if you need to see the traffic in Tyk Dashboard’s Log Browser.aggregated: true: the Hybrid Pump summarizes traffic logs, before sending it to the Control Plane. This reduces the bandwidth requirement with less data crossing the (often expensive, sometimes cross-region) link to Tyk MDCB. The side-effect is that the individual traffic logs are not available to view in the Log Browser.
The
tyk-data-plane Helm chart sets aggregated: true by default, to minimize traffic out of the box.aggregated: true; they have no effect on individual traffic logs:
track_all_paths: aggregate all endpoints, not just tracked ones.store_analytics_per_minute: aggregate per minute rather than per hour.enable_mcp_aggregation: see MCP Proxy Traffic below.
How Tyk MDCB Handles The Data
Tyk MDCB receives either traffic logs or aggregated analytics from each Hybrid Pump, and writes it into the Control Plane’s persistent storage that Tyk Dashboard reads from. Aggregated analytics (generated if the Hybrid Pump is configured withaggregated: true) are always written directly to persistent storage, for Tyk Dashboard’s Traffic Analytics graphs.
Traffic logs (aggregated: false) can be handled in one of two ways, controlled by Tyk MDCB’s forward_analytics_to_pump setting:
If you need to export the data from the Control Plane to a third-party sink such as Splunk or Datadog, you must first store it in the Control Plane Redis by setting
forward_analytics_to_pump: true.
forward_analytics_to_pump has no effect on aggregated analytics. Tyk MDCB always writes aggregated analytics straight to persistent storage, whichever way it’s set. This means analytics aggregated in the data plane by the Hybrid Pump reliably populate Tyk Dashboard’s Traffic Analytics graphs, but cannot be routed onward to a third-party sink through the Control Plane Pump.Tyk MDCB’s Built-In Writer
Tyk MDCB has much of the same capability as the dedicated Mongo/SQL pumps described in Control Plane Pumps, but not all of it. Whenforward_analytics_to_pump is false, this built-in writer will process the traffic logs received from the data planes.
This facility:
- Writes traffic logs directly to the persistent storage for the Log Browser
- In parallel, computes and writes aggregated analytics from that same data, for the Traffic Analytics graphs: the same computation the Mongo/SQL Aggregate Pumps perform
tyk_sink.conf, not in pump.conf:
analytics object’s connection fields exactly mirror Common Mongo Meta or Common SQL Meta, depending on analytics.type; see those for the full field list rather than a third copy of it here.
Limitations:
- No filtering: there’s no equivalent to a Tyk Pump’s
filterssetting (org_ids,api_ids,response_codes, and theirskip_*counterparts). Every request that reaches Tyk MDCB is stored; you can’t exclude specific APIs, Organisations, or response codes. - No MySQL support:
analytics.typeonly recognizesmongoandpostgres; any other value, includingmysql, is accepted but silently falls back tomongorather than failing. - No GraphQL awareness: GraphQL requests pass through as ordinary traffic logs and general aggregated analytics only; see GraphQL Traffic below for what’s missing.
- No automatic MCP aggregation: MCP traffic logs are stored, but not aggregated automatically the way REST traffic is; see MCP Proxy Traffic below for how to populate Activity by MCP.
forward_analytics_to_pump: true and configure the Control Plane Pump as any other Control Plane Pump.
Choosing a Configuration
This table covers REST traffic; see GraphQL Traffic and MCP Proxy Traffic below for how those differ.GraphQL Traffic
The mechanics above are for REST traffic. There is no dedicated path through the Hybrid Pump or Tyk MDCB for GraphQL. The Hybrid Pump has no GraphQL-specific handling, so GraphQL requests pass through as ordinary, undifferentiated traffic logs: they’re included in Log Browser and in the general aggregated analytics like any other request, but they never populate the GraphQL-specific Activity by Graph screen. That screen depends on thesql-graph-aggregate pump, which only exists for combined deployments; there’s no distributed-deployment equivalent.
MCP Proxy Traffic
The mechanics above are for REST traffic. MCP proxy traffic has its own dedicated path through the Hybrid Pump and Tyk MDCB. But unlike REST, storing MCP traffic logs doesn’t also generate aggregated MCP analytics automatically, and Tyk Dashboard’s Log Browser never reads MCP data at all, in any topology. Whenforward_analytics_to_pump is false, Tyk MDCB stores MCP traffic logs in the Control Plane’s persistent storage for your own downstream querying only, the same as the Mongo MCP Pump in a combined deployment. It doesn’t compute and store MCP aggregated analytics.
To populate Activity by MCP, you can either:
- Set
enable_mcp_aggregation: trueandaggregated: trueon the Hybrid Pump. This aggregates MCP traffic logs on the data plane before sending: you gain Activity by MCP, but lose the individual MCP traffic logs. This is the same trade-off as REST API traffic has withaggregated: true. - Keep the Hybrid Pump sending MCP traffic logs individually, set
forward_analytics_to_pump: true, and configure a Control Plane Pump with an MCP aggregate pump type (mongo-mcp-aggregateorsql-mcp-aggregate) to compute Activity by MCP’s data from that forwarded data.
If
aggregated: true on the Hybrid Pump but enable_mcp_aggregation is left false (the default), MCP analytics are dropped entirely rather than aggregated. Unlike REST traffic, which still gets aggregated in this mode, MCP traffic gets nothing at all: no aggregated data, and no traffic logs either, since aggregated: true already means individual traffic logs of any kind aren’t sent.