@ku0/x-router-rs
v0.1.0
Published
Rust x-router core bindings for high-performance new-api routing.
Readme
x-router-rs
Rust x-router core + native HTTP service.
Native Node Binding Build
pnpm --filter @ku0/x-router-rs build:rsRun Rust HTTP Service
pnpm --filter @ku0/x-router-rs serve:rsEnvironment variables:
X_ROUTER_HOST(default0.0.0.0)X_ROUTER_PORT(default4317)X_ROUTER_BASE_PATH(default/v1/x-router)X_ROUTER_METRICS_PATH(default/metrics)X_ROUTER_REQUEST_TIMEOUT_MS(default5000)X_ROUTER_AUTH_MODE(disabled|optional|required)X_ROUTER_AUTH_STORE_MODE(in-memory|sqlite)X_ROUTER_AUTH_STORE_SQLITE_PATH(default.tmp/x-router-auth.dbwhen sqlite mode)X_ROUTER_API_KEYS(example:tenant-a=key-a|key-b,tenant-b=key-c)X_ROUTER_DISTRIBUTED_LIMITER_MODE(disabled|shadow|enforce)X_ROUTER_DISTRIBUTED_LIMITER_REDIS_URL(example:redis://127.0.0.1:6379/0)X_ROUTER_DISTRIBUTED_LIMITER_KEY_PREFIX(defaultx-router)X_ROUTER_DISTRIBUTED_LIMITER_FAIL_OPEN(defaulttrue)X_ROUTER_DISTRIBUTED_LIMITER_TIMEOUT_MS(default150)X_ROUTER_DISTRIBUTED_LIMITER_REUSE_CONNECTION(defaulttrue)X_ROUTER_DISTRIBUTED_LIMITER_CONNECTION_POOL_SIZE(default8)X_ROUTER_UPSTREAM_MODE(disabled|prefer-upstream|upstream-only)X_ROUTER_UPSTREAMS(example:core-a@3=http://10.0.0.11:4317,core-b@1=http://10.0.0.12:4317)X_ROUTER_UPSTREAM_TIMEOUT_MS(default3000)X_ROUTER_UPSTREAM_COOLDOWN_MS(default15000)X_ROUTER_UPSTREAM_MAX_ATTEMPTS(default3)X_ROUTER_UPSTREAM_MAX_IN_FLIGHT(default256)X_ROUTER_UPSTREAM_CIRCUIT_FAILURE_THRESHOLD(default3)X_ROUTER_UPSTREAM_CIRCUIT_OPEN_MS(default20000)X_ROUTER_UPSTREAM_RETRY_BUDGET_MAX_TOKENS(default64)X_ROUTER_UPSTREAM_RETRY_BUDGET_REFILL_PER_SUCCESS(default0.25)X_ROUTER_UPSTREAM_EWMA_ALPHA(default0.2)X_ROUTER_UPSTREAM_SELECTION(latency-aware|round-robin|weighted-round-robin|least-loaded|tenant-affinity)X_ROUTER_UPSTREAM_HEALTH_PROBE_ENABLED(defaultfalse)X_ROUTER_UPSTREAM_HEALTH_PROBE_INTERVAL_MS(default15000)X_ROUTER_UPSTREAM_HEALTH_PROBE_AUTO_DISABLE(defaulttrue)X_ROUTER_UPSTREAM_HEALTH_PROBE_FAILURE_THRESHOLD(default3)X_ROUTER_UPSTREAM_HEALTH_PROBE_RECOVER_THRESHOLD(default2)X_ROUTER_TENANT_DEFAULT_RPM(default1200)X_ROUTER_TENANT_DEFAULT_BURST(default600)X_ROUTER_TENANT_DEFAULT_MAX_IN_FLIGHT(default64)X_ROUTER_TENANT_MAX_TRACKED(default10000)X_ROUTER_CONTROL_PLANE_IF_MATCH_REQUIRED(defaultfalse)X_ROUTER_CONTROL_PLANE_IF_MATCH_HEADER(defaultx-policy-if-match)X_ROUTER_STATE_PERSISTENCE_PATH(optional; example.tmp/x-router-rs-state.json)X_ROUTER_STATE_PERSISTENCE_AUTO_SAVE(defaulttrue)X_ROUTER_COMPAT_ENABLED(defaultfalse)X_ROUTER_COMPAT_WS_ENABLED(defaulttrue)X_ROUTER_COMPAT_NOT_IMPLEMENTED_MODE(strict|passthrough, defaultstrict)X_ROUTER_COMPAT_MODEL_CACHE_TTL_MS(default15000)X_ROUTER_COMPAT_MODEL_REFRESH_TIMEOUT_MS(default2000)X_ROUTER_COMPAT_MODEL_STATIC_JSON(optional JSON fallback model registry)X_ROUTER_COMPAT_MODEL_RATE_LIMIT_MODE(disabled|shadow|enforce, defaultdisabled)X_ROUTER_COMPAT_MODEL_RATE_LIMIT_RPM(default0, disabled when0)X_ROUTER_COMPAT_MODEL_RATE_LIMIT_REDIS_URL(optional; defaults to distributed limiter Redis URL when unset)X_ROUTER_COMPAT_MODEL_RATE_LIMIT_REDIS_KEY_PREFIX(defaultx-router:compat:model-rate)X_ROUTER_COMPAT_MODEL_RATE_LIMIT_REDIS_TIMEOUT_MS(default150)X_ROUTER_COMPAT_SYSTEM_GUARD_ENABLED(defaulttrue)X_ROUTER_COMPAT_SYSTEM_MAX_IN_FLIGHT(default2000)X_ROUTER_COMPAT_SYSTEM_MAX_BODY_BYTES(default10485760)X_ROUTER_COMPAT_DECOMPRESS_ENABLED(defaulttrue)X_ROUTER_COMPAT_WS_MAX_CONNECTIONS(default5000)X_ROUTER_COMPAT_WS_IDLE_TIMEOUT_MS(default60000)X_ROUTER_COMPAT_WS_PING_INTERVAL_MS(default15000)X_ROUTER_COMPAT_WS_UPSTREAM_CONNECT_TIMEOUT_MS(default5000)
State loader is backward-compatible with legacy snake_case state documents.
Manual control endpoints:
POST /v1/x-router/state/saveforces snapshot save even when auto-save is disabled.POST /v1/x-router/state/reloadreloads and replaces in-memory policy state from file. Control-plane state concurrency:- responses include
x-policy-state-hash,x-policy-state-revision,x-policy-state-updated-at-ms. GET /v1/x-router/statereturns current policy state metadata.- mutating control-plane endpoints accept
x-policy-if-match: <hash>. - mismatch returns
409 XR_STATE_CONFLICT. - with
X_ROUTER_CONTROL_PLANE_IF_MATCH_REQUIRED=true, missing precondition returns428 XR_STATE_CONFLICT.
Endpoints
GET /healthGET /readyGET /metricsGET /metrics/prometheusGET /v1/x-router/capabilitiesGET /v1/x-router/authPOST /v1/x-router/auth/reloadPUT /v1/x-router/auth/keys/:tenantIdDELETE /v1/x-router/auth/keysGET /v1/x-router/distributed-limiterGET /v1/x-router/openapiGET /v1/x-router/openapi/compatGET /v1/x-router/upstreamsPOST /v1/x-router/upstreams/probePUT /v1/x-router/upstreams/nodes/:nodeIdDELETE /v1/x-router/upstreams/nodes/:nodeIdPOST /v1/x-router/upstreams/nodes/:nodeIdPOST /v1/x-router/resolve-routePOST /v1/x-router/resolve-route-batchPOST /v1/x-router/select-channelPOST /v1/x-router/affinity-keyPOST /v1/x-router/apply-overridesPOST /v1/x-router/normalize-requestPOST /v1/x-router/simulate-billingGET /v1/x-router/tenantsGET /v1/x-router/tenant-upstreamsGET /v1/x-router/statePOST /v1/x-router/state/reloadPOST /v1/x-router/state/savePUT /v1/x-router/tenants/:tenantId/policyDELETE /v1/x-router/tenants/:tenantId/policyPUT /v1/x-router/tenants/:tenantId/services/:serviceId/policyDELETE /v1/x-router/tenants/:tenantId/services/:serviceId/policyPUT /v1/x-router/tenants/:tenantId/upstreamsDELETE /v1/x-router/tenants/:tenantId/upstreamsPUT /v1/x-router/tenants/:tenantId/services/:serviceId/upstreamsDELETE /v1/x-router/tenants/:tenantId/services/:serviceId/upstreams
Compatibility relay surface (when X_ROUTER_COMPAT_ENABLED=true):
GET /v1/modelsGET /v1/models/:modelPOST /v1/models/*pathGET /v1beta/modelsGET /v1beta/openai/modelsPOST /v1beta/models/*pathPOST /pg/chat/completionsGET /v1/realtimePOST /v1/messagesPOST /v1/completionsPOST /v1/chat/completionsPOST /v1/responsesPOST /v1/responses/compactPOST /v1/editsPOST /v1/images/generationsPOST /v1/images/editsPOST /v1/images/variations(XR_NOT_IMPLEMENTEDin strict mode)POST /v1/embeddingsPOST /v1/audio/transcriptionsPOST /v1/audio/translationsPOST /v1/audio/speechPOST /v1/rerankPOST /v1/engines/:model/embeddingsPOST /v1/moderationsPOST /v1/video/generationsGET /v1/video/generations/:taskIdPOST /v1/videosGET /v1/videos/:taskIdGET /v1/videos/:taskId/contentPOST /v1/videos/:videoId/remixPOST /kling/v1/videos/text2videoGET /kling/v1/videos/text2video/:taskIdPOST /kling/v1/videos/image2videoGET /kling/v1/videos/image2video/:taskIdPOST /jimeng/mj/*and/:mode/mj/*(GET/POST)POST /suno/submit/:actionPOST /suno/fetchGET /suno/fetch/:id/v1/files*,/v1/fine-tunes*compatibility stubs in strict mode
Realtime compatibility details:
/v1/realtimenow performs Rust-native websocket relay to selected upstream nodes.- The route keeps deterministic ingress errors (
426,503,504) and exposes selected node viax-compat-ws-node. - Before upgrade acceptance, the service performs upstream preflight dialing and returns
504 XR_UPSTREAM_UNAVAILABLEon connect timeout.
Video compatibility details:
/v1/video/generations*and/v1/videos*map to the Rust compat task pipeline./kling/v1/videos/*and/jimengare supported as compat task ingress paths.
Model compatibility provider precedence:
/v1beta/openai/modelsis pinned to OpenAI semantics./v1beta/modelsis pinned to Gemini semantics./v1/models/:modeldefaults to OpenAI unless explicit Anthropic headers are present./v1/modelskeeps header/query-based provider hints (anthropic/gemini/openai).
Model compatibility response semantics:
- OpenAI routes return
{"success":true,"object":"list","data":[...]}for list and OpenAI model object for retrieve. - Gemini list routes return
{"models":[...],"nextPageToken":null}. - Anthropic list routes return
{"data":[...],"first_id":"...","has_more":false,"last_id":"..."}.
Tenant upstream policy payload (PUT /v1/x-router/tenants/:tenantId/upstreams):
allowedNodeIds: non-empty upstream node id list.mode:strict(default) orfallback.strict: only route to allowlisted nodes.fallback: if allowlist has no enabled candidates, fallback to global enabled nodes.
Upstream node payload (PUT /v1/x-router/upstreams/nodes/:nodeId):
baseUrl: required upstream URL.enabled: optional, defaults totrue.headers: optional map of request headers forwarded to this upstream.weight: optional positive integer, defaults to100(used byweighted-round-robin).
Service namespace:
- Request header
x-service-id(defaultdefault). - Tenant governance and tenant upstream policy are scoped by
tenant + service.
Test
pnpm --filter @ku0/x-router-rs test:rs
pnpm --filter @ku0/x-router-rs verify:compat-routesPerf Smoke
pnpm --filter @ku0/x-router-rs perf:rs
pnpm --filter @ku0/x-router-rs perf:rs:realtime-local
pnpm --filter @ku0/x-router-rs perf:rs:realtime-kpi-localDefault profile is compat-chat. Runtime controls:
X_ROUTER_PERF_BASE_URL(defaulthttp://127.0.0.1:4317)X_ROUTER_PERF_PROFILE(compat-chat|compat-models|compat-video|compat-realtime|control-resolve)X_ROUTER_PERF_TOTAL_REQUESTS(default400)X_ROUTER_PERF_CONCURRENCY(default32)X_ROUTER_PERF_TIMEOUT_MS(default5000)X_ROUTER_PERF_WS_MESSAGES(default1, applies tocompat-realtime)X_ROUTER_PERF_ASSERT_MAX_ERROR_RATE(default0.0)X_ROUTER_PERF_ASSERT_MAX_P95_MS(default0.0, disabled when0)
perf:rs:realtime-local automatically starts:
- local upstream websocket echo fixture
- local x-router server with compat + upstream-only mode
- realtime perf profile run (
compat-realtime) against that local stack
perf:rs:realtime-kpi-local runs two local realtime perf phases and enforces:
errorRate == 0on low/high loadp95 <= X_ROUTER_PERF_KPI_MAX_P95_MS(default80)highThroughput / lowThroughput >= X_ROUTER_PERF_KPI_MIN_SCALE_FACTOR(default1.2)
