jevchat ๐ฎ
September 18, 2026 ยท View on GitHub
A ChatGPT-style chat UI for Jev, TypeSafe AI's System One model that never generates text โ it only decides.
By default Jev answers Yes or No. You can switch to other answer styles (Yes/No/Maybe, Mom, Pirate, Tabloid headlines, โฆ) or create your own custom set of answers for Jev to choose from.
Features
- ChatGPT-like UI: sidebar with chat history, main chat area
- Answer styles built on Jev's calibrated probabilities (
noul) andchoicequestions - Custom answer styles (stored locally)
- Chat titles extracted from your question by Jev itself (
choiceover question fragments, segmented withIntl.Segmenterso Japanese works too), with playful fallbacks when Jev isn't confident - English / Japanese UI, defaulting to the browser's language preference
- History kept in
localStorage(max 10 chats โ it's a demo) - Styling: Tailwind CSS + Basecoat UI, dark mode included
Running locally
Requires Deno 2.x and a TypeSafe AI API key.
JEV_KEY=your-api-key deno task start
# โ http://localhost:8000
Deploying to Deno Deploy
The entrypoint is main.ts. Set the JEV_KEY environment variable in your Deno
Deploy project settings.
deno deploy
How it talks to Jev
The server proxies POST /api/chat to
POST https://api.typesafe.ai/v1/systemone (the API key never reaches the
browser):
- Every answer style (built-in and custom) sends a
choicequestion whose criteria are the style's answers, so Jev itself picks which answer to give โ there is no client-side probability mapping. The collapsed "details" toggle under each reply shows Jev's calibrated probability for every option. - Remix styles (Daily fortune, Politician, Tabloid) go one step further: the
server splits the question into fragments (the same
Intl.Segmentermachinery as chat titles), crosses them with verdict templates like"ใๆฒๅ ฑใ{}ใใใท", and Jev picks one fully composed answer โ deciding the verdict and which fragment is the topic in a singlechoicequestion. - On the first message of a chat, a second
choicequestion asks Jev to pick the question fragment that best captures the topic, which becomes the chat title.