# routeplane-core/routeplane-devtools architecture

> Architecture diagram of the GitHub repository routeplane-core/routeplane-devtools, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/routeplane-core/routeplane-devtools
- Repository: https://github.com/routeplane-core/routeplane-devtools

## Overview

Routeplane Devtools provides three user-facing paths into the Routeplane AI Gateway: a TypeScript SDK for application requests, an `rp` CLI for development and operations, and an MCP server that exposes gateway operations to AI clients. The gateway performs inference, routing, governance, and administration; the repository supplies clients and adapters rather than implementing the gateway itself. The sampled code confirms SDK transport, CLI dispatch/authentication, and MCP tool dispatch; some documented resource and command wiring is represented at its exact enclosing directory because those implementations were not sampled.

Main entry points: [`packages/cli/src/index.ts`](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/index.ts) (Command dispatcher), [`packages/mcp-server/src/server.ts`](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/server.ts) (MCP request server), [`packages/sdk/src/core/client.ts`](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/client.ts) (Core HTTP client), [`packages/sdk/src/openai/client.ts`](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/openai/client.ts) (OpenAI-compatible client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sdk["TypeScript SDK"]
  node_sdk_openai["OpenAI-compatible client<br/>[client.ts]"]
  node_sdk_core["Core HTTP client<br/>[client.ts]"]
  node_sdk_headers["Header builder<br/>[headers.ts]"]
  node_sdk_stream["Streaming decoder<br/>[streaming.ts]"]
  node_sdk_inference["Inference requests<br/>[client.ts]"]
  node_sdk_resources["Gateway resources"]
  node_sdk_security["Agent security<br/>[mcp.ts]"]
  node_sdk_evals["Evaluation resources<br/>[evaluations.ts]"]
end

subgraph group_cli["CLI"]
  node_cli_entry["Command dispatcher<br/>[index.ts]"]
  node_cli_config["Profiles and config<br/>[config.ts]"]
  node_cli_resolve["Connection resolver<br/>[resolve.ts]"]
  node_cli_commands["Gateway commands"]
  node_cli_eval["Deterministic eval<br/>[eval.ts]"]
  node_cli_security["Agent operations<br/>[agents.ts]"]
  node_cli_feedback["Feedback command<br/>[feedback.ts]"]
  node_cli_auth["Control Plane auth<br/>[cp-auth.ts]"]
  node_cli_admin["Tenant and key admin"]
end

subgraph group_mcp["MCP Server"]
  node_mcp_entry["Stdio entry point<br/>[index.ts]"]
  node_mcp_server["MCP request server<br/>[server.ts]"]
  node_mcp_registry["Tool registry<br/>[index.ts]"]
  node_mcp_inference["Inference tools<br/>[inference.ts]"]
  node_mcp_security["Security tools<br/>[security.ts]"]
  node_mcp_management["Management tools<br/>[management.ts]"]
  node_mcp_observe["Observability tools<br/>[observability.ts]"]
end

node_developer(("Application developer"))
node_agent_client(("MCP client"))
node_operator(("CLI operator"))
node_gateway{{"Routeplane Gateway"}}
node_control_plane{{"Control Plane API"}}
node_providers{{"Model providers"}}

node_developer -->|"uses"| node_sdk_openai
node_sdk_openai -->|"builds headers"| node_sdk_headers
node_sdk_openai -->|"creates core client"| node_sdk_core
node_sdk_openai -->|"sends completions"| node_sdk_inference
node_sdk_openai -->|"decodes streams"| node_sdk_stream
node_sdk_core -->|"builds headers"| node_sdk_headers
node_sdk_core -->|"decodes SSE"| node_sdk_stream
node_sdk_core -->|"dispatches resource calls"| node_sdk_resources
node_sdk_core -->|"HTTP requests"| node_gateway
node_sdk_inference -->|"completion requests"| node_gateway
node_sdk_security -->|"posts policy requests"| node_sdk_core
node_sdk_evals -->|"scores cases"| node_sdk_core
node_gateway -.->|"routes inference"| node_providers
node_operator -->|"runs commands"| node_cli_entry
node_cli_entry -->|"resolves connection"| node_cli_resolve
node_cli_entry -->|"dispatches commands"| node_cli_commands
node_cli_entry -->|"dispatches eval"| node_cli_eval
node_cli_entry -->|"dispatches agent ops"| node_cli_security
node_cli_entry -->|"dispatches feedback"| node_cli_feedback
node_cli_entry -->|"dispatches admin"| node_cli_admin
node_cli_config -->|"supplies profiles"| node_cli_resolve
node_cli_auth -->|"reads and saves tokens"| node_cli_config
node_cli_admin -->|"authenticates requests"| node_cli_auth
node_cli_auth -->|"OAuth and API calls"| node_control_plane
node_cli_resolve -->|"resolves gateway access"| node_gateway
node_cli_commands -->|"calls gateway"| node_gateway
node_cli_security -->|"manages agent security"| node_gateway
node_cli_feedback -->|"submits feedback"| node_gateway
node_agent_client -->|"connects over stdio"| node_mcp_entry
node_mcp_entry -->|"starts server"| node_mcp_server
node_mcp_server -->|"registers tools"| node_mcp_registry
node_mcp_server -->|"dispatches inference"| node_mcp_inference
node_mcp_server -->|"dispatches security"| node_mcp_security
node_mcp_server -->|"dispatches management"| node_mcp_management
node_mcp_server -->|"dispatches observability"| node_mcp_observe
node_mcp_server -->|"reads resources"| node_gateway
node_mcp_inference -->|"sends inference requests"| node_gateway
node_mcp_security -->|"calls security endpoints"| node_gateway
node_mcp_management -->|"calls management endpoints"| node_gateway
node_mcp_observe -->|"reads telemetry"| node_gateway

click node_sdk_openai "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/openai/client.ts"
click node_sdk_core "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/client.ts"
click node_sdk_headers "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/headers.ts"
click node_sdk_stream "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/streaming.ts"
click node_sdk_inference "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/openai/client.ts"
click node_sdk_resources "https://github.com/routeplane-core/routeplane-devtools/tree/main/packages/sdk/src/core/resources"
click node_sdk_security "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/resources/mcp.ts"
click node_sdk_evals "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/resources/evaluations.ts"
click node_cli_entry "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/index.ts"
click node_cli_config "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/config.ts"
click node_cli_resolve "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/resolve.ts"
click node_cli_commands "https://github.com/routeplane-core/routeplane-devtools/tree/main/packages/cli/src/commands"
click node_cli_eval "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/commands/eval.ts"
click node_cli_security "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/commands/agents.ts"
click node_cli_feedback "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/commands/feedback.ts"
click node_cli_auth "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/cp-auth.ts"
click node_cli_admin "https://github.com/routeplane-core/routeplane-devtools/tree/main/packages/cli/src/commands"
click node_mcp_entry "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/index.ts"
click node_mcp_server "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/server.ts"
click node_mcp_registry "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/index.ts"
click node_mcp_inference "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/inference.ts"
click node_mcp_security "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/security.ts"
click node_mcp_management "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/management.ts"
click node_mcp_observe "https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/observability.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sdk_openai,node_sdk_core,node_sdk_headers,node_sdk_stream,node_sdk_inference,node_sdk_resources,node_sdk_security,node_sdk_evals,node_agent_client toneBlue
class node_cli_entry,node_cli_config,node_cli_resolve,node_cli_commands,node_cli_eval,node_cli_security,node_cli_feedback,node_cli_auth,node_cli_admin toneAmber
class node_mcp_entry,node_mcp_server,node_mcp_registry,node_mcp_inference,node_mcp_security,node_mcp_management,node_mcp_observe,node_gateway,node_control_plane toneMint
class node_developer,node_operator,node_providers toneIndigo
```

## Components

### TypeScript SDK

- [OpenAI-compatible client](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/openai/client.ts): `packages/sdk/src/openai/client.ts`
- [Core HTTP client](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/client.ts): `packages/sdk/src/core/client.ts`
- [Header builder](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/headers.ts): `packages/sdk/src/core/headers.ts`
- [Streaming decoder](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/streaming.ts): `packages/sdk/src/core/streaming.ts`
- [Inference requests](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/openai/client.ts): `packages/sdk/src/openai/client.ts`
- [Gateway resources](https://github.com/routeplane-core/routeplane-devtools/tree/main/packages/sdk/src/core/resources): `packages/sdk/src/core/resources`
- [Agent security](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/resources/mcp.ts): `packages/sdk/src/core/resources/mcp.ts`
- [Evaluation resources](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/sdk/src/core/resources/evaluations.ts): `packages/sdk/src/core/resources/evaluations.ts`

### CLI

- [Command dispatcher](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/index.ts): `packages/cli/src/index.ts`
- [Profiles and config](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/config.ts): `packages/cli/src/config.ts`
- [Connection resolver](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/resolve.ts): `packages/cli/src/resolve.ts`
- [Gateway commands](https://github.com/routeplane-core/routeplane-devtools/tree/main/packages/cli/src/commands): `packages/cli/src/commands`
- [Deterministic eval](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/commands/eval.ts): `packages/cli/src/commands/eval.ts`
- [Agent operations](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/commands/agents.ts): `packages/cli/src/commands/agents.ts`
- [Feedback command](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/commands/feedback.ts): `packages/cli/src/commands/feedback.ts`
- [Control Plane auth](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/cli/src/cp-auth.ts): `packages/cli/src/cp-auth.ts`
- [Tenant and key admin](https://github.com/routeplane-core/routeplane-devtools/tree/main/packages/cli/src/commands): `packages/cli/src/commands`

### MCP Server

- [Stdio entry point](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/index.ts): `packages/mcp-server/src/index.ts`
- [MCP request server](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/server.ts): `packages/mcp-server/src/server.ts`
- [Tool registry](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/index.ts): `packages/mcp-server/src/tools/index.ts`
- [Inference tools](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/inference.ts): `packages/mcp-server/src/tools/inference.ts`
- [Security tools](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/security.ts): `packages/mcp-server/src/tools/security.ts`
- [Management tools](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/management.ts): `packages/mcp-server/src/tools/management.ts`
- [Observability tools](https://github.com/routeplane-core/routeplane-devtools/blob/main/packages/mcp-server/src/tools/observability.ts): `packages/mcp-server/src/tools/observability.ts`

### Other components

- **Application developer**
- **MCP client**
- **CLI operator**
- **Routeplane Gateway**
- **Control Plane API**
- **Model providers**

## Connections

- Application developer → OpenAI-compatible client: uses
- OpenAI-compatible client → Header builder: builds headers
- OpenAI-compatible client → Core HTTP client: creates core client
- OpenAI-compatible client → Inference requests: sends completions
- OpenAI-compatible client → Streaming decoder: decodes streams
- Core HTTP client → Header builder: builds headers
- Core HTTP client → Streaming decoder: decodes SSE
- Core HTTP client → Gateway resources: dispatches resource calls
- Core HTTP client → Routeplane Gateway: HTTP requests
- Inference requests → Routeplane Gateway: completion requests
- Agent security → Core HTTP client: posts policy requests
- Evaluation resources → Core HTTP client: scores cases
- Routeplane Gateway → Model providers: routes inference
- CLI operator → Command dispatcher: runs commands
- Command dispatcher → Connection resolver: resolves connection
- Command dispatcher → Gateway commands: dispatches commands
- Command dispatcher → Deterministic eval: dispatches eval
- Command dispatcher → Agent operations: dispatches agent ops
- Command dispatcher → Feedback command: dispatches feedback
- Command dispatcher → Tenant and key admin: dispatches admin
- Profiles and config → Connection resolver: supplies profiles
- Control Plane auth → Profiles and config: reads and saves tokens
- Tenant and key admin → Control Plane auth: authenticates requests
- Control Plane auth → Control Plane API: OAuth and API calls
- Connection resolver → Routeplane Gateway: resolves gateway access
- Gateway commands → Routeplane Gateway: calls gateway
- Agent operations → Routeplane Gateway: manages agent security
- Feedback command → Routeplane Gateway: submits feedback
- MCP client → Stdio entry point: connects over stdio
- Stdio entry point → MCP request server: starts server
- MCP request server → Tool registry: registers tools
- MCP request server → Inference tools: dispatches inference
- MCP request server → Security tools: dispatches security
- MCP request server → Management tools: dispatches management
- MCP request server → Observability tools: dispatches observability
- MCP request server → Routeplane Gateway: reads resources
- Inference tools → Routeplane Gateway: sends inference requests
- Security tools → Routeplane Gateway: calls security endpoints
- Management tools → Routeplane Gateway: calls management endpoints
- Observability tools → Routeplane Gateway: reads telemetry
