Configure Jev
This guide shows how to turn Jev on or off for a project, and how to set the key that Jev needs. Read Understanding Jev first if you want the full picture. The data rules are in the Privacy Policy.
What Jev is and what it sends
Jev is a remote service. It answers bounded questions about a decision. For example, it can choose the candidate that fits a stated need, or score an artifact against a rubric.
A Jev call sends:
- a short state, which is a redacted description of the decision;
- one or more typed questions.
Jev returns a structured answer. It does not write code, run commands, or decide a delivery.
Jev never receives:
- credentials or secrets;
- personal data;
- private findings;
- logs that contain secrets;
- whole repositories.
Jev is external processing, not telemetry. nWave sends no usage data.
Jev is on by default
When a project has no jev setting, Jev is on. Each project can change this
with the jev key in its own .nwave/config.json:
{
"jev": "authorized"
}
Use "jev": "unauthorized" to turn Jev off for that project. Use
"jev": "authorized" to turn it on again.
Two other places can set jev. The order is:
| Order | Where | Effect |
|---|---|---|
| 1, highest | --jev flag on one call |
Refuses Jev for that call when set to unauthorized |
| 2 | .nwave/config.json in the project |
The project value |
| 3 | ~/.nwave/config.json on your machine |
The value for projects that declare none |
| 4, default | none set | Jev is on |
On a terminal, nwave-ai install and nwave-ai project enable ask whether
Jev may be used in the project. An empty answer keeps the machine-wide value.
Without a terminal, the command writes the default and says so.
Set the key
Jev also needs the TYPESAFE_API_KEY environment variable. The variable holds
your key. Without the key, Jev cannot answer, and nothing is sent.
The key comes from your Jev provider. nWave does not issue, store or log keys.
nWave only checks that the variable is set. The key value is sent only in the request header to Jev.
The default endpoint is https://api.typesafe.ai/v1/systemone. You can change
the endpoint with TYPESAFE_BASE_URL. That variable changes the endpoint
only. It does not set the key.
Replace <your key> with your own key in each command below. Never paste a
real key into a file that you share.
bash or zsh
For this terminal session:
export TYPESAFE_API_KEY='<your key>'
To keep the key, add that line to ~/.bashrc or ~/.zshrc. Then open a new terminal.
fish
For this terminal session:
set -x TYPESAFE_API_KEY '<your key>'
To keep the key:
set -Ux TYPESAFE_API_KEY '<your key>'
PowerShell
For this terminal session:
$env:TYPESAFE_API_KEY = '<your key>'
To keep the key:
[Environment]::SetEnvironmentVariable('TYPESAFE_API_KEY','<your key>','User')
The persistent command applies to new terminal windows only. Open a new window after you run it.
Windows cmd
For this terminal session:
set "TYPESAFE_API_KEY=<your key>"
To keep the key:
setx TYPESAFE_API_KEY "<your key>"
setx applies to new terminal windows only. It does not change the window
where you ran it. Open a new window after you run it.
Start your coding host from that shell
A coding host reads the variable when it starts. Start the host from the same shell where you set the key. A host that was already running does not see a new value. Start it again.
A tool kernel, such as a Python eval kernel, may not inherit the session environment. Run the Jev client from a shell command instead.
Check the setup
Run:
nwave-ai status
Look at the Jev line:
Jev: authorized (project .nwave/config.json) | key: setmeans Jev is on for the project and the variable is visible. This is the working state.key: MISSINGmeans the variable is not visible in this shell. Set it again, then start your host from that shell.Jev: unauthorizedmeans Jev is turned off for the project. No key is needed.
nwave-ai status never prints the key value.
What the warning means
When Jev is on but the key is missing, nWave prints this warning during
nwave-ai install, nwave-ai project enable and nwave-ai status:
WHAT: Jev is on for this project but TYPESAFE_API_KEY is not set in this process; Jev questions are skipped and nWave continues without Jev.
The warning does not stop the command. It does not change the exit code. Nothing is sent to Jev while the key is missing.
When you build a role bundle with nwdes prompt, nWave adds one short line,
jev_access:, that names the missing key. That line appears only when Jev is on
and the key is missing.
If you do not want Jev, turn it off for the project. You do not need to set a key.
Turn Jev off for one project
Set the project value in .nwave/config.json:
{
"jev": "unauthorized"
}
Nothing is sent to Jev in that project. Other projects keep their own setting.
To refuse Jev for one call only, pass --jev unauthorized on that call.
Without the key
When the key is not set, nothing is sent. Each role records
typesafe: unavailable and continues its work locally. No judgment is
invented, and no step waits for Jev.