If Anthropic gates · if OpenAI ToS shifts · if your favourite LLM provider rate-limits you on a Sunday night · fallcompass keeps your tool alive.
"One drop-in script. Eight LLM providers. The cascade tries them in your preferred order. First success wins. Your sovereign tool never depends on a single vendor's mood."
fallcompass is the answer to "what happens to my AI app the day OpenAI shuts you down." It's a 6KB shim you paste into any HTML file. It tries Ollama (free, local) → fallcore (your self-hosted proxy) → Anthropic → OpenRouter → Gemini → OpenAI → Mistral → WebLLM (in-browser, no key) — in whatever order you want, with whatever keys you have. The first one that responds, wins.
| What kills SaaS-AI apps | fallcompass response |
|---|---|
| OpenAI deprecates GPT-4 endpoint | Cascade falls through to Claude / Gemini / local |
| Anthropic adds country block | Cascade falls through to OpenRouter / Mistral / local |
| Your API key gets rate-limited | Cascade falls through to next provider · user sees no error |
| Provider injects new "safety" filter you can't bypass | Cascade falls through to less-filtered alternative |
| Internet is down | WebLLM in-browser kicks in · zero network |
| Your client doesn't trust paid APIs | Default to Ollama (their hardware, their model, their key) |
Click probe to see which LLM providers are reachable from this device. Local ones (Ollama, WebLLM) need no key. Cloud ones (Anthropic, OpenAI, etc.) need your BYOK.
Type a prompt. Click ASK. fallcompass tries your preferred provider order. First one that responds, wins. You'll see which provider answered + how long it took.
<script src="https://sjgant80-hub.github.io/fallcompass/fallcompass-shim.js"></script>
<script>
const r = await FallCompass.chat({ messages: [{ role:'user', content:'hi' }] });
console.log(r.provider, '·', r.ms, 'ms', '·', r.reply);
</script>
That's it. Your tool now has 8-provider failover. FallCompass.setKey('anthropic','sk-ant-...') sets a key for that provider (stored in localStorage). FallCompass.probe() returns which providers are reachable.
Override the order per-request:
FallCompass.chat({
messages: [...],
preferredOrder: ['webllm','ollama','anthropic']
});
FallCompass.setKey().preferredOrder: ['ollama','fallcore'] · all inference stays on-premise.Only to the LLM provider you have a key for. Never to a fallcompass server (there is none). Open the Network tab — verify yourself.
In your browser's localStorage, under fallcompass.<provider>.key. They never leave the device. Clearing browser data wipes them.
Yes — pass preferredOrder to chat() with only the providers you want, in your preferred sequence.
v1.0 is non-streaming for simplicity. v1.1 (next) will add streaming on a per-adapter basis.
No. fallcore is a self-hosted Anthropic-compatible proxy (one provider, your hardware). fallcompass is a browser-side cascade router (8 providers, automatic failover). They mesh: fallcore is one of fallcompass's adapters.
It's hosted on GitHub Pages, which serves it from GitHub's infrastructure. If you don't trust that, vendor-copy the file into your own tool — it's 6KB, zero dependencies.
Every tool in the AI Native Solutions estate that currently uses a single LLM provider will get fallcompass injected. Same line:
<script src="https://sjgant80-hub.github.io/fallcompass/fallcompass-shim.js"></script>
After ripple: if Anthropic gates the subscription · ShadowCompass, FallPost, FallMap, FallForce, FallLearn, FallAccount Trades, the AI Native Solutions hub — they all silently fail over to Ollama / Gemini / OpenRouter. Users see no outage. The estate self-defends.
MIT. Fork it, vendor-copy it, modify it. The 6KB shim is yours.
Built by AI Native Solutions. Part of the sovereign estate. Source on GitHub.