{"id":46414983,"url":"https://github.com/flashbots/rproxy","last_synced_at":"2026-03-05T14:03:18.155Z","repository":{"id":317220294,"uuid":"1065758379","full_name":"flashbots/rproxy","owner":"flashbots","description":"L2 builder proxy","archived":false,"fork":false,"pushed_at":"2026-02-27T19:59:00.000Z","size":435,"stargazers_count":16,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-27T21:47:00.759Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flashbots.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-28T11:21:01.000Z","updated_at":"2026-01-30T07:20:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"c1652116-9641-450a-a023-81f1efe1d9d3","html_url":"https://github.com/flashbots/rproxy","commit_stats":null,"previous_names":["flashbots/rproxy"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/flashbots/rproxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Frproxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Frproxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Frproxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Frproxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flashbots","download_url":"https://codeload.github.com/flashbots/rproxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Frproxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30130031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T12:40:50.676Z","status":"ssl_error","status_checked_at":"2026-03-05T12:39:32.209Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-05T14:03:16.280Z","updated_at":"2026-03-05T14:03:18.145Z","avatar_url":"https://github.com/flashbots.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `rproxy`\n\n\u003e\n\u003e [!IMPORTANT]\n\u003e\n\u003e This project is WORK-IN-PROGRESS.  Not for production use (yet)\n\u003e\n\nL2 builder proxy that:\n\n- Proxies RPC and Authenticated RPC calls to the builder.\n\n- Mirrors the following calls to other builders (a.k.a. peers):\n\n  - `engine_forkchoiceUpdated`\n  - `engine_newPayload`\n  - `eth_sendBundle`\n  - `eth_sendRawTransaction`\n  - `miner_setMaxDASize`\n\n- Proxies flashblocks stream of the builder.\n\n- Allows circuit-breaking:\n\n  - If the healthcheck fails for certain count of times, `rproxy` will\n    gracefully terminate all proxied connections (helps if the builders are L4\n    load-balanced).\n\n- Enables TLS termination.\n\n- Allows debug-logging of all proxied messages and/or responses.\n\n  - In production scenarios it allows to sanitise the logs by replacing raw\n    transactions with their respective hashes.\n\n- Enables observability with prometheus metrics for request counts, sizes,\n  latencies, and so on.\n\n## Usage\n\n```text\nUsage: rproxy [OPTIONS]\n\nOptions:\n  -h, --help\n          Print help (see a summary with '-h')\n\n  -V, --version\n          Print version\n\nauthrpc:\n      --authrpc-backend \u003curl\u003e\n          url of authrpc backend\n\n          [env: RPROXY_AUTHRPC_BACKEND=]\n          [default: http://127.0.0.1:18651]\n\n      --authrpc-backend-max-concurrent-requests \u003ccount\u003e\n          max concurrent requests per authrpc backend\n\n          [env: RPROXY_AUTHRPC_BACKEND_MAX_CONCURRENT_REQUESTS=]\n          [default: 1]\n\n      --authrpc-backend-timeout \u003cduration\u003e\n          max duration for authrpc backend requests\n\n          [env: RPROXY_AUTHRPC_BACKEND_TIMEOUT=]\n          [default: 30s]\n\n      --authrpc-deduplicate-fcus-wo-payload\n          whether authrpc proxy should deduplicate incoming fcus w/o payload (mitigates\n          fcu avalanche issue)\n\n          [env: RPROXY_AUTHRPC_DEDUPLICATE_FCUS_WO_PAYLOAD=]\n\n      --authrpc-enabled\n          enable authrpc proxy\n\n          [env: RPROXY_AUTHRPC_ENABLED=]\n\n      --authrpc-idle-connection-timeout \u003cduration\u003e\n          duration to keep idle authrpc connections open (0 means no keep-alive)\n\n          [env: RPROXY_AUTHRPC_IDLE_CONNECTION_TIMEOUT=]\n          [default: 30s]\n\n      --authrpc-keepalive-interval \u003cduration\u003e\n          interval between tcp keepalive packets on authrpc connections\n\n          [env: RPROXY_AUTHRPC_KEEPALIVE_INTERVAL=]\n          [default: 75s]\n\n      --authrpc-keepalive-retries \u003ccount\u003e\n          maximum number of keepalive probes to send before dropping authrpc connection\n\n          [env: RPROXY_AUTHRPC_KEEPALIVE_RETRIES=]\n          [default: 8]\n\n      --authrpc-listen-address \u003csocket\u003e\n          host:port for authrpc proxy\n\n          [env: RPROXY_AUTHRPC_LISTEN_ADDRESS=]\n          [default: 0.0.0.0:8651]\n\n      --authrpc-log-mirrored-requests\n          whether to log proxied authrpc requests\n\n          [env: RPROXY_AUTHRPC_LOG_MIRRORED_REQUESTS=]\n\n      --authrpc-log-mirrored-responses\n          whether to log responses to proxied authrpc requests\n\n          [env: RPROXY_AUTHRPC_LOG_MIRRORED_RESPONSES=]\n\n      --authrpc-log-proxied-requests\n          whether to log proxied authrpc requests\n\n          [env: RPROXY_AUTHRPC_LOG_PROXIED_REQUESTS=]\n\n      --authrpc-log-proxied-responses\n          whether to log responses to proxied authrpc requests\n\n          [env: RPROXY_AUTHRPC_LOG_PROXIED_RESPONSES=]\n\n      --authrpc-log-sanitise\n          sanitise logs of proxied authrpc requests/responses (e.g. don't log raw\n          transactions)\n\n          [env: RPROXY_AUTHRPC_LOG_SANITISE=]\n\n      --authrpc-max-request-size-mb \u003cmegabytes\u003e\n          max size of authrpc requests\n\n          [env: RPROXY_AUTHRPC_MAX_REQUEST_SIZE_MB=]\n          [default: 16]\n\n      --authrpc-max-response-size-mb \u003cmegabytes\u003e\n          max size of authrpc responses\n\n          [env: RPROXY_AUTHRPC_MAX_RESPONSE_SIZE_MB=]\n          [default: 256]\n\n      --authrpc-mirroring-peer \u003curl\u003e...\n          list of authrpc peers urls to mirror the requests to\n\n          [env: RPROXY_AUTHRPC_MIRRORING_PEERS=]\n\n      --authrpc-mirroring-strategy \u003cstrategy\u003e\n          Possible values:\n          - fan-out:           mirror to all configured peers\n          - round-robin:       mirror to only 1 peer at a time, in round-robin fashion\n          - round-robin-pairs: mirror to 2 peers at a time, in round-robin fashion\n\n          [env: RPROXY_AUTHRPC_MIRRORING_STRATEGY=]\n          [default: fan-out]\n\n      --authrpc-preallocated-request-buffer-size-kb \u003ckilobytes\u003e\n          size of preallocated authrpc request buffers\n\n          [env: RPROXY_AUTHRPC_PREALLOCATED_RESPONSE_BUFFER_SIZE_KB=]\n          [default: 1]\n\n      --authrpc-preallocated-response-buffer-size-kb \u003ckilobytes\u003e\n          size of preallocated authrpc response buffers\n\n          [env: RPROXY_AUTHRPC_PREALLOCATED_RESPONSE_BUFFER_SIZE_KB=]\n          [default: 1]\n\n      --authrpc-remove-backend-from-mirroring-peers\n          remove authrpc backend from mirroring peers\n\n          [env: RPROXY_AUTHRPC_REMOVE_BACKEND_FROM_MIRRORING_PEERS=]\n\n      --authrpc-shutdown-timeout-sec \u003cseconds\u003e\n          timeout for graceful shutdown of authrpc workers\n\n          [env: RPROXY_AUTHRPC_SHUTDOWN_TIMEOUT_SEC=]\n          [default: 5]\n\ncircuit-breaker:\n      --circuit-breaker-reset-continuously\n          reset proxies continuously at each poll interval as long as circuit-breaker url\n          reports unhealthy\n\n          [env: RPROXY_CIRCUIT_BREAKER_RESET_CONTINUOUSLY=]\n\n      --circuit-breaker-poll-interval \u003cduration\u003e\n          circuit breaker's poll interval\n\n          [env: RPROXY_CIRCUIT_BREAKER_POLL_INTERVAL=]\n          [default: 5s]\n\n      --circuit-breaker-threshold-healthy \u003ccount\u003e\n          healthy threshold for circuit-breaker\n\n          [env: RPROXY_CIRCUIT_BREAKER_THRESHOLD_HEALTHY=]\n          [default: 2]\n\n      --circuit-breaker-threshold-unhealthy \u003ccount\u003e\n          unhealthy threshold for circuit-breaker\n\n          [env: RPROXY_CIRCUIT_BREAKER_THRESHOLD_UNHEALTHY=]\n          [default: 3]\n\n      --circuit-breaker-url \u003curl\u003e\n          url of circuit-breaker (e.g. backend healthcheck)\n\n          [env: RPROXY_CIRCUIT_BREAKER_URL=]\n          [default: ]\n\nflashblocks:\n      --flashblocks-backend-timeout \u003cduration\u003e\n          timeout to establish backend connections of to receive pong websocket response\n\n          [env: RPROXY_FLASHBLOCKS_BACKEND_TIMEOUT=]\n          [default: 30s]\n\n      --flashblocks-backend \u003curl\u003e\n          url of flashblocks backend\n\n          [env: RPROXY_FLASHBLOCKS_BACKEND=]\n          [default: ws://127.0.0.1:11111]\n\n      --flashblocks-enabled\n          enable flashblocks proxy\n\n          [env: RPROXY_FLASHBLOCKS_ENABLED=]\n\n      --flashblocks-keepalive-interval \u003cduration\u003e\n          interval between tcp keepalive packets on flashblocks connections\n\n          [env: RPROXY_FLASHBLOCKS_KEEPALIVE_INTERVAL=]\n          [default: 75s]\n\n      --flashblocks-keepalive-retries \u003ccount\u003e\n          maximum number of keepalive probes to send before dropping flashblocks\n          connection\n\n          [env: RPROXY_FLASHBLOCKS_KEEPALIVE_RETRIES=]\n          [default: 8]\n\n      --flashblocks-listen-address \u003csocket\u003e\n          host:port for flashblocks proxy\n\n          [env: RPROXY_FLASHBLOCKS_LISTEN_ADDRESS=]\n          [default: 0.0.0.0:1111]\n\n      --flashblocks-log-backend-messages\n          whether to log flashblocks backend messages\n\n          [env: RPROXY_FLASHBLOCKS_LOG_BACKEND_MESSAGES=]\n\n      --flashblocks-log-client-messages\n          whether to log flashblocks client messages\n\n          [env: RPROXY_FLASHBLOCKS_LOG_CLIENT_MESSAGES=]\n\n      --flashblocks-log-sanitise\n          sanitise logs of proxied flashblocks messages (e.g. don't log raw transactions)\n\n          [env: RPROXY_FLASHBLOCKS_LOG_SANITISE=]\n\n      --flashblocks-shutdown-timeout-sec \u003cseconds\u003e\n          timeout for graceful shutdown of flashblocks workers\n\n          [env: RPROXY_FLASHBLOCKS_SHUTDOWN_TIMEOUT_SEC=]\n          [default: 5]\n\nlog:\n      --log-format \u003cformat\u003e\n          logging format\n\n          [env: RPROXY_LOG_FORMAT=]\n          [default: json]\n          [possible values: json, text]\n\n      --log-level \u003clevel\u003e\n          logging level\n\n          [env: RPROXY_LOG_LEVEL=]\n          [default: info]\n\nmetrics:\n      --metrics-listen-address \u003csocket\u003e\n          host:port for metrics\n\n          [env: RPROXY_METRICS_LISTEN_ADDRESS=]\n          [default: 0.0.0.0:6785]\n\nrpc:\n      --rpc-backend \u003curl\u003e\n          url of rpc backend\n\n          [env: RPROXY_RPC_BACKEND=]\n          [default: http://127.0.0.1:18645]\n\n      --rpc-backend-max-concurrent-requests \u003ccount\u003e\n          max concurrent requests per backend\n\n          [env: RPROXY_RPC_BACKEND_MAX_CONCURRENT_REQUESTS=]\n          [default: 10]\n\n      --rpc-backend-timeout \u003cduration\u003e\n          max duration for backend requests\n\n          [env: RPROXY_RPC_BACKEND_TIMEOUT=]\n          [default: 30s]\n\n      --rpc-enabled\n          enable rpc proxy\n\n          [env: RPROXY_RPC_ENABLED=]\n\n      --rpc-idle-connection-timeout \u003cduration\u003e\n          duration to keep idle rpc connections open (0 means no keep-alive)\n\n          [env: RPROXY_RPC_IDLE_CONNECTION_TIMEOUT=]\n          [default: 30s]\n\n      --rpc-keepalive-interval \u003cduration\u003e\n          interval between tcp keepalive packets on rpc connections\n\n          [env: RPROXY_RPC_KEEPALIVE_INTERVAL=]\n          [default: 75s]\n\n      --rpc-keepalive-retries \u003ccount\u003e\n          maximum number of keepalive probes to send before dropping rpc connection\n\n          [env: RPROXY_RPC_KEEPALIVE_RETRIES=]\n          [default: 8]\n\n      --rpc-listen-address \u003csocket\u003e\n          host:port for rpc proxy\n\n          [env: RPROXY_RPC_LISTEN_ADDRESS=]\n          [default: 0.0.0.0:8645]\n\n      --rpc-log-mirrored-requests\n          whether to log proxied rpc requests\n\n          [env: RPROXY_RPC_LOG_MIRRORED_REQUESTS=]\n\n      --rpc-log-mirrored-responses\n          whether to log responses to proxied rpc requests\n\n          [env: RPROXY_RPC_LOG_MIRRORED_RESPONSES=]\n\n      --rpc-log-proxied-requests\n          whether to log proxied rpc requests\n\n          [env: RPROXY_RPC_LOG_PROXIED_REQUESTS=]\n\n      --rpc-log-proxied-responses\n          whether to log responses to proxied rpc requests\n\n          [env: RPROXY_RPC_LOG_PROXIED_RESPONSES=]\n\n      --rpc-log-sanitise\n          sanitise logs of proxied rpc requests/responses (e.g. don't log raw\n          transactions)\n\n          [env: RPROXY_RPC_LOG_SANITISE=]\n\n      --rpc-max-request-size-mb \u003cmegabytes\u003e\n          max size of rpc requests\n\n          [env: RPROXY_RPC_MAX_REQUEST_SIZE_MB=]\n          [default: 16]\n\n      --rpc-max-response-size-mb \u003cmegabytes\u003e\n          max size of rpc responses\n\n          [env: RPROXY_RPC_MAX_RESPONSE_SIZE_MB=]\n          [default: 256]\n\n      --rpc-mirror-errored-requests\n          whether the requests that returned an error from rpc backend should be mirrored\n          to peers\n\n          [env: RPROXY_RPC_MIRROR_ERRORED_REQUESTS=]\n\n      --rpc-mirroring-peer \u003curl\u003e...\n          list of rpc peers urls to mirror the requests to\n\n          [env: RPROXY_RPC_MIRRORING_PEERS=]\n\n      --rpc-mirroring-strategy \u003cstrategy\u003e\n          Possible values:\n          - fan-out:           mirror to all configured peers\n          - round-robin:       mirror to only 1 peer at a time, in round-robin fashion\n          - round-robin-pairs: mirror to 2 peers at a time, in round-robin fashion\n\n          [env: RPROXY_RPC_MIRRORING_STRATEGY=]\n          [default: fan-out]\n\n      --rpc-preallocated-request-buffer-size-kb \u003ckilobytes\u003e\n          size of preallocated rpc request buffers\n\n          [env: RPROXY_RPC_PREALLOCATED_RESPONSE_BUFFER_SIZE_KB=]\n          [default: 1]\n\n      --rpc-preallocated-response-buffer-size-kb \u003ckilobytes\u003e\n          size of preallocated rpc response buffers\n\n          [env: RPROXY_RPC_PREALLOCATED_RESPONSE_BUFFER_SIZE_KB=]\n          [default: 256]\n\n      --rpc-remove-backend-from-mirroring-peers\n          remove rpc backend from peers\n\n          [env: RPROXY_RPC_REMOVE_BACKEND_FROM_MIRRORING_PEERS=]\n\n      --rpc-shutdown-timeout-sec \u003cseconds\u003e\n          timeout for graceful shutdown of rpc workers\n\n          [env: RPROXY_RPC_SHUTDOWN_TIMEOUT_SEC=]\n          [default: 5]\n\ntls:\n      --tls-certificate \u003cpath\u003e\n          path to tls certificate\n\n          [env: RPROXY_TLS_CERTIFICATE=]\n          [default: ]\n\n      --tls-key \u003cpath\u003e\n          path to tls key\n\n          [env: RPROXY_TLS_KEY=]\n          [default: ]\n```\n\n### Chaos\n\nThese flags are enabled when `rproxy` is built with `chaos` feature enabled:\n\n```text\nchaos:\n      --chaos-probability-flashblocks-backend-ping-ignored \u003cprobability\u003e\n          the chance (between 0.0 and 1.0) that pings received from flashblocks backend\n          would be ignored (no pong sent)\n\n          [env: RPROXY_CHAOS_PROBABILITY_FLASHBLOCKS_BACKEND_PING_IGNORED=]\n          [default: 0.0]\n\n      --chaos-probability-flashblocks-client-ping-ignored \u003cprobability\u003e\n          the chance (between 0.0 and 1.0) that pings received from flashblocks client\n          would be ignored (no pong sent)\n\n          [env: RPROXY_CHAOS_PROBABILITY_FLASHBLOCKS_CLIENT_PING_IGNORED=]\n          [default: 0.0]\n\n      --chaos-probability-flashblocks-stream-blocked \u003cprobability\u003e\n          the chance (between 0.0 and 1.0) that client's flashblocks stream would block\n          (no more messages sent)\n\n          [env: RPROXY_CHAOS_PROBABILITY_FLASHBLOCKS_STREAM_BLOCKED=]\n          [default: 0.0]\n```\n\n## Metrics\n\n```prometheus\n# HELP rproxy_client_connections_active_count count of active client connections.\n# TYPE rproxy_client_connections_active_count gauge\n\n# HELP rproxy_client_connections_established_count count of client connections established.\n# TYPE rproxy_client_connections_established_count counter\n\n# HELP rproxy_client_info general information about the client.\n# TYPE rproxy_client_info counter\n\n# HELP rproxy_client_connections_closed_count count of client connections closed.\n# TYPE rproxy_client_connections_closed_count counter\n\n# HELP rproxy_http_latency_backend_nanoseconds latency of backend http responses (interval b/w end of client's request and begin of backend's response).\n# TYPE rproxy_http_latency_backend_nanoseconds gauge\n# UNIT rproxy_http_latency_backend_nanoseconds nanoseconds\n\n# HELP rproxy_http_latency_delta_nanoseconds latency delta (http_latency_total - http_latency_backend).\n# TYPE rproxy_http_latency_delta_nanoseconds gauge\n# UNIT rproxy_http_latency_delta_nanoseconds nanoseconds\n\n# HELP rproxy_http_latency_total_nanoseconds overall latency of http requests (interval b/w begin of client's request and end of forwarded response).\n# TYPE rproxy_http_latency_total_nanoseconds gauge\n# UNIT rproxy_http_latency_total_nanoseconds nanoseconds\n\n# HELP rproxy_http_mirror_success_count count of successfully mirrored http requests/responses.\n# TYPE rproxy_http_mirror_success_count counter\n\n# HELP rproxy_http_mirror_failure_count count of failures to mirror http request/response.\n# TYPE rproxy_http_mirror_failure_count counter\n\n# HELP rproxy_http_proxy_success_count count of successfully proxied http requests/responses.\n# TYPE rproxy_http_proxy_success_count counter\n\n# HELP rproxy_http_proxy_failure_count count of failures to proxy http request/response.\n# TYPE rproxy_http_proxy_failure_count counter\n\n# HELP rproxy_http_request_size_bytes sizes of incoming http requests.\n# TYPE rproxy_http_request_size_bytes gauge\n# UNIT rproxy_http_request_size_bytes bytes\n\n# HELP rproxy_http_response_size_bytes sizes of proxied http responses.\n# TYPE rproxy_http_response_size_bytes gauge\n# UNIT rproxy_http_response_size_bytes bytes\n\n# HELP rproxy_http_request_decompressed_size_bytes decompressed sizes of incoming http requests.\n# TYPE rproxy_http_request_decompressed_size_bytes gauge\n# UNIT rproxy_http_request_decompressed_size_bytes bytes\n\n# HELP rproxy_http_response_decompressed_size_bytes decompressed sizes of proxied http responses.\n# TYPE rproxy_http_response_decompressed_size_bytes gauge\n# UNIT rproxy_http_response_decompressed_size_bytes bytes\n\n# HELP rproxy_tls_certificate_valid_not_before tls certificate's not-valid-before timestamp.\n# TYPE rproxy_tls_certificate_valid_not_before gauge\n\n# HELP rproxy_tls_certificate_valid_not_after tls certificate's not-valid-after timestamp.\n# TYPE rproxy_tls_certificate_valid_not_after gauge\n\n# HELP rproxy_ws_latency_backend_nanoseconds round-trip-time of websocket pings to backend divided by 2.\n# TYPE rproxy_ws_latency_backend_nanoseconds gauge\n# UNIT rproxy_ws_latency_backend_nanoseconds nanoseconds\n\n# HELP rproxy_ws_latency_client_nanoseconds round-trip-time of websocket pings to client divided by 2.\n# TYPE rproxy_ws_latency_client_nanoseconds gauge\n# UNIT rproxy_ws_latency_client_nanoseconds nanoseconds\n\n# HELP rproxy_ws_latency_proxy_nanoseconds time to process the websocket message by the proxy.\n# TYPE rproxy_ws_latency_proxy_nanoseconds gauge\n# UNIT rproxy_ws_latency_proxy_nanoseconds nanoseconds\n\n# HELP rproxy_ws_message_size_bytes sizes of proxied websocket messages.\n# TYPE rproxy_ws_message_size_bytes gauge\n# UNIT rproxy_ws_message_size_bytes bytes\n\n# HELP rproxy_ws_proxy_success_count count of successfully proxied websocket messages.\n# TYPE rproxy_ws_proxy_success_count counter\n\n# HELP rproxy_ws_proxy_failure_count count of failures to proxy websocket message.\n# TYPE rproxy_ws_proxy_failure_count counter\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashbots%2Frproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflashbots%2Frproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashbots%2Frproxy/lists"}