Jev
Call TypeSafe's decision model through an HTTP integration
Shelley handles the setup.
Prefer a terminal?
curl -fsSL https://exe.dev/deploy/jev/prompt.txt | ssh exe.dev new --prompt=/dev/stdinJev is TypeSafe's model for making structured decisions from text. You send state and typed questions, and Jev returns values your code can use directly.
Create an HTTP proxy integration so the API key stays outside your VM. Get a key from the TypeSafe dashboard, export it in your local shell, and attach the integration to your VM:
printf '%s' "$TYPESAFE_API_KEY" | \
ssh exe.dev integrations add http-proxy \
--name typesafe \
--target https://api.typesafe.ai \
--bearer=- \
--attach vm:my-jev
From the attached VM, call the integration hostname instead of
api.typesafe.ai. The proxy adds the bearer token before forwarding the
request:
curl --fail-with-body https://typesafe.int.exe.xyz/v1/systemone \
--json '{
"state": "My payout has been delayed for three days. Please help ASAP.",
"model": "jev-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this message express urgency?"
}
}
}'
The response contains an answers.is_urgent.noul value between 0 and 1.
See TypeSafe's API reference for Choice, Score,
and Noul questions.
What you get#
- The
typesafeHTTP proxy integration attached to your VM, so the API key stays outside it - A Jev call from the VM through
https://typesafe.int.exe.xyz - An
answers.is_urgent.noulvalue between0and1from the example request
What's running, and where
https://typesafe.int.exe.xyz/
Jev, from the attached VM, with the bearer token added for you
https://api.typesafe.ai
Deploy with Shelley#
Click Deploy and Shelley will set up Jev on a new VM, then check that it works. No config-file wrangling required.
Prefer a terminal?
curl -fsSL \
https://exe.dev/deploy/jev/prompt.txt \
| ssh exe.dev new --prompt=/dev/stdinWhat Shelley is told
Set up Jev on this VM by following the exe.dev recipe at https://exe.dev/deploy/jev.md from top to bottom.
The recipe's example VM name is my-jev. This VM's name is the output of `hostname`: use it wherever the recipe writes my-jev. Skip the step that creates the VM; you are on it.
You are done when all of these are true. Check each one yourself:
- The `typesafe` HTTP proxy integration attached to your VM, so the API key stays outside it
- A Jev call from the VM through `https://typesafe.int.exe.xyz`
- An `answers.is_urgent.noul` value between `0` and `1` from the example request
Only I can create the integration, from my own computer, and the API key
must never be on this VM. Give me the `integrations add` command first,
with this VM's name in it, and wait until I say I've run it. Then make
the example call.
Finish with the URLs I should open.
Also at /deploy/jev/prompt.txt. The recipe it follows is /deploy/jev.md.
Updated Oct 17, 2026 · Markdown · manifest.json · Something wrong? Tell us