Enterprise-grade GraphQL gateway with Prometheus metrics, smart caching, circuit breaker, rate limiting, request coalescing, WebSocket subscriptions, and comprehensive security - all at zero cost.
# Run with Docker
$ docker run -p 8080:8080 -p 9393:9393 \
-e GMP_HOST_GRAPHQL=http://your-graphql:4000/ \
-e GMP_ENABLE_GLOBAL_CACHE=true \
-e GMP_ENABLE_CIRCUIT_BREAKER=true \
ghcr.io/lukaszraczylo/graphql-monitoring-proxy:latest
Requests/second
RAM usage
CPU usage
Cost
Everything you need for production GraphQL
Prometheus metrics, OpenTelemetry tracing, admin dashboard
Smart caching, request coalescing, read-only replicas
Rate limiting, introspection blocking, user banning
Circuit breaker, retry budget, connection recovery
Complete observability for your GraphQL API
GMP_ENABLE_TRACE=true
GMP_TRACE_ENDPOINT=localhost:4317
Web-based UI at /admin with auto-refresh every 5 seconds:
Maximize throughput, minimize latency
Deduplicate concurrent identical queries - only one request hits the backend, response is shared with all waiting clients.
Memory-aware caching with per-user isolation, compression, and flexible TTL control.
@cached(ttl: 90)@cached(refresh: true)Native GraphQL subscription support with bidirectional proxying.
GMP_WEBSOCKET_ENABLE=true
GMP_WEBSOCKET_PING_INTERVAL=30
Route queries to read replicas, mutations to primary for maximum throughput.
GMP_HOST_GRAPHQL=http://primary:8080/
GMP_HOST_GRAPHQL_READONLY=http://replica:8080/
Protect your GraphQL API from abuse
Different rate limits per user role with burst control and dynamic config reload.
{
"ratelimit": {
"admin": { "req": 1000, "interval": "second", "burst": 2000 },
"premium": { "req": 500, "interval": "second" },
"guest": { "req": 10, "interval": "second" },
"-": { "req": 5, "interval": "second" }
}
}
Block schema introspection to prevent API discovery attacks, with configurable allowlists.
GMP_BLOCK_SCHEMA_INTROSPECTION=true
GMP_ALLOWED_INTROSPECTION="__typename"
Block misbehaving users detected by your monitoring system.
curl -X POST http://localhost:9090/api/user-ban \
-H 'Content-Type: application/json' \
-d '{"user_id": "1337", "reason": "Scraping"}'
Handle failures gracefully
Prevent cascading failures with automatic detection and recovery.
/api/circuit-breaker/healthPrevent retry storms with token bucket rate limiting.
GMP_RETRY_BUDGET_ENABLE=true
GMP_RETRY_BUDGET_TOKENS_PER_SEC=10
GMP_RETRY_BUDGET_MAX_TOKENS=100
Automatic connection pool management and backend health monitoring.
Informative error responses with retry recommendations.
{
"errors": [{
"message": "Backend temporarily unavailable",
"extensions": {
"code": "SERVICE_UNAVAILABLE",
"retryable": true,
"retry_after": 60
}
}]
}
Built-in tools for Hasura users
Automatically clean up old event logs to prevent database bloat. Runs hourly.
hdb_catalog.event_invocation_logshdb_catalog.event_loghdb_catalog.hdb_action_loghdb_catalog.hdb_cron_event_invocation_logshdb_catalog.hdb_scheduled_event_invocation_logsGMP_HASURA_EVENT_CLEANER=true
GMP_HASURA_EVENT_CLEANER_OLDER_THAN=14
GMP_HASURA_EVENT_METADATA_DB=postgres://...
Deploy in seconds
docker pull ghcr.io/lukaszraczylo/graphql-monitoring-proxy:latest
Download from the releases page.
Supported: Darwin ARM64/AMD64, Linux ARM64/AMD64, Windows AMD64
Example manifests available:
Available HTTP endpoints
:8080/*
GraphQL passthrough endpoint
:8080/admin
Admin dashboard UI
:9393/metrics
Prometheus metrics
:8080/healthz
Health check (with optional backend verification)
:8080/livez
Liveness probe
:9090/api/*
Management API (user-ban, cache-clear, circuit-breaker)