No description
Find a file
oiupoyt 4826b9c2b5 fix: remove the hardcoded OpenRouter key and always-true hasKey reporting
The key was committed to three backends behind `|| DEFAULT_KEY` fallbacks, which
also meant a misconfigured deploy silently billed the bundled key instead of
failing. It is now read from the environment only: /api/ask answers 503 and
/api/status reports hasKey:false when it is absent.

hasKey was unreachable-false as well, via `|| true` in the Pages function and
`|| DEFAULT_KEY` in the worker, so it could never signal a missing key.

All responses now go through a shared json() helper, so error paths carry the
same CORS headers and content type as success paths, and wrangler.json declares
the ASSETS binding the worker's static fallback already referenced.
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 feat: 3D hexagonal figure with roll-in-place animation and decisive Jev oracle prompting 2026-09-19 20:40:54 +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