# On Prem Protocol This project provides connectivity to the User gRPC Server of the On Prem control plane. The default instance of the control plane runs in the cloud at https://api.on-prem.net. ## Architecture ```mermaid graph TB; subgraph Clients[Clients / Edge] agent[Agent] cli[CLI] console[Console] end subgraph API[Control Plane] agent_grpc_server[Agent gRPC Server :3004] api_endpoint[API Aggregation Endpoint :3000] lambda_grpc_server[Lambda gRPC Server :3002] reconfig_grpc_server[Reconfig gRPC Server :3003] rest_endpoint[REST Endpoint :3006] storage_grpc_server[Storage Server :3001] user_grpc_server[User gRPC Server :3005] end subgraph Backing Services mongo[(MongoDB)] prometheus[(Prometheus)] redis[(Redis)] stripe[Stripe] end agent <-- tunnel stream --> api_endpoint; agent_grpc_server ---> reconfig_grpc_server; agent_grpc_server ---> storage_grpc_server; api_endpoint <--> agent_grpc_server; api_endpoint ---> rest_endpoint; api_endpoint --> user_grpc_server; cli --> api_endpoint; console ---> api_endpoint; lambda_grpc_server ---> storage_grpc_server; reconfig_grpc_server --> storage_grpc_server; rest_endpoint ---> user_grpc_server; storage_grpc_server ---> mongo; storage_grpc_server ---> prometheus; storage_grpc_server ---> redis; user_grpc_server -- use tunnel --> agent_grpc_server; user_grpc_server ---> lambda_grpc_server; user_grpc_server ---> reconfig_grpc_server; user_grpc_server ---> storage_grpc_server; user_grpc_server -- metered billing --> stripe ``` ## Building ```shell $ make dependencies $ make generate $ make $ make check ```