Skip to content
Bev

Using Bev

Bev runs in your terminal and in your code. She asks Jev, gets the real answer in under a second, then takes her time. Requires Node 22 or later.

npx bev-ai "I was charged twice for my subscription"

Command line

Examples
npx bev-ai "Where is my package?"                    # support queues
npx bev-ai "Great news, I got promoted" -p vibe      # good news / bad news / neutral
npx bev-ai "Ship it?" -o "yes,no,after lunch"        # your own options
npx bev-ai "Where is my package?" -e bev             # 3 to 5 minutes of reasoning
npx bev-ai review "Per my last email..."             # 10-minute tone review
echo "Refund please" | npx bev-ai --json > out.json  # JSON on stdout

While Bev thinks, press r to rush her. Each rush adds 10 seconds. Bev does not appreciate being rushed.

FlagWhat it does
-o, --options <a,b,c>2 to 8 comma-separated options. Default: billing, shipping, technical, other.
-p, --preset <name>support (default) or vibe (good news, bad news, neutral).
-e, --effort <level>low (about 10s), medium (about 30s, default), high (about 90s), bev (3 to 5 minutes).
--jsonPrint the result as JSON on stdout. Bev's thinking still goes to stderr.
-q, --quietDo not print Bev's thinking. Bev still does it.
--garyLet Gary handle it. Gary covers Fridays, takes a third of the time, and has seen worse.

In your code

npm install bev-ai
import { classify } from "bev-ai";

const result = await classify(
  "My package never arrived",
  ["billing", "shipping", "technical", "other"],
  { effort: "low", onThought: (t) => console.log(t.text) },
);

result.choice;         // "shipping", straight from Jev
result.probabilities;  // Jev's real probabilities
result.bevConfidence;  // 0.97, always
result.jevConfidence;  // what Jev actually thought
result.bevMs;          // how long Bev took
result.actualMs;       // how long Jev took

startClassify and startReview return { result, rush } so you can rush Bev from your own UI. Options can be an array of labels or an object of { label: description }. Pass signal to stop waiting. Errors are BevErrors, in Bev's voice.

Jev keys

Bring your own Jev key. Set one of these; the first one found wins. With none, Bev runs in mock mode and says so.

TYPESAFE_API_KEY
TypeSafe direct
AI_GATEWAY_API_KEY
Vercel AI Gateway (typesafe-ai/jev)
OPENROUTER_API_KEY
OpenRouter (typesafe/jev-1.13)

Your text only goes to the backend you configured. Bev stores nothing. Bev has a filing cabinet, but your ticket is not in it.

POST /fax deprecated

The fax endpoint has been retired. Bev is still upset about it. Existing faxes will be answered in the order they were received, which is to say eventually.

The real decision comes from Jev by TypeSafe AI, which has actual docs and an actual API. If you need the answer quickly, use Jev directly. Bev will understand.