Observed since 20 Oct, 20:55 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Production-grade multi-provider LLM orchestration, routing, and validation framework
AetherRoute is a production-grade multi-provider LLM orchestration, validation, and routing framework. It is designed to mitigate critical LLM failure modes — provider outages, cost spikes, prompt injection attacks, structured formatting errors, and token window overflows — in professional environments.
Request ──► Input Sanitizer ──► Cache Lookup (Exact/Semantic)
│
┌────────────────────────────────────┘ (Cache Miss)
▼
Context Curation (Sliding Window & Summarization)
│
▼
Scoring & Decision Router (Task Fit, Cost, Latency, SQLite History)
│
▼
Provider Pool (OpenAI, Anthropic Claude, Mistral, Ollama)
│
├──► Success ──► Pydantic Validator ──► DB Logging ──► Response
│ │ (Validation Error)
│ ▼ (Up to 3 Retries)
│ Repair Re-prompt Loop
│
└──► Failure ──► Hot Failover (Try next-best provider)
healthy, degraded, down) updates via periodic pings. On failure, AetherRoute performs a hot-failover to the next-best provider seamlessly.CostLimitExceeded.SecurityBlockError/PermissionDeniedError.aetherroute-report.pip install aetherroute
pip install aetherroute[openai] # OpenAI only
pip install aetherroute[anthropic] # Anthropic Claude only
pip install aetherroute[mistral] # Mistral AI only
pip install aetherroute[all] # All providers
git clone https://github.com/mithunbarath/aetherroute.git
cd aetherroute
pip install -e ".[all,dev]"
Set API keys as environment variables (all optional — AetherRoute runs in mock mode without them):
# Windows CMD
set OPENAI_API_KEY=your-openai-key
set ANTHROPIC_API_KEY=your-anthropic-key
set MISTRAL_API_KEY=your-mistral-key
# Linux / macOS
export OPENAI_API_KEY=your-openai-key
export ANTHROPIC_API_KEY=your-anthropic-key
export MISTRAL_API_KEY=your-mistral-key
Or edit config.yaml directly in your project directory.
import asyncio
from aetherroute.orchestrator import AetherRouteOrchestrator
async def main():
orchestrator = AetherRouteOrchestrator()
await orchestrator.start()
response = await orchestrator.query(
messages=[{"role": "user", "content": "Summarise the history of the Roman Empire."}],
query="Summarise the history of the Roman Empire.",
session_id="my-session"
)
print(response["text"])
await orchestrator.close()
asyncio.run(main())
from pydantic import BaseModel, Field
class Ticket(BaseModel):
ticket_id: int
sentiment: str = Field(description="positive, neutral, or negative")
urgency: str = Field(description="high, medium, or low")
summary: str
ticket, raw = await orchestrator.query_structured(
messages=[{"role": "user", "content": "Ticket #42: customer is very angry, system is down."}],
query="Extract ticket info.",
response_model=Ticket,
session_id="my-session"
)
print(ticket.urgency) # "high"
The included demo.py showcases all 6 scenarios using mock providers (runs fully offline):
python demo.py
Demonstrates:
View routing analytics, cost breakdowns, and request traces directly in your terminal:
python -m aetherroute.observability.report
# Or if installed via pip:
aetherroute-report
# Options:
# --db PATH SQLite database path (default: aetherroute.db)
# --traces N Number of recent traces to display (default: 15)
aetherroute-report --db aetherroute.db --traces 25
The report shows:
pip install aetherroute[dev]
pytest tests/ -v
aetherroute/
├── adapters/ # Prompt normalization for each provider
├── cache/ # Semantic + exact caching (Redis/in-memory)
├── config.py # YAML config loader (AetherRouteConfig)
├── context/ # Context curation (TF-IDF, summarization)
├── cost/ # Cost governor & SQLite transaction logging
├── observability/
│ ├── logger.py # SQLite request logger
│ └── report.py # Rich CLI observability report
├── orchestrator.py # Main entry-point: AetherRouteOrchestrator
├── providers/ # OpenAI, Anthropic, Mistral, Ollama wrappers
├── router/ # Task classifier & routing engine
├── security/ # Input sanitizer & RBAC permission guard
└── validation/ # Pydantic validator & self-consistency checker
Contributions, issues, and feature requests are welcome!
git checkout -b feature/my-featuregit commit -m "Add my feature"git push origin feature/my-featurePlease ensure all tests pass (pytest tests/) and update the CHANGELOG.md.
Mithun Barath M R
This project is licensed under the MIT License — see LICENSE for details.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 13 Jun 2026 | 13 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 20:55 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:c79a4de21733f4bb2aeb7919fe511fe845101e5c3214d98da0a4e1b04909e7a5