AI Stupid Level
LLM benchmark rankings, drift status, incidents and Smart Router previews from AI Stupid Level.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
@aistupidlevel/mcpclaude mcp add ai-stupid-level -e 'ASL_DATA_KEY=<your asl_data_key>' -e 'ASL_ROUTER_KEY=<your asl_router_key>' -e 'ASL_SANDBOX=false' -- npx -y @aistupidlevel/mcp@0.1.1
{
"mcpServers": {
"ai-stupid-level": {
"command": "npx",
"args": [
"-y",
"@aistupidlevel/mcp@0.1.1"
],
"env": {
"ASL_DATA_KEY": "<your asl_data_key>",
"ASL_ROUTER_KEY": "<your asl_router_key>",
"ASL_SANDBOX": "false"
}
}
}
}
Variables d'environnement
ASL_DATA_KEYsecret Data API key (asl_live_...) for rankings, history, drift, incidents and provider status. Free key: https://aistupidlevel.info/account/data-keys (10 requests a day, 1 a minute).ASL_ROUTER_KEYsecret Smart Router key (aism_...) for preview_route, ask_router and usage. Create one at https://aistupidlevel.info/router/keys.ASL_SANDBOXtrue: every Smart Router call returns a mock answer from real routing, so nothing is spent or counted.
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
AI Stupid Level SDKs
Official clients for the AI Stupid Level Smart Router, an OpenAI-compatible endpoint. Each request goes to the model measuring best for that kind of work, based on benchmarks that are re-run continuously. You call it with your own provider keys.
| Package | Install | Source |
|---|---|---|
| TypeScript / JavaScript | npm install @aistupidlevel/router | packages/router |
| Python | pip install aistupidlevel | python |
| Vercel AI SDK provider | npm install @aistupidlevel/ai-sdk-provider | packages/ai-sdk-provider |
| MCP server (Claude, Cursor, VS Code, …) | npx -y @aistupidlevel/mcp | packages/mcp |
| n8n community node | Settings → Community Nodes → n8n-nodes-aistupidlevel | packages/n8n-nodes-aistupidlevel |
| Raycast extension | Raycast Store (in review) | integrations/raycast/aistupidlevel |
LangChain chat model (ChatAISL) | pip install langchain-aistupidlevel | langchain-python |
| Hermes Agent provider plugin | hermes plugins install aistupidlevel | integrations/hermes/aistupidlevel |
| DeepSeek Harness plugin bundle | dsh plugin --profile web add @aistupidlevel/dsh-provider | packages/dsh-provider |
| OpenClaw provider plugin | openclaw plugins install clawhub:@aistupidlevel/openclaw-provider | packages/openclaw-provider |
| Pi provider extension | pi install npm:@aistupidlevel/pi-provider | packages/pi-provider |
| Langflow model provider + component | pip install lfx-aistupidlevel, then restart Langflow | langflow-python |
| Open WebUI Function (manifold pipe) | Admin Panel → Functions → Import from URL | integrations/open-webui |
openapi/router-v1.json describes the API in OpenAPI 3.1, for generating a
client in any other language. The live copy is at https://aistupidlevel.info/v1/openapi.json.
Quick start
import { ASLRouter } from '@aistupidlevel/router';
const router = new ASLRouter(); // ASL_ROUTER_KEY
const r = await router.chat.completions.create({ model: 'auto-coding', messages: [{ role: 'user', content: 'Fix this bug: ...' }] });
console.log(r.choices[0].message.content, r.routing.model, r.routing.reasoning);
from aistupidlevel import ASLRouter
router = ASLRouter() # ASL_ROUTER_KEY
r = router.chat.completions.create(model="auto-coding", messages=[{"role": "user", "content": "Fix this bug: ..."}])
print(r.choices[0].message.content, r.routing.model, r.routing.reasoning)
Why use an SDK instead of an OpenAI client
Any OpenAI client works against https://aistupidlevel.info/v1. The SDKs add:
- Routing info on every answer and stream: the model and provider that answered, why they were chosen, and whether a fallback answered.
- Safe retries. An automatic
Idempotency-Keymeans a request is answered once, even if it is retried. - Typed errors with
partyandretryable. An app can tell its user to top up, to fix a provider key, or simply to try again. runTools/run_tools, a tool-calling loop that stays on one model.- Sandbox mode (mock answers through real routing, at no cost), route previews, and usage.
See the API documentation.
Development
# TypeScript (the router package runs on Node 18+; the AI SDK provider needs Node 22+)
cd packages/router && npm ci && npm run build && npm test
cd packages/ai-sdk-provider && npm ci && npm run build && npm test
cd packages/mcp && npm ci && npm run build && npm test
cd packages/openclaw-provider && npm ci && npm test # Node 24.16+, like OpenClaw
cd packages/pi-provider && npm ci && npm test # Node 22.19+, like Pi
cd packages/n8n-nodes-aistupidlevel && npm ci && npm run build && npm run lint && npm test
# Python
cd python && pip install -e . && python -m unittest discover -s tests
cd langflow-python && pip install -e . pytest && pytest tests # in a venv with Langflow 1.12+
The live tests run against the real router in sandbox mode, so nothing is spent. They need a router key and are skipped without one:
ASL_ROUTER_KEY=aism_... npm test
ASL_ROUTER_KEY=aism_... python -m unittest discover -s tests
Releasing
- Bump the version in every place it appears:
packages/router/package.jsonandpackages/router/src/core.ts;packages/ai-sdk-provider/package.jsonandpackages/ai-sdk-provider/src/index.ts;packages/mcp/package.json,packages/mcp/src/config.tsand both versions inpackages/mcp/server.json;python/src/aistupidlevel/_version.py.
- npm:
npm publish --access publicin each package directory.prepublishOnlybuilds the package and runs its tests first. - PyPI:
cd python && python -m build && twine upload dist/*. - MCP Registry, after the npm release of
@aistupidlevel/mcp:cd packages/mcp && mcp-publisher login github && mcp-publisher publish. - n8n node: n8n accepts only npm releases with provenance, so it is published by
.github/workflows/n8n-publish.yml. Bumppackages/n8n-nodes-aistupidlevel/package.jsonand itsCHANGELOG.md, then push a tagn8n-v<version>. - Raycast: from
integrations/raycast/aistupidlevel,npm run publishopens a pull request to raycast/extensions. - Pi:
cd packages/pi-provider && npm publish(Node 22.19+). Push first: the pi.dev gallery image is read frommain. Thepi-packagekeyword lists it on pi.dev/packages; there is nothing to submit. - Langflow: bump
langflow-python/pyproject.toml,src/lfx_aistupidlevel/__init__.pyandsrc/lfx_aistupidlevel/extension.json(a test checks they match), thencd langflow-python && uv build && twine upload dist/*with twine 7 or later.
Licence
MIT
Questions fréquentes
Qu'est-ce que AI Stupid Level ?
LLM benchmark rankings, drift status, incidents and Smart Router previews from AI Stupid Level.
Comment installer AI Stupid Level ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add ai-stupid-level -e 'ASL_DATA_KEY=<your asl_data_key>' -e 'ASL_ROUTER_KEY=<your asl_router_key>' -e 'ASL_SANDBOX=false' -- npx -y @aistupidlevel/mcp@0.1.1. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour AI Stupid Level ?
Oui. Il attend ASL_DATA_KEY, ASL_ROUTER_KEY, à renseigner dans sa configuration.
AI Stupid Level est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient AI Stupid Level ?
Il est publié par StudioPlatforms. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.