◊·κ=1 · prime 1301 · part of the AI Native Solutions estate
One cascade. Every seed. Same level.
Drop-in JS module that gives any estate seed the AI cascade and P2P mesh users now expect — T0 off (default) · T2 WebLLM in-browser (1B → 70B) · T3 BYOK frontier (Anthropic / OpenAI / Google) · plus WebRTC mesh on the canonical fall-signal channel. Inlines for sovereignty. ~16 KB.
The 3 tiers
| Tier | What you get | Where the work happens |
|---|---|---|
| T0 · off | The seed runs fully without AI. Default for every install. | Nothing downloads · zero API calls |
| T2 · WebLLM | In-browser LLM via WebLLM. Pick a model: 1B (700MB · any laptop) · 3B (2GB · balanced default) · 7B (5GB · capable) · 8B (5GB · common) · 70B (40GB · frontier, needs serious GPU + 64GB RAM) | 100% in your browser · runs offline forever after first load · zero data leaves the device |
| T3 · BYOK | Bring your own key for frontier models. Anthropic (Sonnet 4.5 · Opus 4.7 · Haiku 4.5) · OpenAI (GPT-4o · 4o-mini · o1-mini) · Google (Gemini 1.5 Pro · 1.5 Flash · 2.0 Flash) | Direct fetch to provider · key stays in your browser · never proxied |
Try it live
The chip is mounted at the top right of this page →
Click it to open the cascade settings. Then ask the kit to generate something with T0 (graceful null) · T2 (load a model first) · T3 (paste a key).
→ output will appear here
Embed in your seed
Two ways. Inline for sovereignty (recommended) — copy the contents of fall-kit.js inside a <script> tag in your HTML. Or reference via CDN if you trust this hosted copy:
<script src="https://sjgant80-hub.github.io/fall-kit/fall-kit.js"></script>
<script>
FallKit.init({
seedName: 'my-seed',
chipAnchor: 'header .actions' // CSS selector for where the AI chip goes
});
// Use anywhere you want AI assist · degrades gracefully at T0
const draft = await FallKit.aiComplete(
'You are a tight technical writer.',
'Summarise this in 30 words: ' + sourceText,
200
);
if (draft) showDraft(draft);
else /* T0: fall back to your non-AI logic */;
</script>
Public API
| Method | Returns | What |
|---|---|---|
FallKit.init({seedName, chipAnchor}) | {version} | Installs CSS · mounts AI chip · returns kit version |
FallKit.aiComplete(sys, msg, maxTokens) | string|null | Universal entry. T0 → null. T2/T3 → completion. Caller MUST handle null gracefully. |
FallKit.loadWebLLM(modelKey?) | Promise | Lazy-loads WebLLM with chosen model (defaults to user's last pick or '3b') |
FallKit.openSettings() | void | Opens the cascade settings modal |
FallKit.meshStart({seedName, onMessage}) | void | Activates BroadcastChannel mesh on fall-signal |
FallKit.meshPost(kind, payload) | bool | Broadcasts to other seeds on the channel |
FallKit.helpSection() | string (HTML) | Returns the standard help-section HTML to inject into your seed's Help tab |
FallKit.MODELS | object | Registry of available WebLLM models with size + label |
FallKit.PROVIDERS | object | Registry of T3 BYOK providers + their models |
Sovereignty doctrine
- T0 must always work — the kit never gates a seed's core feature behind AI.
aiCompletereturnsnull; callers fall back to non-AI logic. - API keys never proxied — direct fetch from the user's browser to the provider. Key stored only in
localStorage.fall-kit.config. Never logged, never sent to us. - Lazy-loaded WebLLM — model weights download only on explicit user opt-in. Kit itself is ~16 KB.
- BroadcastChannel mesh on
fall-signal— the canonical channel name across all estate seeds (consistent with fallnet). - Estate-first canonical — WebLLM pattern ported from botler. WebRTC channel from fallnet. Konomi 7-prime stack consistent. ◊·κ=1.
What ports cleanly
- Any seed already using single-HTML pattern with IndexedDB and an existing tab/nav
- Drop into the head
<script>, callFallKit.init()on boot, wireaiCompleteinto your assist features - Help tab? Add
helpEl.innerHTML += FallKit.helpSection()— consistent across the estate
◊ Fall Kit v1.2.0 · MIT · github.com/sjgant80-hub/fall-kit · part of the AI Native Solutions estate · ◊·κ=1