Big-Banana-Studios/clear-ground

A helpful offline capable assistant to provide clarity

0

stars

1

commits

JavaScript

primary language

Aug 14, 2026

updated

README

☀️ Clear Ground

Clarity for everyday life.

A browser app that helps you understand complex information, think through decisions, organise overwhelming tasks, and reset when life gets to be too much. Nine tabs, each doing one thing.

The third app in the Lewis family suite, alongside Writer's Flow (writing) and Steady Ground (kids' learning). Same philosophy: a thinking partner, not a replacement for your own brain.


The important part: nothing you type leaves your device

The model runs on your computer or phone, inside the browser, using WebGPU. There is no server, no account, and no API call. What you paste into Clear Ground — the medical letter, the lease, the thing you're dreading saying — never travels anywhere, because there is nowhere for it to go.

Four small settings are remembered between visits (whether you've seen the welcome, your theme, your text size, and whether the model is already downloaded). Nothing you write is among them. Everything you type lives in memory and is gone when you close the tab.


Running it

Double-click start.bat. That's the whole thing. It starts a small local server, opens Chrome for you, and prints the address in case you need it:

http://localhost:8765/

Leave the black window open while you're using the app. To stop, close that window.

If Node.js isn't installed it falls back to Python, and if neither is there it tells you where to get Node and what to click. Port 8765 is deliberate — 8000 is what local AI servers like LM Studio use, and sharing it causes clashes.

Doing it by hand instead
cd clear-ground
node serve.js          # or: python -m http.server 8765

Clear Ground cannot be opened by double-clicking index.html. It uses ES modules, a web worker and a service worker, and browsers block all three over a file:// path — you'd get a blank page. It has to be served over HTTP, which is all start.bat is for.

The first visit downloads the model (~811 MB) from the Hugging Face CDN. That happens once — after that it's cached on the device and the app works with no internet connection at all. Use wifi.

Requirements

  • Chrome or Edge, reasonably recent. Firefox and Safari don't have WebGPU enabled by default yet.
  • A device with enough graphics memory to hold a 1.2B model. Most computers from the last few years are fine; older phones may load the model and then run out of room mid-answer, which the app detects and explains.

Deploying

Push to a GitHub Pages repo and it works as-is. The .nojekyll file matters — without it, Pages ignores some files. No model weights are committed (see .gitignore); they're fetched from Hugging Face at runtime.


The nine tabs

TabWhat it does
📋Break It DownComplex text → plain language
📖What Does This Mean?A word or abbreviation → a clear explanation
🎯What's The Point?Something long → just the key takeaways
🪜Step By StepAn overwhelming task → small, doable steps
🔄Another AngleSomething that didn't click → three other explanations
🧠What Am I Missing?Your thinking → the angles you haven't considered
💬Help Me Say ThisA hard conversation → the actual words
⚖️Weigh My OptionsA decision → the options laid out with tradeoffs
🌊ResetA minute to breathe. Works with an empty box.

Files

FileWhat's in it
index.htmlPage structure — sidebar, panel, welcome cards, loading gate
style.cssThe dawn/clarity theme, night mode, print and reduced-motion rules
app.jsTabs, per-tab state, markdown rendering, everything on screen
prompts.jsAll nine tab definitions and their system prompts
safety.jsInput and output filters, crisis handling, the storage-key list
worker.jsRuns the model off the main thread, so the page never freezes
sw.jsCaches the app shell so it opens offline
start.batDouble-click to run it locally
serve.jsThe little server start.bat uses. Not part of the app.

Two notes worth knowing before editing:

  • The safety preamble is not in prompts.js. safety.js prepends it at send time, so a tab added later can't accidentally ship without it.

  • The filters in safety.js are deliberately narrow, and there are comments explaining each choice. A lease that says "act as trustee", or a policy with a suicide clause, is exactly the kind of document this app exists to untangle — refusing to help with it would be a worse failure than any prompt injection could cause on a local model with no tools.

  • cleanOutput() in safety.js removes three things from every answer. False claims of support ("there are people and resources here who care about you" — there are not; it is a program on a laptop) are removed without exception. Unanswerable questions and offers ("Would you like me to…", "Let me know") are removed too, because each tab is one turn and there is no reply box, so they read as the app ignoring you. Reflective questions are kept on purpose — "Which option would you regret NOT trying?" is the whole point of Weigh My Options. The line is whether the question expects an answer to come back here. Structural debris goes last — empty list items (- ") left behind when the model runs out of things to say mid-list, and headings with nothing under them.


Model

LiquidAI/LFM2.5-1.2B-Instruct-ONNX, Q4 quantised, via @huggingface/transformers on WebGPU.

It's a small model, and it is kept close to the user's own words on purpose — reorganising, restating and reframing rather than generating new facts. That framing is the main defence against it making things up.


Version

v1.0.2 · Aug 2026

Shown in the sidebar footer. If it ever reads "reload to update", the page and its cached service worker disagree — reload once more and it'll clear.


This app simplifies and clarifies. It does not replace a lawyer, a doctor, or a financial advisor, and it says so where it matters.

Contributors

Lilrobodue

1 commits

Big-Banana-Studios/clear-ground

A helpful offline capable assistant to provide clarity

0

stars

1

commits

JavaScript

primary language

Aug 14, 2026

updated

README

☀️ Clear Ground

Clarity for everyday life.

A browser app that helps you understand complex information, think through decisions, organise overwhelming tasks, and reset when life gets to be too much. Nine tabs, each doing one thing.

The third app in the Lewis family suite, alongside Writer's Flow (writing) and Steady Ground (kids' learning). Same philosophy: a thinking partner, not a replacement for your own brain.


The important part: nothing you type leaves your device

The model runs on your computer or phone, inside the browser, using WebGPU. There is no server, no account, and no API call. What you paste into Clear Ground — the medical letter, the lease, the thing you're dreading saying — never travels anywhere, because there is nowhere for it to go.

Four small settings are remembered between visits (whether you've seen the welcome, your theme, your text size, and whether the model is already downloaded). Nothing you write is among them. Everything you type lives in memory and is gone when you close the tab.


Running it

Double-click start.bat. That's the whole thing. It starts a small local server, opens Chrome for you, and prints the address in case you need it:

http://localhost:8765/

Leave the black window open while you're using the app. To stop, close that window.

If Node.js isn't installed it falls back to Python, and if neither is there it tells you where to get Node and what to click. Port 8765 is deliberate — 8000 is what local AI servers like LM Studio use, and sharing it causes clashes.

Doing it by hand instead
cd clear-ground
node serve.js          # or: python -m http.server 8765

Clear Ground cannot be opened by double-clicking index.html. It uses ES modules, a web worker and a service worker, and browsers block all three over a file:// path — you'd get a blank page. It has to be served over HTTP, which is all start.bat is for.

The first visit downloads the model (~811 MB) from the Hugging Face CDN. That happens once — after that it's cached on the device and the app works with no internet connection at all. Use wifi.

Requirements

  • Chrome or Edge, reasonably recent. Firefox and Safari don't have WebGPU enabled by default yet.
  • A device with enough graphics memory to hold a 1.2B model. Most computers from the last few years are fine; older phones may load the model and then run out of room mid-answer, which the app detects and explains.

Deploying

Push to a GitHub Pages repo and it works as-is. The .nojekyll file matters — without it, Pages ignores some files. No model weights are committed (see .gitignore); they're fetched from Hugging Face at runtime.


The nine tabs

TabWhat it does
📋Break It DownComplex text → plain language
📖What Does This Mean?A word or abbreviation → a clear explanation
🎯What's The Point?Something long → just the key takeaways
🪜Step By StepAn overwhelming task → small, doable steps
🔄Another AngleSomething that didn't click → three other explanations
🧠What Am I Missing?Your thinking → the angles you haven't considered
💬Help Me Say ThisA hard conversation → the actual words
⚖️Weigh My OptionsA decision → the options laid out with tradeoffs
🌊ResetA minute to breathe. Works with an empty box.

Files

FileWhat's in it
index.htmlPage structure — sidebar, panel, welcome cards, loading gate
style.cssThe dawn/clarity theme, night mode, print and reduced-motion rules
app.jsTabs, per-tab state, markdown rendering, everything on screen
prompts.jsAll nine tab definitions and their system prompts
safety.jsInput and output filters, crisis handling, the storage-key list
worker.jsRuns the model off the main thread, so the page never freezes
sw.jsCaches the app shell so it opens offline
start.batDouble-click to run it locally
serve.jsThe little server start.bat uses. Not part of the app.

Two notes worth knowing before editing:

  • The safety preamble is not in prompts.js. safety.js prepends it at send time, so a tab added later can't accidentally ship without it.

  • The filters in safety.js are deliberately narrow, and there are comments explaining each choice. A lease that says "act as trustee", or a policy with a suicide clause, is exactly the kind of document this app exists to untangle — refusing to help with it would be a worse failure than any prompt injection could cause on a local model with no tools.

  • cleanOutput() in safety.js removes three things from every answer. False claims of support ("there are people and resources here who care about you" — there are not; it is a program on a laptop) are removed without exception. Unanswerable questions and offers ("Would you like me to…", "Let me know") are removed too, because each tab is one turn and there is no reply box, so they read as the app ignoring you. Reflective questions are kept on purpose — "Which option would you regret NOT trying?" is the whole point of Weigh My Options. The line is whether the question expects an answer to come back here. Structural debris goes last — empty list items (- ") left behind when the model runs out of things to say mid-list, and headings with nothing under them.


Model

LiquidAI/LFM2.5-1.2B-Instruct-ONNX, Q4 quantised, via @huggingface/transformers on WebGPU.

It's a small model, and it is kept close to the user's own words on purpose — reorganising, restating and reframing rather than generating new facts. That framing is the main defence against it making things up.


Version

v1.0.2 · Aug 2026

Shown in the sidebar footer. If it ever reads "reload to update", the page and its cached service worker disagree — reload once more and it'll clear.


This app simplifies and clarifies. It does not replace a lawyer, a doctor, or a financial advisor, and it says so where it matters.

Contributors

Lilrobodue

1 commits

Languages

JavaScript

73.1%

CSS

19.2%

HTML

6.6%

Batchfile

1.1%