vllm-project/semantic-router

feat: support entrypoints and multiple routing recipes

Open

#2,331 opened on Jul 5, 2026

View on GitHub
 (0 comments) (0 reactions) (1 assignee)Go (699 forks)github user discovery
area/corearea/model-selectionenhancementhelp wantedpriority/P1roadmap

Repository metrics

Stars
 (4,293 stars)
PR merge metrics
 (PR metrics pending)

Description

Summary

Support multiple routing recipes and external entrypoints so different virtual model names can select different routing profiles without duplicating global system configuration.

Parent roadmap: #2287 Child issue: #2354 Related: #2326, #2330, #2333, #2342

Motivation

The current config has a single inline IntelligentRouting surface and compatibility fields such as auto_model_name / auto_model_names. That forces one working routing profile for aliases like vllm-sr/auto, and makes algorithm virtual slugs harder to reason about. H2 needs multiple recipes mapped from entrypoints while preserving the core abstraction: signals, projections, decisions, strategy/model_selection.

Proposed config direction

Keep shared global/provider/system config outside routing, then let entrypoints select a recipe:

entrypoints:
  - model_names: ["vllm-sr/auto", "auto", "MoM"]
    recipe: default
  - model_names: ["vllm-sr/privacy"]
    recipe: privacy

recipes:
  - name: default
    routing:
      signals: []
      projections: {}
      decisions: []
      strategy: priority
      model_selection: {}

routing keeps the existing profile shape. The new layer above routing maps virtual model names to named recipes.

Scope

Define and implement:

  • entrypoints outside routing;
  • multiple recipes, each with one routing profile;
  • compatibility normalization for old auto-model aliases and algorithm virtual slugs through #2354;
  • validation for duplicate/ambiguous entrypoint mappings;
  • config dump/management API behavior through #2326;
  • CLI/dashboard/operator/doc updates.

Non-goals

  • Do not move global signal registry/system signal configuration into a recipe.
  • Do not make recipes own provider definitions or global model assets.
  • Do not break existing single-routing-profile configs without a migration path.

Acceptance criteria

  • Different virtual model names can select different recipes.
  • Existing vllm-sr/auto and auto behavior is preserved through compatibility normalization.
  • routing.signals, routing.projections, routing.decisions, routing.strategy, and routing.model_selection remain the recipe-level abstraction.
  • Config validation detects duplicate entrypoints and unknown recipe references.
  • Docs and examples show default, privacy, and algorithm-entrypoint recipes.

Validation

make agent-report ENV=cpu CHANGED_FILES="src/semantic-router/pkg/config src/semantic-router/pkg/extproc src/semantic-router/pkg/dsl src/vllm-sr/cli dashboard deploy/operator deploy/recipes website/docs"
make agent-lint CHANGED_FILES="src/semantic-router/pkg/config src/semantic-router/pkg/extproc src/semantic-router/pkg/dsl src/vllm-sr/cli dashboard deploy/operator deploy/recipes website/docs"
make agent-ci-gate CHANGED_FILES="src/semantic-router/pkg/config src/semantic-router/pkg/extproc src/semantic-router/pkg/dsl src/vllm-sr/cli dashboard deploy/operator deploy/recipes website/docs"

Contributor guide