Warmplane
Warmplane is the local control plane that keeps MCP sessions warm.
It runs multiple upstream MCP servers behind one local process, keeps those sessions persistent, and exposes a compact interaction surface for tools/resources/prompts. The goal is concrete and measurable: reduce startup latency, reduce payload size, and keep behavior deterministic.
Why This Exists
Most agent stacks overpay in tokens and latency by eagerly surfacing large tool catalogs and detailed schemas that are never used.
Warmplane shifts that model to lazy, compact interaction:
- Discover compact indexes first.
- Fetch detail only when needed.
- Execute through normalized envelopes.
This improves:
- token efficiency
- time-to-first-useful-tool-call
- cross-client consistency
- observability and policy control
What It Provides
One runtime, three access modes:
- HTTP facade (
/v1/...) - CLI facade commands
- MCP facade server mode (
mcp-server) for MCP-native clients
All three modes share the same backend state, aliases, policy checks, and timeout behavior.
Core Facade Surface
Capabilities
- list: compact capability index
- describe: on-demand detail for one capability
- call: normalized execution envelope
Resources
- list: compact resource index
- read: normalized read envelope
Prompts
- list: compact prompt index
- get: normalized prompt rendering envelope
Install
cargo install warmplane is not available yet because the crate has not been published to crates.io.
Validate Config
Validate and lint configuration before startup:
Example success output:
Configuration
Create mcp_servers.json:
Per mcpServers.<id>, transport selection is strict and inferred:
- stdio upstream: set
command(plus optionalargs,env) - HTTP/SSE upstream: set
url(plus optionalprotocolVersion,allowStateless,headers,auth) - exactly one of
commandorurlmust be set
No legacy config fallback is supported.
HTTP Auth
auth.type = "bearer":
auth.type = "basic":
For bearer/basic, exactly one direct secret (token/password) or env-backed secret (tokenEnv/passwordEnv) is required.
Run Modes
1) HTTP Daemon
Endpoints:
GET /v1/capabilitiesGET /v1/capabilities/:idPOST /v1/tools/callGET /v1/resourcesPOST /v1/resources/readGET /v1/promptsPOST /v1/prompts/get
2) MCP Server (stdio)
MCP clients can point directly to this process.
Synthetic lightweight tools exposed:
capabilities_listcapability_describecapability_callresources_listresource_readprompts_listprompt_get
Native MCP methods also supported:
- resources:
resources/list,resources/read - prompts:
prompts/list,prompts/get
3) CLI Facade
# capabilities
# resources
# prompts
MCP Client Example
Smoke Test
Run an end-to-end stdio MCP smoke test:
It validates:
- MCP
initialize tools/listincludes all synthetic lightweight facade toolsresources/listandprompts/listreturn valid responses
Design Notes
- Upstream MCP compatibility remains intact.
- Client-facing schemas are intentionally small and stable.
- Policy and aliasing are enforced consistently across modes.
- Timeout and error envelopes are normalized for deterministic orchestration.
- Runtime logs are structured JSON for auditability.
- OpenTelemetry trace export is supported via OTLP.
Observability
Warmplane emits structured JSON logs by default (tracing + tracing-subscriber).
Example controls:
RUST_LOG=info,warmplane=debugset verbosityWARMPLANE_OTEL_ENABLED=trueenable OpenTelemetry exportOTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317set OTLP collector endpointWARMPLANE_OTEL_ENDPOINT=http://127.0.0.1:4317fallback OTLP endpoint ifOTEL_EXPORTER_OTLP_ENDPOINTis unsetWARMPLANE_SERVICE_NAME=warmplane-prodoverride service name
Operational notes:
- Logs include structured request/capability/resource/prompt fields for audit trails.
trace_idin execution envelopes can be correlated with logs and distributed traces.- When OTEL is enabled, traces are exported via OTLP gRPC and local structured logs remain active.
For detailed request/response contracts, see docs/spec.md.
Additional references:
- OpenAPI: openapi.yaml
- Config schema: config.schema.json
- Install/distribution: INSTALL.md
- Deployment runbook: DEPLOYMENT.md
- Observability: OBSERVABILITY.md