Skip to content
Promptfoo → EvalGuard

Migrate from Promptfoo in an afternoon. 

Your Promptfoo YAML imports in one command. You get 300+ red-team plugins, 200+ scorers, and the same CLI ergonomics — plus firewall, gateway, observability, and FinOps in the same platform. One bill. Zero stitching.

SOC 2 evidence engineISO 42001 mappedEU AI ActGDPR
Why move now

Three reasons the calculus changed

Provider breadth

Test every model you ship on, from one config

Jailbreaks, prompt injection and policy violations behave differently on every model, so the same suite has to run everywhere you deploy. EvalGuard reaches 90+ providers from one config — no per-vendor rewrite.

Attack depth

300+ attack plugins

Every OWASP LLM Top 10 category plus indirect prompt injection, data exfiltration, multi-turn jailbreaks, PII leakage, policy violations, and many more. Plus 100+ adversarial strategies and 439 DLP patterns.

For scale: Promptfoo's public red-team plugin registry held 155 plugins when we counted it from their source at commit db03327, re-verified 2026-08-10.

One platform

Eval + firewall + gateway + observability + FinOps — same workspace

Promptfoo does eval and red team well, and ships its own OpenTelemetry tracing. What EvalGuard puts next to it is the runtime tier — a first-party firewall on the request path, a BYOK gateway, and cost attribution — behind one auth, one bill, one SLA.

Promptfoo claims on this page were verified against their source github.com/promptfoo/promptfoo @ db03327 — on 2026-08-10. “Doesn’t ship a gateway” was checked against that tree: their two gateway files are provider clients for Cloudflare AI Gateway and MLflow, not a gateway of their own. Capabilities move; check their current docs before you decide.

Config mapping

Your promptfoo.yaml maps over cleanly

Most fields need no rename, and the standard assert types are mapped to EvalGuard scorers automatically. The fields that differ are listed below — only the two arbitrary-code assertion types (javascript, python) need manual handling.

PromptfooEvalGuardNotes
providers: [openai:gpt-4o]model: gpt-4oProvider auto-detected from model prefix.
prompts: [...]prompt: "{{input}}"Inline prompt template; {{input}} interpolation supported.
tests: [...]cases: [...]Same shape: { input, expectedOutput, metadata }.
assert: [{type: contains, value: 'X'}]scorers: ["contains"]Simple string array. 200+ built-in scorers; contains / regex-match / semantic-similarity / etc.
assert: [{type: llm-rubric}]scorers: ["llm-grader"]Assertion-type names are mapped automatically (is-json → json-valid, model-graded-closedqa → llm-grader, similar → semantic-similarity).
assert: [{type: bleu|rouge-n|webhook}]scorers: ["bleu" | "rouge-n" | "webhook"]All three are built-in EvalGuard scorers under the same names Promptfoo uses — no rename needed.
assert: [{type: javascript|python}]manual — see noteArbitrary code — no built-in scorer. eval:local skips these with a warning; write a custom scorer instead.
assert config via type+valuescorerOptions: { contains: { value: 'X' } }Per-scorer config is a separate object.
redteam: {plugins: [...]}`evalguard scan` commandRed team lives in a separate config for scans; same platform, separate flow.

CLI commands

Promptfoo CLIEvalGuard CLI
promptfoo evalevalguard eval
promptfoo eval --no-cacheevalguard eval:local
promptfoo viewevalguard view
promptfoo redteam runevalguard scan
promptfoo shareevalguard share
promptfoo initevalguard init
Migration

In four commands

  1. 1
    Install the CLI
    npm i -g @evalguard/cli
  2. 2
    Authenticate (optional — only for the cloud dashboard)
    evalguard login --key <your-eg_key>
  3. 3
    Import your Promptfoo config
    evalguard import:promptfoo promptfoo.yaml
  4. 4
    Run the eval locally (uses your provider key, no account needed)
    evalguard eval:local evalguard.config.json

eval:local runs on your machine with your own provider key (e.g. OPENAI_API_KEY) — no EvalGuard account needed. To run on the cloud instead (shared dashboards, run history), log in and use evalguard eval --project <id>.

Stuck on a Promptfoo feature that doesn't map cleanly? Tell us — we'll add the shim within a business day.

Keep the eval suite. Add everything around it.

Move in an afternoon. Free forever tier — 50K traces/month, unlimited projects, AI Gateway included.

Start free — no credit card