Beta self-hosted proxy for HTTP and LLM calls with Redis-backed caching, non-streaming LLM idempotency, and configurable LLM budget guardrails.
npm version PyPI version Docker
Important
ReliAPI is beta software for evaluation and self-hosting. It does not provide an SLA, managed multi-upstream fallback, exactly-once delivery, quantified savings, or published performance targets.
- Caching - TTL cache for HTTP GET/HEAD and non-streaming LLM responses
- Idempotency - Redis-backed primitives used by the non-streaming LLM path
- LLM Proxy - Configured OpenAI, Anthropic, and Mistral targets
- Budget Guardrails - Pre-request estimates with hard and soft caps
- Rate Limiting - Built-in request limits per configured tier
- Experimental Resilience - Retry and circuit-breaker code remains under beta review and is not part of the documented reliability baseline
reliapi/
├── reliapi/ # Importable Python package
│ ├── app/ # FastAPI application and routes
│ ├── core/ # Reliability primitives
│ ├── adapters/ # Provider adapters
│ ├── config/ # Configuration loader and schema
│ ├── integrations/ # RapidAPI, RouteLLM, framework adapters
│ └── metrics/ # Prometheus metrics
├── cli/ # CLI package
├── action/ # GitHub Action
├── scripts/ # OpenAPI / SDK / release helpers
├── sdk/ # SDK generation templates
├── examples/ # Code examples
├── openapi/ # OpenAPI specs
├── postman/ # Postman collection
└── tests/ # Test suite
Try ReliAPI directly on RapidAPI.
git clone https://github.com/KikuAI-Lab/reliapi.git cd reliapi cp .env.example .env # Add the provider key(s) referenced by config.yaml to .env, then start # ReliAPI and its Redis service. docker compose up -d --build curl http://localhost:8000/healthz
# Clone repository git clone https://github.com/KikuAI-Lab/reliapi.git cd reliapi # Create virtual environment python3 -m venv venv source venv/bin/activate # Install dependencies pip install -r requirements.txt # Start Redis docker run -d -p 6379:6379 redis:7-alpine # Run server export REDIS_URL=redis://localhost:6379/0 export RELIAPI_CONFIG_PATH=config.yaml uvicorn reliapi.app.main:app --host 0.0.0.0 --port 8000 --reload
Create config.yaml:
targets: openai: base_url: https://api.openai.com/v1 llm: provider: openai default_model: gpt-4o-mini soft_cost_cap_usd: 0.10 hard_cost_cap_usd: 0.50 cache: enabled: true ttl_s: 3600 circuit: error_threshold: 5 cooldown_s: 60 auth: type: bearer_env env_var: OPENAI_API_KEY
| Endpoint | Method | Description |
|---|---|---|
/v1/proxy/http |
POST | Proxy a request to a configured HTTP target |
/v1/proxy/llm |
POST | Proxy a request to a configured LLM target |
/healthz |
GET | Health check |
/metrics |
GET | Prometheus metrics |
| Endpoint | Method | Description |
|---|---|---|
/paddle/plans |
GET | List subscription plans |
/paddle/checkout |
POST | Create checkout session |
/paddle/webhook |
POST | Handle Paddle webhooks |
/onboarding/start |
POST | Generate API key |
/onboarding/quick-start |
GET | Get quick start guide |
/onboarding/verify |
POST | Verify integration |
/calculators/pricing |
POST | Calculate pricing |
/calculators/roi |
POST | Calculate ROI |
/dashboard/metrics |
GET | Usage metrics |
# Required REDIS_URL=redis://localhost:6379/0 # Optional RELIAPI_CONFIG_PATH=config.yaml RELIAPI_API_KEY=your-api-key CORS_ORIGINS=* LOG_LEVEL=INFO # LLM Providers OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-ant-... MISTRAL_API_KEY=... # Paddle (for payments) PADDLE_API_KEY=... PADDLE_VENDOR_ID=... PADDLE_WEBHOOK_SECRET=... PADDLE_ENVIRONMENT=sandbox
from reliapi_sdk import ReliAPI client = ReliAPI( base_url="http://localhost:8000", api_key="your-api-key" ) # HTTP proxy response = client.proxy_http( target="my-api", method="GET", path="/users/123", cache=300 ) # LLM proxy llm_response = client.proxy_llm( target="openai", model="gpt-4o-mini", messages=[{"role": "user", "content": "Hello!"}], idempotency_key="unique-key-123" )
import { ReliAPI } from 'reliapi-sdk'; const client = new ReliAPI({ baseUrl: 'http://localhost:8000', apiKey: 'your-api-key' }); const response = await client.proxyLlm({ target: 'openai', model: 'gpt-4o-mini', messages: [{ role: 'user', content: 'Hello!' }] });
- Redis must be reachable for shared cache and idempotency behavior.
- HTTP response caching applies to GET and HEAD; LLM caching applies to the non-streaming path.
- The documented idempotency baseline covers non-streaming LLM calls. HTTP idempotency and streaming behavior remain under beta review.
- Idempotency is not a promise of exactly-once upstream execution or provider billing behavior.
- Budget caps use pre-request estimates, not authoritative invoices or account-wide spending limits.
- Deployment security, target allow-lists, Redis durability, observability, and provider quotas remain the self-hosting operator's responsibility.
# Run tests pytest # With coverage pytest --cov=reliapi --cov-report=html
make openapiregenerates the OpenAPI schema from the FastAPI appmake postmanrebuilds the Postman collectionmake sdk-jsandmake sdk-pyregenerate SDK packagesmake release-patch|minor|majorbumps version metadata and prepares a tagged releasemake cliinstalls the local CLI package for smoke testing
See docs/release.md and docs/SECRETS_SETUP.md for release ops.
- GitHub Issues: https://github.com/KikuAI-Lab/reliapi/issues
- Email: dev@kikuai.dev
Project notes and new tools: Telegram · LinkedIn · KikuAI
AGPL-3.0. Copyright (c) 2025 KikuAI Lab
KikuAI website Telegram @kiku_ai GitHub @kiku-jw
Follow new projects and updates from @kiku-jw.