Skip to content

What Evalwright is

Evalwright versions your LLM prompts and lets you settle, with measurements rather than opinion, which version is the best one to run. You edit and benchmark prompts in the app; your backend then asks the SDK for whichever version you promoted to production, and runs it with your own model.

What the SDK does, and what it does not

prompts.resolve() returns the fully resolved prompt text: the production version of the prompt you named, with every {{variable}} substituted from the values you passed.

That is the whole of it. Evalwright never calls an LLM on this path — it does not touch your provider, your keys or your tokens, and it cannot add latency you did not ask for. You take the text it returns and run it with your own model.

The practical consequence is the one worth having: editing a prompt in the app and promoting a new version changes what your production traffic runs, with no deploy on your side.

Install

bash
npm install @evalwright/sdk

Requires Node 18 or newer — the SDK uses the platform's own fetch and ships no runtime dependencies of its own.

Ten lines

ts
import { EvalwrightClient } from "@evalwright/sdk";

const client = new EvalwrightClient({
  apiKey: process.env.EVALWRIGHT_API_KEY!,
  baseUrl: process.env.EVALWRIGHT_BASE_URL!,
});

const { prompt } = await client.prompts.resolve("support-reply", {
  vars: { customerName: "Ada", tone: "warm" },
});

const reply = await myModel.complete(prompt); // your provider, your keys

Next: Quick start walks the same path from an empty account.

Released under the MIT licence.