no model idle voice off mic off
NOX

NOX

all-in-one · chat · voice · image · shorts

Image generator

Gallery

Nothing generated yet.

Shorts studio · local render = unlimited

Video is encoded in your browser with canvas captureStream + MediaRecorder. No credits, no queue, no server.

Reference room (@image1)

Applied as the wall + floor material in the 3D room. Swap walls/floor textures to match your photo.

Reference character (@image2)

Applied as the character's chest decal. To use a full 3D model instead, paste a GLB/GLTF URL below.
Loads a real rigged mesh over the built-in character. This is how you get an exact Fortnite-style model in.

Character look

Model provider

Persona

Voice

Speech synthesis works everywhere. Speech recognition needs mic permission and is blocked inside sandboxed previews — open the saved file directly for real voice input.

The truth about “no limits”

Every hosted provider caps something. Verified September 2026: Groq · 30 rpm / 1,000 req/day / 200K tok/day OpenRouter · 20 rpm / 50 req/day free Gemini Flash · free, but prompts may train Google HF · $0.10/mo credits Ollama · actually unlimited

The only setup with no rate limit and no per-token cost is a local model through Ollama. Point the provider at Ollama and the cap disappears — you pay in GPU instead of dollars.

Sources: klymentiev.com/blog/free-llm-api · blogs.novita.ai/free-llm-api-comparison-2026/ · huggingface.co/docs/inference-providers/en/pricing

Live diagnostics

Common errors → fix

Failed to fetch / CORS — most providers block browser calls from unknown origins. Save this file and open it directly, or serve it locally. Also confirm the base URL has no trailing slash.

401 / 403 — key is wrong, expired, or scoped wrong. Gemini needs a key from AI Studio, not a Google Cloud key.

404 model not found — model ids change constantly. Copy the current id from the provider's dashboard.

429 — you hit the free-tier rate cap. Switch provider in Setup, or drop to Ollama.

Mic does nothing — sandboxed previews block the microphone. Open the file directly and allow mic access.

Video render is blank — WebGL capture needs preserveDrawingBuffer, which is already enabled here. If it still fails, use the 2D shorts renderer instead.

No voices in the list — voices load asynchronously; the list refreshes on voiceschanged. On Linux, install speech-dispatcher.