Skip to content
GATERAGEPublic

About

ragebar — the search bar that rages while it retrieves. Zero-dependency live retrieval surface for RAGE.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

30 Commits

Folders and files

Repository files navigation

ragebar

The search bar that rages while it retrieves.

Zero dependencies. No build step. No framework. Attach it to any <input> and that input becomes a live retrieval surface: results as you type, and a meter driven by the search itself.

The rage is not decoration — it is a readout of retrieval:

signal what drives it
meter climbs your typing speed, while you are still asking
meter surges how many results the corpus actually returned
meter goes red the corpus returned nothing — "nothing. the engine is furious."

Live on every page of rage.pythai.net — press the magnifier, top right.


Where RAGE actually lives

Retrieval Augmented Generation is a pattern. RAGE — the Retrieval Augmented Generative Engine — is the engine that runs it, and the most innovative deployment of it is not in this repository or any other single one. It is inside mindX, in the pgvectorscale store.

That deployment is worth stating precisely, because the numbers are measured rather than claimed:

  • pgvectorscale 0.9.0 on PostgreSQL, with a StreamingDiskANN index over the cosine space — approximate nearest-neighbour search that stays fast as the corpus grows, which is the operation everything else depends on.
  • 48,472 embedded chunks across ~40,000 documents, embedded with bge-m3 at 1024 dimensions through local Ollama — no embedding provider, no per-token bill, and no third party sees the corpus.
  • Retrieval that excludes gated material in SQL, not after the fact. Filter afterwards and private chunks still consume slots inside the top-k, silently displacing the public results that should have been returned. Nothing leaks, but the answer quietly gets worse and nothing logs it.
  • The numbers and the meanings live in separate databases on one cluster: an append-heavy relational store for prices and time series, pgvectorscale for what those numbers mean. A price wants exactness; a chain wants proximity. (the long version)

A version of the engine also runs the board at deltaverse.pythai.net/chainmarketcap.html, where retrieval is the whole product: 2,510 chains reconciled across CoinGecko, CoinMarketCap, chainid.network and the RPC endpoints themselves, with each source allowed to disagree in the open rather than being averaged into a single confident number. Its own documentation is embedded back into the pgvectorscale store, so the board is both a retrieval surface and part of the corpus.

The ragebar is the smallest possible front door to that idea: retrieval first, generation second. That is what the R and the G in RAGE are for.


The GATERAGE lineage

gaterage is the ragegate — the way in. The org carries three kinds of repository, and they should not be read as equals:

The engine and its variants — RAGE (the engine itself, GPL-3.0) · deeprage (multi-model MVP, local + API) · deepragetemplate (the template others start from) · DeepSeekRAGE (DeepSeek + streaming) · ragemini2 (Gemini) · RAGEmini

The cognitive corners — aGLM, the Autonomous General Learning Model, extrapolated from automindx · mastermind, strategic orchestration, directive → plan → execute · neuralnet, RAGE integrated with a mini production transformer · RAGEnet · drage, dynamic self-prompting from agency.txt

The surfaces — rageminibar (modular Streamlit menus) · RAGE-ui · and this repository.

The rest of the org is forks, and they are honest about what they are: study material. Of 73 repositories, 13 are original and another 17 are forked within our own orgs (pythaiml, augml, DeltaVML, UIUXt) — so GitHub's fork badge undercounts the work considerably. The remaining 43 are external.

The clearest map of how this came to be is github.com/professor-codephreak; the narrative is told properly in the articles on rage.pythai.net.


Use it

<link rel="stylesheet" href="src/ragebar.css">
<input id="q" class="ragebar-input" type="search" placeholder="search...">
<script src="src/ragebar.js"></script>
<script>Ragebar.attach(document.getElementById('q'));</script>

Corpus-agnostic — the WordPress REST search API is only the default:

Ragebar.attach(input, {
  endpoint: '/my/search?q=',                 // ? or & terminated
  parse:    (json) => json.hits.map(h => ({ title: h.name, url: h.href })),
  total:    (headers) => headers.get('X-Total-Count'),
  minChars: 2, debounce: 260
});

Ragebar.attach() returns { input, search, el }, or null if that input was already attached.

WordPress

wordpress/ragebar-widget.html is the deployed drop-in: paste it into a Custom HTML widget in any always-rendered sidebar and it upgrades the theme's existing header search in place.

Two traps, learned the hard way:

  • wpautop destroys <script> in post/page content. Blank lines inside a script become </p><p> — a syntax error — and HTML inside JS strings gets rewritten. Custom HTML widgets are not filtered this way. That is why the library builds every node with createElement and never with innerHTML.
  • POST /wp/v2/widgets ignores the sidebar field, leaving the widget in wp_inactive_widgets. Assign it with POST /wp/v2/sidebars/<id> — which blanks the content — then write the content again. Three calls, in that order.

Watch a model: ragewatch

The same meter, pointed at a leaderboard instead of a corpus. It follows MiMo-V2.6-Pro, at the time of writing the top open-weight model on BenchLM.ai (75.5/100, #11 of 208 overall). It also follows two repos on the Hub: XiaomiMiMo/MiMo-V2.6-Pro-RL and a pointer fork, Gregory-L/MiMo-V2.6-Pro-RL, which carries the config, code and tokenizer at a pinned upstream commit, without the ~600 GB of weights.

signal what drives it
meter width the BenchLM score out of 100, with its 90% interval shaded behind it
card surges the snapshot moved since this viewer last looked
card goes red the last move was a loss (score down, rank number up), or a watched repo is missing from the Hub

It comes in two parts, because benchlm.ai publishes its rankings as open JSON but sends no CORS headers, so a browser cannot read them from another origin:

  • tools/benchwatch.mjs (Node 18+, zero dependencies) reads benchlm.ai/data/models.json with If-None-Match and the Hub API, then writes data/benchwatch.json plus one line per moved field to data/benchwatch-history.jsonl. When nothing moved it writes nothing. .github/workflows/benchwatch.yml runs it every six hours and commits only when something changed.
  • src/ragewatch.js renders the snapshot. By default it reads the committed copy from raw.githubusercontent.com, which serves it with CORS open.
<link rel="stylesheet" href="src/ragebar.css">
<div id="watch"></div>
<script src="src/ragewatch.js"></script>
<script>Ragebar.watch(document.getElementById('watch'), { slug: 'mimo-v2-6-pro' });</script>

To follow another model, add it to benchwatch.json. The benchlm value is the slug from the model's URL on benchlm.ai, and hf lists any repos to track with it. watch.html is the demo.

The BenchLM data is CC BY-NC 4.0, not Apache-2.0: non-commercial use with the credit Data from BenchLM.ai and a link. The card prints that credit, and data/README.md says the same.

Design notes

  • 30fps cap, requestAnimationFrame, rage decays — the canvas is cheap and idles at nothing.
  • Stale answers lose. Every search takes a sequence number and aborts the previous request; a slow reply for an old query can never overwrite a fast one.
  • prefers-reduced-motion removes the canvas entirely; the bar stays fully functional.
  • Accessible: role="status" + aria-live="polite" on the readout, the canvas is aria-hidden, results are real links.

Licence

Apache-2.0.

About

ragebar — the search bar that rages while it retrieves. Zero-dependency live retrieval surface for RAGE.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages