Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions components/icons/providers/aistupidlevel.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import React from 'react'

// Monochrome silhouette of the ASL wordmark (https://aistupidlevel.info)
export default function AIStupidLevelIcon({ className, ...props }: React.SVGProps<SVGSVGElement>) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 -297 754 754"
className={className}
aria-hidden="true"
{...props}
>
<path
fill="currentColor"
fillRule="evenodd"
d="M1.0 159.2C1.0 158.4 23.9 133.0 101.0 48.0C112.7 35.1 127.3 19.0 133.4 12.3L144.5 0.0L165.7 0.0L187.0 0.0L226.7 79.4C248.6 123.1 266.2 159.1 265.9 159.4C265.6 159.8 226.2 159.9 178.4 159.8L91.5 159.5L108.3 141.9L125.0 124.2L152.8 124.4C168.0 124.5 183.5 124.3 187.2 124.0L193.8 123.5L176.4 88.0C166.9 68.5 158.7 52.5 158.3 52.5C157.8 52.5 144.7 66.4 129.1 83.5C113.4 100.6 97.5 117.9 93.6 122.0C89.7 126.1 80.3 136.4 72.7 144.8L58.8 160.0L29.9 160.0C14.0 160.0 1.0 159.7 1.0 159.2ZM277.9 155.8C276.7 153.4 272.7 145.6 268.9 138.4L262.0 125.3L266.3 124.7C268.6 124.4 305.4 124.2 348.1 124.2C404.3 124.3 426.6 124.0 429.1 123.1C433.2 121.8 438.4 116.7 439.9 112.7C441.9 107.4 441.3 101.6 438.4 98.9L435.8 96.5L362.2 95.9C297.8 95.5 287.8 95.2 283.1 93.8C268.5 89.3 257.4 80.6 252.4 69.7C250.1 64.8 249.5 61.7 249.2 54.7C248.5 38.8 253.6 26.7 265.5 15.8C270.0 11.6 283.0 5.2 291.7 2.8C299.5 0.6 300.1 0.6 402.4 0.2L505.2 -0.1L503.4 2.4C502.3 3.7 494.5 12.3 486.0 21.3L470.5 37.9L390.7 37.9C303.1 38.0 306.3 37.8 302.7 43.9C301.8 45.5 301.0 48.7 301.0 51.0C301.0 54.4 301.6 55.7 304.0 58.0C305.6 59.5 308.4 61.0 310.1 61.4C311.8 61.7 345.9 62.0 385.9 62.0C431.2 62.0 460.1 62.4 462.9 63.1C474.5 65.7 485.2 73.8 489.2 82.8C492.1 89.2 492.7 100.5 490.6 109.5C487.7 121.7 482.7 130.5 473.6 139.5C464.4 148.7 455.7 153.8 443.3 157.2C435.6 159.4 434.1 159.4 357.8 159.8L280.1 160.1L277.9 155.8ZM499.4 155.8C500.1 151.5 519.8 53.1 526.8 19.0L530.7 0.5L557.0 0.2C571.5 0.1 583.7 0.3 584.0 0.7C584.4 1.2 582.9 10.5 580.8 21.5C567.8 89.0 561.3 123.6 561.6 123.9C561.9 124.2 604.8 124.5 657.2 124.7C709.5 124.8 752.4 125.1 752.6 125.3C752.8 125.5 744.7 133.3 734.7 142.8L716.5 159.9L607.6 160.0L498.7 160.0L499.4 155.8Z"
/>
</svg>
)
}
1 change: 1 addition & 0 deletions components/icons/providers/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export { default as AIStupidLevelIcon } from './aistupidlevel'
export { default as AnthropicIcon } from './anthropic'
export { default as AnyscaleIcon } from './anyscale'
export { default as ApipieIcon } from './apipie'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: AI Stupid Level
icon: AIStupidLevel
description: Configure the AI Stupid Level Smart Router as a custom endpoint in LibreChat.
---

AI Stupid Level runs coding, reasoning and tool-use benchmarks on the major models continuously. Its Smart Router is an OpenAI-compatible endpoint that sends each request to the model that currently scores best for the kind of work, using your own provider keys (OpenAI, Anthropic, Google, DeepSeek, Kimi, GLM).

## Get an API key

Create a router key at [aistupidlevel.info/router/keys](https://aistupidlevel.info/router/keys) and add at least one provider key to your account under [Providers](https://aistupidlevel.info/router/providers). Add the router key to your `.env` file:

```bash filename=".env"
ASL_ROUTER_KEY=your-router-key
```

## Configuration

Add the endpoint to the `custom` list under `endpoints` in your `librechat.yaml`. If your file already has an `endpoints.custom` list, paste only the `- name:` entry into it, keeping the same indentation:

```yaml filename="librechat.yaml"
endpoints:
custom:
- name: "AI Stupid Level"
apiKey: "${ASL_ROUTER_KEY}"
baseURL: "https://aistupidlevel.info/v1"
models:
default: ["auto-coding", "auto-reasoning", "auto-tooling", "auto-best", "auto-value"]
fetch: true
titleConvo: true
titleModel: "auto-fastest-quality"
modelDisplayLabel: "AI Stupid Level"
iconURL: "https://aistupidlevel.info/apple-touch-icon.png"
```

## Notes

- Model IDs are routing modes: `auto-coding`, `auto-reasoning` and `auto-tooling` pick the model with the top score on that benchmark, `auto-best` the highest combined score, and `auto-value` the most benchmark points per measured dollar among near-top models. Any real model ID (for example `claude-opus-5-5`) pins that model. With `fetch: true`, LibreChat loads the full list from the router.
- Each provider bills its usage to your own provider account. The response header `X-AISM-Model` names the model that answered.
- The router routes text only: requests with image, audio or file content are rejected with `400 unsupported_content`.
- To try the configuration without spending anything, add `headers: { X-ASL-Sandbox: "true" }` to the endpoint. The router then runs its real routing and returns a mock answer. See the [router documentation](https://aistupidlevel.info/router/docs).
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"title": "AI Endpoints",
"icon": "Plug",
"pages": [
"aistupidlevel",
"anyscale",
"apipie",
"azure",
Expand Down
2 changes: 2 additions & 0 deletions lib/icons.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { ReactElement } from 'react'
import {
AIStupidLevelIcon,
AnthropicIcon,
AnyscaleIcon,
ApipieIcon,
Expand Down Expand Up @@ -236,6 +237,7 @@ const icons: Record<string, ReactElement> = {
UserPlus: <UserPlus />,
Settings2: <Settings2 />,
// Brand icons (Simple Icons paths, local components)
AIStupidLevel: <AIStupidLevelIcon />,
Anthropic: <AnthropicIcon />,
Anyscale: <AnyscaleIcon />,
Apipie: <ApipieIcon />,
Expand Down