Run Muse Glimmer for free
The API is OpenAI-compatible. Change the base URL and the model name — everything else works as it is.
Python
Install the OpenAI SDK, then point it here.
# pip install -U openai
from openai import OpenAI
client = OpenAI(
base_url="https://api.worldsignal.ai/v1",
api_key="ws_...",
)
r = client.chat.completions.create(
model="Muse-Glimmer-30B",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=4000, # keep this high — see below
temperature=1.0,
top_p=0.95,
)
print(r.choices[0].message.content)Set max_tokens high
This is the one thing that trips people up.
max_tokens covers the reasoning and the answer together. Too low and you get an empty response, no error — the budget went to thinking. Replying “OK” costs about 95 tokens. Use 4000 or more.
msg = r.choices[0].message
print(msg.model_extra["reasoning_content"]) # the thinking
print(msg.content) # the answerStreaming
Recommended for long generations so requests don't time out.
stream = client.chat.completions.create(
model="Muse-Glimmer-30B",
messages=[{"role": "user", "content": "Write a poem."}],
max_tokens=4000,
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Images
Send an image alongside your text.
import base64
b64 = base64.b64encode(open("shot.png", "rb").read()).decode()
r = client.chat.completions.create(
model="Muse-Glimmer-30B",
messages=[{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
{"type": "text", "text": "What is this?"},
]}],
max_tokens=4000,
)Images must be at least 14×14 pixels — that’s the vision encoder’s patch size. Smaller images return a 500.
Tool calling
Standard OpenAI tools in, standard tool_calls out.
r = client.chat.completions.create(
model="Muse-Glimmer-30B",
messages=[{"role": "user", "content": "Weather in Tokyo?"}],
tools=[{"type": "function", "function": {
"name": "get_weather",
"parameters": {"type": "object",
"properties": {"city": {"type": "string"}}},
}}],
max_tokens=4000,
)
print(r.choices[0].message.tool_calls)curl
curl https://api.worldsignal.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ws_..." \
-d '{"model":"Muse-Glimmer-30B","messages":[{"role":"user","content":"Hi"}],"max_tokens":4000}'On Windows PowerShell use curl.exe, not curl — the latter is an alias for Invoke-WebRequest and takes different flags.
Claude Code
Point Claude Code at this endpoint instead of Anthropic.
Add to ~/.claude/settings.json. On Windows that’s C:\Users\you\.claude\settings.json. Merge the env keys if the file already exists, then restart Claude Code.
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.worldsignal.ai",
"ANTHROPIC_AUTH_TOKEN": "ws_...",
"ANTHROPIC_MODEL": "Muse-Glimmer-30B",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "Muse-Glimmer-30B",
"API_TIMEOUT_MS": "3000000"
},
"model": "Muse-Glimmer-30B"
}Use ANTHROPIC_AUTH_TOKEN, not ANTHROPIC_API_KEY — that one sends x-api-key and returns 401. ANTHROPIC_BASE_URL takes no /v1. WebSearch and WebFetch stop working here; everything else does.
Limits
Going over returns 429. Counters roll continuously, so a few minutes clears it. Prompt and max_tokens share the 131,072 budget.