No description
Find a file
oiupoyt 889b3f153f fix(ui): label the offline fallback instead of faking calibrated telemetry
A failed upstream call returned HTTP 200 with a hash-derived answer that the UI
rendered with the same P(FAVORABLE) and CONFIDENCE figures as a real decision.
The fallback is now badged OFFLINE with those derived numbers blanked out.

Request errors also rendered "SIGNS POINT TO YES" and always reported a network
timeout. Failures now show CANNOT PREDICT and the real HTTP status or backend
message, and the stored history is validated before use so a malformed value
cannot break the whole interface.
2026-09-20 01:47:51 +05:30
functions/api fix: remove the hardcoded OpenRouter key and always-true hasKey reporting 2026-09-20 01:47:51 +05:30
public fix(ui): label the offline fallback instead of faking calibrated telemetry 2026-09-20 01:47:51 +05:30
.env.example initial commit: jev8ball minimalist neural oracle 2026-09-19 20:10:58 +05:30
.gitignore initial commit: jev8ball minimalist neural oracle 2026-09-19 20:10:58 +05:30
package-lock.json initial commit: jev8ball minimalist neural oracle 2026-09-19 20:10:58 +05:30
package.json initial commit: jev8ball minimalist neural oracle 2026-09-19 20:10:58 +05:30
README.md fix: remove the hardcoded OpenRouter key and always-true hasKey reporting 2026-09-20 01:47:51 +05:30
server.js fix: remove the hardcoded OpenRouter key and always-true hasKey reporting 2026-09-20 01:47:51 +05:30
worker.mjs fix: remove the hardcoded OpenRouter key and always-true hasKey reporting 2026-09-20 01:47:51 +05:30
wrangler.json fix: remove the hardcoded OpenRouter key and always-true hasKey reporting 2026-09-20 01:47:51 +05:30

jev8ball

a minimalist Magic 8-Ball oracle powered by TypeSafe Jev structured decision intelligence on OpenRouter.

features

  • minimal dark brutalist interface with ambient floating particles
  • 3D interactive floating icosahedron die inside fluid viewport with mouse parallax
  • realistic shake & liquid surfacing animations with procedural audio chimes
  • powered by non-autoregressive typesafe/jev-1.13 decisions API (calibrated noul probabilities, structured sentiment, zero hallucination)
  • live decision telemetry: calibrated probability, confidence score, token cost, and latency
  • query history log with instant clipboard copy
  • fast sub-second responses (~300ms) with lightweight token footprint

usage

# install dependencies
npm install

# start server
npm start

Runs by default on http://localhost:3000.

configuration

Configure your OpenRouter API key in .env:

PORT=3000
OPENROUTER_API_KEY=sk-or-v1-...

The key is required — there is no bundled fallback. Without it POST /api/ask answers 503 and GET /api/status reports "hasKey": false. For Cloudflare, store it as a secret instead of a plain variable:

wrangler secret put OPENROUTER_API_KEY

endpoints

  • GET /api/status - model status and whether the API key is configured
  • POST /api/ask - submit query to Jev decisions pipeline

tests

npm test

license

MIT