{"slug": "role-model-protocol-for-assigning-the-right-ai-model-for-the-right-job", "title": "Role-model: protocol for assigning the right AI model for the right job", "summary": "Role-model, an open protocol for capability-aware AI routing, has been released with a packaged reference runtime that routes requests based on role, task, capability, and policy rather than model name alone. The system provides explainable routing decisions and supports multiple baseline roles including chat, coding, tool use, and classification.", "body_md": "# role-model\n\nCapability-aware AI routing with a packaged reference runtime, explainable router decisions, and a protocol you can actually inspect.\n\n`role-model`\n\nis an open protocol for capability-aware AI routing, plus a packaged reference router runtime.\n\nIt gives a system a durable way to describe:\n\n- what a request needs\n- which roles and tasks are being asked for\n- which concrete endpoints can satisfy the work\n- what policy allows or forbids\n- why the final routing decision was made\n\nThe router does **not** pick by model name alone. It routes across concrete endpoints using role and task\nmetadata, declared capability, routing policy, and observed performance.\n\n[Start here if you are new](#start-here-if-you-are-new)\n\n[Install](/get-started/install)[First launch and connect models](/get-started/first-launch-and-connect-models)[Run the full benchmark](/get-started/run-full-benchmark)[Choose and save the routing strategy](/get-started/choose-routing-strategy)[Send the first request and inspect the decision](/get-started/first-request-and-decision)\n\nUsing Pi? Install and launch the Role-Model runtime first, then follow\n[Pi integration](/integrations/pi) to install `@try-works/pi-role-model`\n\n, run `/role-model setup`\n\n, and choose\nan alias.\n\n[What role-model does](#what-role-model-does)\n\nAt a high level, role-model separates routing into a few stable pieces:\n\n**Requests** describe task type, required capabilities, modalities, tool needs, and constraints.**Roles and tasks** describe the semantic shape of the work.**Endpoint identities and profiles** describe concrete routable endpoints rather than abstract model names.**Routing policy** applies hard denies, preferences, budgets, and deterministic tie-break rules.**Observability artifacts** record the decision, traces, usage, and measured performance.\n\nThat makes routing explainable and portable across different providers, hosts, and deployment shapes.\n\n[How the router makes a decision](#how-the-router-makes-a-decision)\n\nThe reference router follows a stable flow:\n\n**Normalize request intent.** Build the effective policy snapshot from the request plus role/task metadata.**Narrow the candidate set.** Keep only endpoints that match the requested role, task, and policy scope.**Apply hard eligibility checks.** Reject endpoints that fail capability, modality, tool, locality, budget, or binding requirements.**Score the eligible endpoints.** Compare quality, latency, throughput, cost, reliability, and preference using measured evidence first, then declared data and neutral defaults.**Emit an explainable decision.** Return a`RouterDecision`\n\nwith the chosen endpoint, fallbacks, exclusions, and selection reasons.\n\nThe result is deterministic enough to inspect later, not just a hidden runtime guess.\n\n[Baseline roles](#baseline-roles)\n\nThe current baseline role set includes:\n\n| Role ID | Primary task types | Typical use |\n|---|---|---|\n`general.chat` | `text.chat` | general conversational responses |\n`coder.patch` | `code.edit` | patch-oriented code editing |\n`coder.review` | `code.edit` , `json.schema_adherence` | review, critique, and structured verdicts |\n`tool.agent` | `tools.function_calling` | tool orchestration and structured tool calls |\n`embedder` | `embeddings.text` | retrieval and vector generation |\n`classifier` | `text.classification` | labeling and taxonomy selection |\n`language.detector` | `text.language_detection` | language identification |\n\nFor the full role and task mental model, read\n[Roles, tasks, and capabilities](/concepts/roles-tasks-and-capabilities). The deeper protocol contract\nstill lives in [Roles and tasks](/protocol/roles-and-tasks).\n\n[The first-time setup architecture](#the-first-time-setup-architecture)\n\nThe canonical first-run sequence is now:\n\n- install and launch the packaged runtime\n- connect the local or remote endpoints you actually plan to use\n- activate models and assign roles\n- run the full benchmark on that real candidate set\n- review the benchmark results\n- choose and save the routing strategy\n- validate with a real routed request and inspect the decision\n\nDownstream clients such as Pi join after the runtime is installed and configured. They discover Role-Model aliases through the downstream OpenAI discovery contract instead of owning runtime setup themselves.\n\nThis keeps routing strategy selection evidence-based instead of guess-based.", "url": "https://wpnews.pro/news/role-model-protocol-for-assigning-the-right-ai-model-for-the-right-job", "canonical_source": "https://role-model.dev/", "published_at": "2026-06-28 22:16:36+00:00", "updated_at": "2026-06-28 23:00:34.024919+00:00", "lang": "en", "topics": ["ai-infrastructure", "ai-tools", "developer-tools", "machine-learning"], "entities": ["role-model", "Pi"], "alternates": {"html": "https://wpnews.pro/news/role-model-protocol-for-assigning-the-right-ai-model-for-the-right-job", "markdown": "https://wpnews.pro/news/role-model-protocol-for-assigning-the-right-ai-model-for-the-right-job.md", "text": "https://wpnews.pro/news/role-model-protocol-for-assigning-the-right-ai-model-for-the-right-job.txt", "jsonld": "https://wpnews.pro/news/role-model-protocol-for-assigning-the-right-ai-model-for-the-right-job.jsonld"}}