How saintparish4/gate works
Gate accepts authenticated API requests for globally distributed rate limiting, idempotency checks, and LLM token quotas, then returns decisions and usage outcomes. Rate-limit requests pass through resilience controls before shared state is accessed; idempotency and quota use their own persistence paths. The README documents event publishing, health/readiness, metrics, tracing, and a demo dashboard as additional capabilities. Some wiring and handlers were not sampled, so links for documented but unsampled branches are limited to the documented architecture.
Main entry points: Routes.scala HTTP routes · Main.scala Application runtime · RateLimitApi.scala Rate-limit API · IdempotencyApi.scala Idempotency API
Components 23
HTTP and security
- HTTP routes
src/main/scala/api/Routes.scala - API key auth
src/main/scala/security/ApiKeyAuth.scala - Rate-limit API
src/main/scala/api/RateLimitApi.scala - Idempotency API
src/main/scala/api/IdempotencyApi.scala - Quota API
src/main/scala/api/TokenQuotaApi.scala - Demo dashboard
src/main/scala/api/DashboardApi.scala
Decision engines
- Rate-limit engine
src/main/scala/core/TokenBucket.scala - Idempotency engine
src/main/scala/core/IdempotencyStore.scala - Quota service
src/main/scala/core/TokenQuotaService.scala
State and resilience
- Resilience wrapper
src/main/scala/resilience/ResilientWrapper.scala - Rate-limit store
src/main/scala/storage/DynamoDBRateLimitStore.scala - Idempotency store
src/main/scala/storage/DynamoDBIdempotencyStore.scala - Quota store
src/main/scala/storage/DynamoDBTokenQuotaStore.scala - DynamoDB
Events and observability
- Event publisher
src/main/scala/events/EventPublisher.scala - Kinesis stream
- Metrics publisher
src/main/scala/observability/MetricsPublisher.scala - Prometheus metrics
src/main/scala/observability/PrometheusMetrics.scala - Tracing middleware
src/main/scala/observability/TracingMiddleware.scala - Health aggregation
src/main/scala/resilience/HealthAggregator.scala
Application wiring
- Application runtime
src/main/scala/Main.scala - Store wiring
src/main/scala/wiring/StoreModule.scala
Other components
- API client
Connections 30
- API client → HTTP routes: sends HTTP
- HTTP routes → API key auth: authenticates
- HTTP routes → Rate-limit API: dispatches checks
- HTTP routes → Idempotency API: dispatches checks
- HTTP routes → Quota API: dispatches quota
- HTTP routes → Demo dashboard: serves dashboard
- HTTP routes → Prometheus metrics: scrapes metrics
- HTTP routes → Health aggregation: checks readiness
- Rate-limit API → Resilience wrapper: checks limits
- Resilience wrapper → Rate-limit store: wraps operations
- Rate-limit store → DynamoDB: reads and writes
- Idempotency API → Idempotency store: checks and completes
- Idempotency store → DynamoDB: reads and writes
- Quota API → Quota service: checks and reconciles
- Quota service → Quota store: reserves quota
- Quota store → DynamoDB: reads and writes
- Rate-limit API → Event publisher: publishes decisions
- Idempotency API → Event publisher: publishes outcomes
- Quota API → Event publisher: publishes outcomes
- Event publisher → Kinesis stream: queues events
- Rate-limit API → Metrics publisher: records metrics
- Idempotency API → Metrics publisher: records metrics
- Quota service → Metrics publisher: records metrics
- Application runtime → Store wiring: creates stores
- Store wiring → Resilience wrapper: wraps rate store
- Store wiring → Rate-limit store: selects backend
- Application runtime → HTTP routes: starts HTTP app
- Application runtime → Health aggregation: assembles checks
- Application runtime → Metrics publisher: configures metrics
- Application runtime → Tracing middleware: installs tracing