Skip to content

Roadmap

Runne Pass is in closed beta. This page states what is ready and what is deliberately deferred.

Ready in beta

  • Customer IAM — registration, login, JWT sessions, logout with server-side revocation, GET /v1/auth/me.
  • Workspaces — CRUD, ownership isolation, token balance (1 token = 1 ₽).
  • API keysrn_live_… format, HMAC-SHA256 verification, dual-secret rotation, revocation.
  • Payments — YooKassa top-up (min 100 ₽), idempotent webhook, 54-ФЗ receipts for individuals.
  • Ledger — atomic credit/debit/reservation/settlement/refund/adjustment with audit trail.
  • Chat completions — OpenAI-compatible endpoint with a mock provider and real billing.
  • Pricing catalogGET /v1/models, cost estimation, admin pricing updates.
  • Quotastokens_per_month enforced atomically; other limits declared.
  • Admin — dashboard, customer management, balance adjustment.
  • Operations — reconciliation, orphan-reservation cleanup, receipt retry, monthly reset cron jobs.

Planned (post-beta)

  1. Real provider integration — wire OpenAI, Anthropic, DeepSeek, Zhipu, and Kimi in place of the mock provider.
  2. Full quota enforcement — extend enforcement to max_workspaces, max_members_per_workspace, max_api_keys_per_workspace, and requests_per_minute.
  3. Dynamic pricing — move from the fixed 1 token = 1 ₽ to a dynamic exchange rate, subscriptions, and volume discounts.
  4. Service extraction — split the modular monolith into services once scaling signals appear.
  5. Receipt reconciliation — a cron job to reconcile receipt status with YooKassa.

Known gaps (low priority)

  • Orphan pending payments are not yet cleaned up.
  • webhook.router.ts parses the body without a try/catch.
  • adjustBalance/creditTokens are reachable only through admin/settlement paths, not standalone endpoints.
  • /health does not probe database/Redis dependencies.
  • The monthly-reset cron is tied to process uptime (no distributed leader election beyond the existing lock).

What this means for integrators

  • Assume the mock provider is the only chat behavior during beta; do not ship production workloads expecting real completions.
  • Assume the 1 token = 1 ₽ rate can change without notice after beta.
  • Build against the error codes, not messages — see Errors.