mozart-router 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +250 -0
- package/dist/adapters/cursor.d.ts +10 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +39 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/generic.d.ts +24 -0
- package/dist/adapters/generic.d.ts.map +1 -0
- package/dist/adapters/generic.js +192 -0
- package/dist/adapters/generic.js.map +1 -0
- package/dist/adapters/hermes.d.ts +10 -0
- package/dist/adapters/hermes.d.ts.map +1 -0
- package/dist/adapters/hermes.js +170 -0
- package/dist/adapters/hermes.js.map +1 -0
- package/dist/adapters/index.d.ts +13 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +27 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/litellm.d.ts +15 -0
- package/dist/adapters/litellm.d.ts.map +1 -0
- package/dist/adapters/litellm.js +238 -0
- package/dist/adapters/litellm.js.map +1 -0
- package/dist/adapters/lmstudio.d.ts +12 -0
- package/dist/adapters/lmstudio.d.ts.map +1 -0
- package/dist/adapters/lmstudio.js +128 -0
- package/dist/adapters/lmstudio.js.map +1 -0
- package/dist/adapters/nim.d.ts +12 -0
- package/dist/adapters/nim.d.ts.map +1 -0
- package/dist/adapters/nim.js +163 -0
- package/dist/adapters/nim.js.map +1 -0
- package/dist/adapters/ollama.d.ts +12 -0
- package/dist/adapters/ollama.d.ts.map +1 -0
- package/dist/adapters/ollama.js +243 -0
- package/dist/adapters/ollama.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +10 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +197 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/opencode.d.ts +10 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +180 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/adapters/openrouter.d.ts +13 -0
- package/dist/adapters/openrouter.d.ts.map +1 -0
- package/dist/adapters/openrouter.js +173 -0
- package/dist/adapters/openrouter.js.map +1 -0
- package/dist/adapters/vllm.d.ts +12 -0
- package/dist/adapters/vllm.d.ts.map +1 -0
- package/dist/adapters/vllm.js +129 -0
- package/dist/adapters/vllm.js.map +1 -0
- package/dist/api/dashboard.d.ts +3 -0
- package/dist/api/dashboard.d.ts.map +1 -0
- package/dist/api/dashboard.js +98 -0
- package/dist/api/dashboard.js.map +1 -0
- package/dist/api/mcp.d.ts +32 -0
- package/dist/api/mcp.d.ts.map +1 -0
- package/dist/api/mcp.js +215 -0
- package/dist/api/mcp.js.map +1 -0
- package/dist/api/middleware.d.ts +20 -0
- package/dist/api/middleware.d.ts.map +1 -0
- package/dist/api/middleware.js +239 -0
- package/dist/api/middleware.js.map +1 -0
- package/dist/api/server.d.ts +26 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +294 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/streaming.d.ts +19 -0
- package/dist/api/streaming.d.ts.map +1 -0
- package/dist/api/streaming.js +274 -0
- package/dist/api/streaming.js.map +1 -0
- package/dist/cli/config-init.d.ts +2 -0
- package/dist/cli/config-init.d.ts.map +1 -0
- package/dist/cli/config-init.js +73 -0
- package/dist/cli/config-init.js.map +1 -0
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +618 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/context/advanced-optimizer.d.ts +12 -0
- package/dist/context/advanced-optimizer.d.ts.map +1 -0
- package/dist/context/advanced-optimizer.js +64 -0
- package/dist/context/advanced-optimizer.js.map +1 -0
- package/dist/context/optimizer.d.ts +7 -0
- package/dist/context/optimizer.d.ts.map +1 -0
- package/dist/context/optimizer.js +101 -0
- package/dist/context/optimizer.js.map +1 -0
- package/dist/core/cache.d.ts +39 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +90 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/health.d.ts +32 -0
- package/dist/core/health.d.ts.map +1 -0
- package/dist/core/health.js +92 -0
- package/dist/core/health.js.map +1 -0
- package/dist/core/inventory.d.ts +28 -0
- package/dist/core/inventory.d.ts.map +1 -0
- package/dist/core/inventory.js +106 -0
- package/dist/core/inventory.js.map +1 -0
- package/dist/core/metrics.d.ts +48 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +115 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/mozart.d.ts +39 -0
- package/dist/core/mozart.d.ts.map +1 -0
- package/dist/core/mozart.js +156 -0
- package/dist/core/mozart.js.map +1 -0
- package/dist/core/persistence.d.ts +13 -0
- package/dist/core/persistence.d.ts.map +1 -0
- package/dist/core/persistence.js +119 -0
- package/dist/core/persistence.js.map +1 -0
- package/dist/core/plugins.d.ts +18 -0
- package/dist/core/plugins.d.ts.map +1 -0
- package/dist/core/plugins.js +110 -0
- package/dist/core/plugins.js.map +1 -0
- package/dist/core/reliability.d.ts +23 -0
- package/dist/core/reliability.d.ts.map +1 -0
- package/dist/core/reliability.js +70 -0
- package/dist/core/reliability.js.map +1 -0
- package/dist/core/session.d.ts +17 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +67 -0
- package/dist/core/session.js.map +1 -0
- package/dist/cost/dynamic-pricing.d.ts +24 -0
- package/dist/cost/dynamic-pricing.d.ts.map +1 -0
- package/dist/cost/dynamic-pricing.js +71 -0
- package/dist/cost/dynamic-pricing.js.map +1 -0
- package/dist/cost/estimator.d.ts +8 -0
- package/dist/cost/estimator.d.ts.map +1 -0
- package/dist/cost/estimator.js +48 -0
- package/dist/cost/estimator.js.map +1 -0
- package/dist/explain/engine.d.ts +6 -0
- package/dist/explain/engine.d.ts.map +1 -0
- package/dist/explain/engine.js +59 -0
- package/dist/explain/engine.js.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +112 -0
- package/dist/index.js.map +1 -0
- package/dist/logs/logger.d.ts +35 -0
- package/dist/logs/logger.d.ts.map +1 -0
- package/dist/logs/logger.js +73 -0
- package/dist/logs/logger.js.map +1 -0
- package/dist/logs/redactor.d.ts +6 -0
- package/dist/logs/redactor.d.ts.map +1 -0
- package/dist/logs/redactor.js +54 -0
- package/dist/logs/redactor.js.map +1 -0
- package/dist/policy/engine.d.ts +9 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +55 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/loader.d.ts +3 -0
- package/dist/policy/loader.d.ts.map +1 -0
- package/dist/policy/loader.js +27 -0
- package/dist/policy/loader.js.map +1 -0
- package/dist/policy/profiles.d.ts +11 -0
- package/dist/policy/profiles.d.ts.map +1 -0
- package/dist/policy/profiles.js +263 -0
- package/dist/policy/profiles.js.map +1 -0
- package/dist/policy/yaml-loader.d.ts +10 -0
- package/dist/policy/yaml-loader.d.ts.map +1 -0
- package/dist/policy/yaml-loader.js +160 -0
- package/dist/policy/yaml-loader.js.map +1 -0
- package/dist/privacy/guard.d.ts +8 -0
- package/dist/privacy/guard.d.ts.map +1 -0
- package/dist/privacy/guard.js +125 -0
- package/dist/privacy/guard.js.map +1 -0
- package/dist/routing/circuit-breaker.d.ts +23 -0
- package/dist/routing/circuit-breaker.d.ts.map +1 -0
- package/dist/routing/circuit-breaker.js +74 -0
- package/dist/routing/circuit-breaker.js.map +1 -0
- package/dist/routing/classifier.d.ts +5 -0
- package/dist/routing/classifier.d.ts.map +1 -0
- package/dist/routing/classifier.js +102 -0
- package/dist/routing/classifier.js.map +1 -0
- package/dist/routing/fallback.d.ts +27 -0
- package/dist/routing/fallback.d.ts.map +1 -0
- package/dist/routing/fallback.js +66 -0
- package/dist/routing/fallback.js.map +1 -0
- package/dist/routing/multistage.d.ts +49 -0
- package/dist/routing/multistage.d.ts.map +1 -0
- package/dist/routing/multistage.js +108 -0
- package/dist/routing/multistage.js.map +1 -0
- package/dist/routing/router.d.ts +22 -0
- package/dist/routing/router.d.ts.map +1 -0
- package/dist/routing/router.js +123 -0
- package/dist/routing/router.js.map +1 -0
- package/dist/routing/scorer.d.ts +8 -0
- package/dist/routing/scorer.d.ts.map +1 -0
- package/dist/routing/scorer.js +131 -0
- package/dist/routing/scorer.js.map +1 -0
- package/dist/skills/definitions.d.ts +10 -0
- package/dist/skills/definitions.d.ts.map +1 -0
- package/dist/skills/definitions.js +112 -0
- package/dist/skills/definitions.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +14 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/types/index.d.ts +298 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +34 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/canrunit.d.ts +26 -0
- package/dist/utils/canrunit.d.ts.map +1 -0
- package/dist/utils/canrunit.js +69 -0
- package/dist/utils/canrunit.js.map +1 -0
- package/dist/utils/dealsforge.d.ts +6 -0
- package/dist/utils/dealsforge.d.ts.map +1 -0
- package/dist/utils/dealsforge.js +105 -0
- package/dist/utils/dealsforge.js.map +1 -0
- package/docs/ADAPTERS.md +129 -0
- package/docs/ARCHITECTURE.md +113 -0
- package/docs/DELEGATED_EXECUTION.md +62 -0
- package/docs/FEATURE_MATRIX.md +113 -0
- package/docs/GATEWAY_FIRST_PRINCIPLES.md +66 -0
- package/docs/INTEGRATIONS.md +94 -0
- package/docs/LIMITATIONS.md +43 -0
- package/docs/RECOMMEND_ONLY_MODE.md +82 -0
- package/docs/ROADMAP.md +70 -0
- package/docs/SECURITY.md +74 -0
- package/docs/SKILLS_AND_TOOLS.md +141 -0
- package/examples/community-adapter/TEMPLATE.md +157 -0
- package/examples/generic-tools/README.md +29 -0
- package/examples/generic-tools/mozart-tools.json +86 -0
- package/examples/hermes/README.md +29 -0
- package/examples/hermes/mozart-tool.json +48 -0
- package/examples/litellm/README.md +21 -0
- package/examples/litellm/config.yaml +39 -0
- package/examples/ollama/README.md +37 -0
- package/examples/ollama/usage.ts +59 -0
- package/examples/openclaw/README.md +26 -0
- package/examples/openclaw/mozart-skill.yaml +80 -0
- package/examples/opencode/README.md +30 -0
- package/examples/opencode/SKILL.md +47 -0
- package/examples/opencode/mozart-skill.json +64 -0
- package/examples/openrouter/README.md +21 -0
- package/examples/openrouter/config.json +14 -0
- package/package.json +53 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mozart-router
|
|
3
|
+
description: Route AI tasks to the best available model based on cost, context, latency, privacy and reliability. Gateways execute — Mozart decides.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: opencode
|
|
6
|
+
metadata:
|
|
7
|
+
audience: ai-builders
|
|
8
|
+
category: orchestration
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Mozart Router — OpenCode Skill
|
|
12
|
+
|
|
13
|
+
## What I do
|
|
14
|
+
- Detect your configured AI providers and models
|
|
15
|
+
- Classify each task and select the optimal model/provider
|
|
16
|
+
- Estimate cost and tokens before execution
|
|
17
|
+
- Scan for secrets and block cloud leaks
|
|
18
|
+
- Explain every routing decision
|
|
19
|
+
- Fall back gracefully when providers fail
|
|
20
|
+
|
|
21
|
+
## When to use me
|
|
22
|
+
Use this skill when the agent needs to:
|
|
23
|
+
- Choose between multiple available models
|
|
24
|
+
- Estimate the cost of an LLM call before making it
|
|
25
|
+
- Check if context contains secrets before sending to a cloud model
|
|
26
|
+
- Optimize context to reduce token usage
|
|
27
|
+
- Get a fallback plan in case a model fails
|
|
28
|
+
|
|
29
|
+
## How to use
|
|
30
|
+
Call the Mozart MCP server or SDK:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { Mozart } from 'mozart-router';
|
|
34
|
+
const mozart = new Mozart();
|
|
35
|
+
await mozart.detectAll();
|
|
36
|
+
const route = await mozart.recommend('your task here');
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Integration modes
|
|
40
|
+
- **MCP Server**: `npx mozart-router mcp`
|
|
41
|
+
- **CLI**: `npx mozart-router doctor`
|
|
42
|
+
- **SDK**: `import { Mozart } from 'mozart-router'`
|
|
43
|
+
- **HTTP API**: `npx mozart-router start --port=4444`
|
|
44
|
+
|
|
45
|
+
Gateways execute. Mozart decides.
|
|
46
|
+
Do not rebuild what the gateway already does.
|
|
47
|
+
Detect it, understand it, orchestrate it.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mozart.route_model",
|
|
3
|
+
"description": "Choose the best available model/provider/gateway for a task",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"type": "skill",
|
|
6
|
+
"integration": {
|
|
7
|
+
"provider": "mozart-router",
|
|
8
|
+
"method": "sdk",
|
|
9
|
+
"package": "mozart-router"
|
|
10
|
+
},
|
|
11
|
+
"input": {
|
|
12
|
+
"task": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "The task to route",
|
|
15
|
+
"required": true
|
|
16
|
+
},
|
|
17
|
+
"context_size": {
|
|
18
|
+
"type": "number",
|
|
19
|
+
"description": "Estimated context size in tokens"
|
|
20
|
+
},
|
|
21
|
+
"privacy_mode": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "Privacy level",
|
|
24
|
+
"enum": ["open", "balanced", "privacy_first", "local_only"],
|
|
25
|
+
"default": "balanced"
|
|
26
|
+
},
|
|
27
|
+
"budget_mode": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"description": "Budget preference",
|
|
30
|
+
"enum": ["lowest", "balanced", "quality"],
|
|
31
|
+
"default": "balanced"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"output": {
|
|
35
|
+
"selected_gateway": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "Selected gateway"
|
|
38
|
+
},
|
|
39
|
+
"selected_provider": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Selected provider"
|
|
42
|
+
},
|
|
43
|
+
"selected_model": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "Selected model"
|
|
46
|
+
},
|
|
47
|
+
"confidence": {
|
|
48
|
+
"type": "number",
|
|
49
|
+
"description": "Confidence score (0-1)"
|
|
50
|
+
},
|
|
51
|
+
"estimated_cost": {
|
|
52
|
+
"type": "number",
|
|
53
|
+
"description": "Estimated cost in USD"
|
|
54
|
+
},
|
|
55
|
+
"explanation": {
|
|
56
|
+
"type": "array",
|
|
57
|
+
"description": "Human-readable explanation"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"usage": {
|
|
61
|
+
"import": "import { Mozart } from 'mozart-router'",
|
|
62
|
+
"example": "const mozart = new Mozart();\nconst route = await mozart.recommend(task);"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# OpenRouter + Mozart
|
|
2
|
+
|
|
3
|
+
This directory contains an example OpenRouter configuration reference.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
- `config.json` — Example OpenRouter config
|
|
8
|
+
|
|
9
|
+
## Integration
|
|
10
|
+
|
|
11
|
+
Mozart detects OpenRouter via the `OPENROUTER_API_KEY` environment variable. When configured, Mozart adds OpenRouter to its inventory and can route tasks to models available through OpenRouter.
|
|
12
|
+
|
|
13
|
+
1. Set your API key (already managed by your existing setup)
|
|
14
|
+
2. Mozart detects it and builds an inventory
|
|
15
|
+
3. Route tasks via Mozart's recommendation engine
|
|
16
|
+
|
|
17
|
+
## Status
|
|
18
|
+
|
|
19
|
+
OpenRouter integration is **real** — environment variable detection and curated model inventory work. Real-time model list from the API is not yet implemented to avoid unnecessary network calls.
|
|
20
|
+
|
|
21
|
+
This integration is community-maintained. OpenRouter is its own service (https://openrouter.ai).
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"providers": {
|
|
3
|
+
"openrouter": {
|
|
4
|
+
"base_url": "https://openrouter.ai/api/v1",
|
|
5
|
+
"auth": "Bearer ${OPENROUTER_API_KEY}"
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
"preferences": {
|
|
9
|
+
"default_model": "auto",
|
|
10
|
+
"fallback_enabled": true,
|
|
11
|
+
"max_cost_per_call": 0.5
|
|
12
|
+
},
|
|
13
|
+
"mozart_note": "Mozart detects OpenRouter via OPENROUTER_API_KEY env var. No additional configuration needed."
|
|
14
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mozart-router",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Local orchestration and routing layer for AI agents — gateway-first, agent-first, integration-first.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"mozart-router": "./dist/cli/main.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"test": "vitest run",
|
|
13
|
+
"test:watch": "vitest",
|
|
14
|
+
"lint": "tsc --noEmit",
|
|
15
|
+
"mozart": "node dist/cli/main.js",
|
|
16
|
+
"dev": "tsx src/cli/main.ts"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"ai",
|
|
20
|
+
"orchestration",
|
|
21
|
+
"routing",
|
|
22
|
+
"gateway",
|
|
23
|
+
"agent",
|
|
24
|
+
"llm",
|
|
25
|
+
"local"
|
|
26
|
+
],
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"author": "Ucav",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/ucav/mozart-router.git"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^20.11.0",
|
|
35
|
+
"typescript": "^5.3.3",
|
|
36
|
+
"vitest": "^1.2.0"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"yaml": "^2.3.4"
|
|
40
|
+
},
|
|
41
|
+
"optionalDependencies": {
|
|
42
|
+
"tsx": "^4.7.0"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18"
|
|
46
|
+
},
|
|
47
|
+
"files": [
|
|
48
|
+
"dist",
|
|
49
|
+
"docs",
|
|
50
|
+
"examples",
|
|
51
|
+
"README.md"
|
|
52
|
+
]
|
|
53
|
+
}
|