Cascade is a local-first AI app builder powered by your own Ollama models. An agent writes the code, runs it in a sandboxed container, and shows you a live preview — no cloud, no API keys, no lock-in.
No sign-up. No telemetry. Bring your own model — ollama pull qwen2.5-coder and go.
cartCount / addLine. Updating each view's interface:
Bags & Racks3 products
Lights & Safety2 products
Tools & Maintenance3 products
Accessories2 productsCascade speaks the OpenAI wire protocol, so it points at whatever you already pay for — or at nothing at all, and stays local. Your key, your account, called directly; nothing proxies through us.
vLLM
Whatever Ollama can run, Cascade can drive — swap per project, no re-install.
Nine of the models people run most — the full Ollama library works the same way.
Prompts, code and data never leave the machine.
Nothing to sign up for. Add your own key later only if you want cloud.
Every line public — read it, fork it, ship with it.
Swap models per project — 7B laptop to 70B workstation.
Cascade ships a full model manager — curate your picker, set the context window and output cap per model, dial sampling, and manage provider keys. Changes apply live, on the next turn.
Curate what shows in the picker — add by name or straight from a provider's catalog, then switch in one click.
Context window, max output tokens, temperature and top-p — per model, with Auto to defer to the backend default.
Ollama runs local; OpenAI, Groq, OpenRouter and NVIDIA take your key. Set it for the session or persist it in .env.
No restart, no re-index. Save and the very next turn uses the new model and settings.
Curate the models in your picker, add models manually or from a provider's catalog, and tune each model's context window, output cap, and sampling. Changes apply live — no restart.
Local models fail in ways you have to see to fix — a loop that never converges, a cache miss that doubles every call, a plan the model quietly ignored. Cascade ships its own trace viewer, writing to a file on your disk. No collector, no Python service, no account.
One message is one trace — every model call, every tool call and every sub-agent it delegated to, in the order they happened.
Not a preview. The entire message list as sent, the reasoning kept as reasoning, every tool's input and output — stored uncapped.
Tokens per call and real context occupancy. On local backends prefill and decode split out — a cold cache reads nothing like a slow model.
Every failed command, every turn that touched a file, every loop breaker that fired — across your whole history, not one trace at a time.
Already have Phoenix, Langfuse or another OTLP collector? Point Cascade at it with one environment variable — the same traces, exported as OpenTelemetry spans, with nothing to change.
The full prompt-to-running-app loop — chat, code, sandbox, preview — rebuilt from first principles to run on your hardware, with your models.
Your prompts, your code, your data — none of it leaves your machine. No accounts, no telemetry, no usage caps. Work on a plane, in a lab, or behind an air gap.
Every project gets its own Docker container. The agent's shell commands and dev server run inside it — it can build anything without ever touching your machine.
The dev server runs in the sandbox and streams straight into the builder. Prompt, watch the diff, see it running — one loop, no deploys.
Not a prompt wrapper — a full agentic loop with tools, permissions, subagents, 3-tier memory, context compaction and error recovery.
An activity-first timeline shows every file written, every command run, live — then the answer lands whole. No wall of streaming tokens.
The same headless core drives every frontend over one protocol — use the app builder in your browser, the agent inside VS Code, or the native Windows app.
Start from a template and tell the agent what to build — a store, a dashboard, a game. Plain words, no boilerplate.
It plans, writes files, installs dependencies and fixes its own errors — every step visible in the live activity timeline.
The dev server spins up in the project's container and appears in the preview pane. Iterate by chatting — every change is git-tracked.