openreader/docs-site/docs/configure/tts-rate-limiting.md
Richard R a0f2d008e0 refactor(tts): transition rate limiting to runtime config and admin panel
- Remove legacy TTS rate limit environment variables and migrate all related configuration to runtime settings managed via the Admin UI
- Add runtime config keys for TTS rate limiting enable/disable and per-user/IP daily quotas
- Refactor rate limiter and API routes to use runtime config for thresholds and enablement
- Update AdminFeaturesPanel to allow editing TTS rate limiting and quota values in the UI
- Add shared-provider-selection utility for consistent provider selection logic
- Update documentation to reflect new runtime/admin configuration and remove obsolete env var docs
- Add unit tests for rate limit runtime settings and provider selection

BREAKING CHANGE: TTS rate limiting is now controlled via Admin → Site features; environment variables for TTS rate limiting are no longer supported and will be ignored.
2026-05-30 09:55:16 -06:00

1.5 KiB

title
TTS Rate Limiting

This page explains OpenReader's TTS character rate limiting controls.

Overview

  • TTS rate limiting is disabled by default.
  • Primary control is Settings → Admin → Site features → Disable TTS daily rate limiting.
  • Optional first-boot seed: RUNTIME_SEED_DISABLE_TTS_LIMIT=true.
  • Limits are enforced per day in UTC.
  • Enforcement applies only when auth is enabled.

How enforcement works

When enabled, OpenReader enforces:

  • Per-user daily character limits.
  • IP backstop daily character limits.
  • Anonymous device backstop tracking (cookie-based) to reduce limit resets.

If a request exceeds the active limit, the TTS API returns 429 with reset metadata for the next UTC day.

Required auth behavior

  • Auth must be enabled (BASE_URL + AUTH_SECRET) for TTS char limits to apply.
  • If auth is disabled, TTS character limits are effectively unlimited.
  • DISABLE_AUTH_RATE_LIMIT only affects Better Auth's own request throttling.
  • DISABLE_AUTH_RATE_LIMIT does not disable TTS character limits.

Runtime config + seed var

  • First-boot seed toggle: RUNTIME_SEED_DISABLE_TTS_LIMIT (default: true)
  • Per-user and IP backstop limit values are configured in Settings → Admin → Site features and stored in DB runtime settings.