Skip to main content

Efficient Agent Router — routes tasks to the best LLM under quality, latency, cost, and safety constraints

Project description

Efficient Agent Router (EAR)

Efficient Agent Router (EAR) is a Python-first orchestration service that selects and executes the best LLM for a request based on quality, cost, latency, context window, and safety constraints.

Goals

  • Route each request to the most suitable model for the task.
  • Reduce token burn through cost-aware model ranking.
  • Protect sensitive input with prompt-injection and PII safeguards.
  • Provide a clean CLI first, then expose the same logic through MCP.

Current Delivery Strategy

  1. Build and validate core routing engine through CLI.
  2. Harden reliability, guardrails, and observability.
  3. Expose stable capabilities through MCP server.

Tech Stack

  • Python 3.12+
  • asyncio
  • Typer CLI
  • Pydantic v2
  • httpx for OpenRouter model metadata
  • pytest, pytest-asyncio, pytest-cov
  • bandit and pip-audit for security controls

Planned Repository Layout

  • docs/
    • system_prompt.md
    • execution_plan.md
    • adr/
  • src/
    • ear/
      • router_engine.py
      • registry.py
      • guardrails.py
      • fallback.py
      • metrics.py
      • cli.py
      • mcp_server.py
  • tests/
    • test_registry.py
    • test_router_engine.py
    • test_guardrails.py
    • test_fallback.py
    • test_cli.py
    • test_mcp_server.py

Core Workflow

  1. Accept user task input and options (task hint, budget priority, context profile).
  2. Run safety prechecks (injection and PII policy).
  3. Load model metadata from OpenRouter registry cache.
  4. Compute suitability score and candidate ranking.
  5. Return model recommendation, rationale, and fallback chain (execution runtime is tracked in E10).
  6. Emit session metrics snapshot for observability.

Routing Model

The router evaluates candidate models using a weighted suitability function:

S = Quality / (Cost * Latency)

Where score inputs are normalized and constrained by policy:

  • Context window threshold
  • Budget priority
  • Safety allowlist and PII policy
  • Task-specific boosts (coding, planning, research)

CLI Design (Phase 1)

Expected commands:

  • ear route "" --task coding --budget medium
  • ear inspect-models
  • ear stats --session

Expected output modes:

  • Human-readable summary
  • JSON output for scripting pipelines

MCP Design (Phase 2)

  • Tool: route_and_execute
  • Resources: model performance metrics, cost per session
  • Transport: stdio first, optional SSE extension

Interactive LLM Explorer UI

  • File: docs/llm_explorer.html
  • Purpose: interactive OpenRouter model table for leadership and investor demos.

What it includes:

  • Live model fetch from OpenRouter (/api/v1/models) with auto-refresh options and last-updated indicator.
  • Search, provider pills, min-context, max-cost, and priced/unpriced filters.
  • Radio filter for free vs paid models.
  • Excel-style sortable table with per-column filters.
  • Side-by-side comparison cards for selected models (up to 4).

How to run:

  1. Open docs/llm_explorer.html directly in a browser, or
  2. Serve repo root with a static server and open /docs/llm_explorer.html.

Example with Python static server:

python -m http.server 8080
# then browse http://localhost:8080/docs/llm_explorer.html

Configuration

Environment variables (minimum):

  • OPENROUTER_API_KEY
  • EAR_REGISTRY_TTL_SECONDS
  • EAR_DEFAULT_BUDGET
  • EAR_MAX_RETRIES
  • EAR_OPENROUTER_BASE_URL
  • EAR_REQUEST_TIMEOUT_SECONDS

Recommended local setup steps:

  1. Create and activate virtual environment.
  2. Install dependencies.
  3. Copy .env.example to .env and set values.
  4. Run tests and quality checks before first run.

Quality and Security Requirements

  • 100% statement and branch coverage for routing core.
  • Deterministic tests with mocked external dependencies.
  • Security linting with bandit.
  • Dependency auditing with pip-audit.
  • No plaintext secret logging.

Security Report HTML Generation

  • Security workflows generate JSON first, then render HTML using sec-report-kit.
  • pip-audit workflow outputs: security_reports/pip_audit_latest.html.
  • Trivy workflow outputs: security_reports/trivy_latest.html.
  • Both HTML files are uploaded in the workflow artifacts alongside JSON and SARIF outputs.
  • Local scripts also generate HTML from JSON:
    • run_pip_audit.bat / run_pip_audit.sh
    • run_trivy.bat / run_trivy.sh
    • one-command wrapper: run_security_audits.bat / run_security_audits.sh

MCP Server: sec-report-kit

Install sec-report-kit locally:

pip install sec-report-kit

Configured MCP server command:

srk mcp serve --transport stdio

Workspace configuration is stored in .vscode/mcp.json.

Milestones

  • M1: Registry and schema baseline
  • M2: Router core and CLI
  • M3: Guardrails and metrics
  • M4: MCP server and CI/CD gates
  • M5: Execution runtime and adaptive routing intelligence (completed)
  • M6: Leadership/investor demo frontend (completed)

Contributing Expectations

  • Preserve clean architecture boundaries.
  • Add tests for every logic branch touched.
  • Update ADRs when making architecture-affecting decisions.
  • Keep operational docs current with behavior changes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

efficient_agent_router_ear-0.10.15.tar.gz (65.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

efficient_agent_router_ear-0.10.15-py3-none-any.whl (42.5 kB view details)

Uploaded Python 3

File details

Details for the file efficient_agent_router_ear-0.10.15.tar.gz.

File metadata

File hashes

Hashes for efficient_agent_router_ear-0.10.15.tar.gz
Algorithm Hash digest
SHA256 d0bc1725547f1e33e8598f41f683242d5bca421b0f20f6983342f62cf3af935c
MD5 533a87141516c08bf00f4e7c8f3d0cc2
BLAKE2b-256 8b0d3f05929ec9ecdd40a0ee2aa23065d4285a87d1482e5b6ca5c0f37f0004f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for efficient_agent_router_ear-0.10.15.tar.gz:

Publisher: publish-pypi.yml on ShanKonduru/efficient-agent-router-ear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file efficient_agent_router_ear-0.10.15-py3-none-any.whl.

File metadata

File hashes

Hashes for efficient_agent_router_ear-0.10.15-py3-none-any.whl
Algorithm Hash digest
SHA256 f28831a2e7a3feed33b2fbc906f2c0371d0e0345a89d5b9d7d21a6cc5b6c29b2
MD5 2dc980d7dfe9c0587793f3b48a10e8eb
BLAKE2b-256 e92822bf07812f9412c5869dbc42914cc5d5fee717d7a35dd8e07304e7719477

See more details on using hashes here.

Provenance

The following attestation bundles were made for efficient_agent_router_ear-0.10.15-py3-none-any.whl:

Publisher: publish-pypi.yml on ShanKonduru/efficient-agent-router-ear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page