{ "version": 1, "_note": "Plan-18 Track M model provider binding. JSON content (parsed by json.load like the other *.yaml policy files). Governance-managed via Control Plane; credentials NEVER live here (only key_env names). Chat synthesis is OFF by default (CASAN_CHAT_MODEL_MODE=off) so offline/CI stays deterministic.", "default_mode": "off", "providers": { "local": { "model": "ollama:ornith:9b", "class": "local", "requires_key": false, "roles_allowed": ["viewer", "auditor", "operator", "project-admin", "org-admin"], "model_roles_allowed": ["read_only", "analysis", "operator", "codegen"] }, "cloud-anthropic": { "model": "anthropic:claude-3-5-sonnet-latest", "class": "cloud", "requires_key": true, "key_env": "ANTHROPIC_API_KEY", "roles_allowed": ["project-admin", "org-admin"], "model_roles_allowed": ["analysis", "codegen"] }, "cloud-openai": { "model": "openai:gpt-4o-mini", "class": "cloud", "requires_key": true, "key_env": "OPENAI_API_KEY", "roles_allowed": ["project-admin", "org-admin"], "model_roles_allowed": ["analysis", "codegen"] }, "omniroute": { "model": "openai-compatible:auto/best-coding", "class": "gateway", "requires_key": true, "key_env": "CASAN_OPENAI_COMPATIBLE_API_KEY", "requires_preflight": true, "roles_allowed": ["operator", "project-admin", "org-admin"], "model_roles_allowed": ["read_only", "analysis", "operator", "codegen"] } }, "role_bindings": { "read_only": "local", "analysis": "local", "operator": "local", "codegen": "local" }, "data_policy": { "local": "internal_ok", "cloud": "pii_requires_guard" } }