Test your prompts, agents, and RAGs. Red teaming/pentesting/vulnerability scanning for AI. Compare performance of GPT, Claude, Gemini, Llama, and more. Simple declarative configs with command line and CI/CD integration. https://promptfoo.dev
  • TypeScript 96.4%
  • CSS 2%
  • JavaScript 1.3%
  • Python 0.2%
Find a file
renovate[bot] 24346d2f63
chore(deps): update vitest to v4.1.5 (#8869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael D'Angelo <mdangelo@openai.com>
2026-04-23 09:58:59 -04:00
.agents feat: add promptfoo codex skills (#8790) 2026-04-19 08:15:40 -07:00
.claude feat: add block-no-verify PreToolUse hook to .claude/settings.json (#8234) 2026-03-19 17:41:36 -07:00
.claude-plugin fix(skill): correct plugin structure, transform syntax, and provider format (#7986) 2026-03-04 20:24:40 -05:00
.cursor chore(deps): remove unused ts-node dependency (#6731) 2025-12-17 00:06:12 -08:00
.devcontainer chore(deps): update mcr.microsoft.com/vscode/devcontainers/typescript-node docker tag to v24 (#7059) 2026-01-14 10:26:05 -08:00
.github chore(deps): update vitest to v4.1.5 (#8869) 2026-04-23 09:58:59 -04:00
.husky fix: switch git hook install to husky prepare flow (#7726) 2026-02-17 15:12:01 -05:00
.vscode chore: update CODEOWNERS handles and VS Code association (#8299) 2026-03-24 09:28:00 -07:00
code-scan-action docs: improve agent workflow instructions (#8816) 2026-04-20 14:38:28 -04:00
docs docs: improve agent workflow instructions (#8816) 2026-04-20 14:38:28 -04:00
drizzle feat(app): add media library page (#6901) 2026-03-03 13:52:20 -05:00
examples fix(deps): update dependency uuid to v14 [security] (#8864) 2026-04-23 00:08:58 -04:00
helm/chart/promptfoo fix(helm): correct Docker registry domain from fghcr.io to ghcr.io (#7056) 2026-01-14 09:07:06 -08:00
plugins feat: add promptfoo codex skills (#8790) 2026-04-19 08:15:40 -07:00
scripts feat(eval): support inline function transforms via Node.js package (#8441) 2026-04-17 07:15:19 -07:00
site docs(site): expand custom plugin guide (#8847) 2026-04-23 00:51:30 -04:00
src docs(site): expand custom plugin guide (#8847) 2026-04-23 00:51:30 -04:00
test docs(site): expand custom plugin guide (#8847) 2026-04-23 00:51:30 -04:00
tools/biome test: isolate env mutations in root tests (#8789) 2026-04-18 00:41:57 -07:00
.biomeignore chore(providers): remove adaline gateway provider (#6999) 2026-01-10 03:51:02 -05:00
.dockerignore feat: Migrate NextUI to a React App (#1637) 2024-09-16 21:38:27 -06:00
.git-blame-ignore-revs chore(biome): run linter (#6761) 2025-12-18 09:29:32 -08:00
.gitignore test: add vitest coverage configuration for all test suites (#7154) 2026-01-26 12:07:07 -08:00
.mailmap chore: add mailmap aliases for public handles (#8458) 2026-04-02 14:46:58 -07:00
.npmignore docs: Merge docs into main repo (#317) 2023-11-30 11:23:35 -08:00
.npmrc chore(deps): set npm minimum release age (#8393) 2026-03-31 16:17:50 -07:00
.nvmrc chore(deps): update node.js to v24.15.0 (#8759) 2026-04-16 01:32:52 -07:00
.prettierignore test: add vitest coverage configuration for all test suites (#7154) 2026-01-26 12:07:07 -08:00
.prettierrc.yaml chore: migrate from ESLint + Prettier to Biome (#4903) 2025-07-13 00:11:30 -04:00
.release-please-manifest.json chore(main): release 0.121.7 (#8840) 2026-04-22 11:33:27 -04:00
.rubocop.yml feat: Add ruby provider (#5902) 2025-10-13 09:21:41 -07:00
.ruff.toml feat: Claude Agent SDK provider support (#5509) 2025-10-13 10:19:57 -07:00
AGENTS.md docs: improve agent workflow instructions (#8816) 2026-04-20 14:38:28 -04:00
biome.jsonc chore(deps): update dependency @biomejs/biome to v2.4.12 (#8807) 2026-04-19 19:06:07 -07:00
CHANGELOG.md chore(main): release 0.121.7 (#8840) 2026-04-22 11:33:27 -04:00
CITATION.cff docs: add faizan as a contributor in citation file (#6879) 2025-12-29 19:29:27 -05:00
CLAUDE.md chore: consolidate agent instruction files using AGENTS.md standard (#6398) 2025-11-28 19:23:19 -05:00
CODE_OF_CONDUCT.md docs: add Contributor Covenant 3.0 Code of Conduct (#7022) 2026-01-12 15:43:01 -08:00
codecov.yml test(site): report coverage to codecov 2026-04-11 00:20:08 -07:00
conductor-setup.sh chore: add conductor config (#5904) 2025-10-13 09:47:27 -07:00
conductor.json chore: add conductor config (#5904) 2025-10-13 09:47:27 -07:00
CONTRIBUTING.md chore: add minimumReleaseAge policy for npm dependencies (#6383) 2025-11-27 14:09:25 -05:00
Dockerfile chore(deps): update node.js to v24.14.1 (#8329) 2026-03-26 07:24:24 -07:00
drizzle.config.ts chore: migrate drizzle (#1922) 2024-10-17 14:22:42 -07:00
knip.json chore(deps): update dependency knip to v6 (#8676) 2026-04-12 20:29:16 -07:00
LICENSE chore: update year 2025-01-16 15:07:58 -08:00
package-lock.json chore(deps): update vitest to v4.1.5 (#8869) 2026-04-23 09:58:59 -04:00
package.json chore(deps): update dependency @openai/codex-sdk to ^0.123.0 (#8862) 2026-04-23 00:50:55 -04:00
pnpm-workspace.yaml chore(build): add pnpm support (#3307) 2025-03-06 11:19:37 -08:00
README.md docs(site): make company copy evergreen (#8396) 2026-03-31 14:39:57 -07:00
release-please-config.json ci(release): split release-please pull requests 2026-04-21 22:05:37 -04:00
renovate.json chore(deps): disable Chevrotain major updates (#8738) 2026-04-15 07:27:27 -07:00
SECURITY.md docs(site): clarify local artifact security scope (#8806) 2026-04-19 22:32:06 -04:00
tsconfig.json chore(deps): update dependency typescript to v6 (#8319) 2026-03-25 23:19:27 -07:00
tsdown.config.ts fix(cli): enforce exact Node engine range (#8380) 2026-03-30 23:05:34 -07:00
vitest.config.ts test: reduce test output noise 2026-04-11 00:30:38 -07:00
vitest.integration.config.ts test(tests): reduce backend vitest overhead (#8488) 2026-04-06 09:31:17 -07:00
vitest.setup.ts fix(code-scan): resolve code scanning findings (#8792) 2026-04-18 07:35:26 -07:00
vitest.smoke.config.ts test: add CLI and library smoke tests (#6669) 2025-12-29 20:45:53 -05:00

Promptfoo: LLM evals & red teaming

npm npm GitHub Workflow Status MIT license Discord

promptfoo is a CLI and library for evaluating and red-teaming LLM apps. Stop the trial-and-error approach - start shipping secure, reliable AI apps.

Website · Getting Started · Red Teaming · Documentation · Discord

Promptfoo is now part of OpenAI. Promptfoo remains open source and MIT licensed. Read the company update.

Quick Start

npm install -g promptfoo
promptfoo init --example getting-started

Also available via brew install promptfoo and pip install promptfoo. You can also use npx promptfoo@latest to run any command without installing.

Most LLM providers require an API key. Set yours as an environment variable:

export OPENAI_API_KEY=sk-abc123

Once you're in the example directory, run an eval and view results:

cd getting-started
promptfoo eval
promptfoo view

See Getting Started (evals) or Red Teaming (vulnerability scanning) for more.

What can you do with Promptfoo?

  • Test your prompts and models with automated evaluations
  • Secure your LLM apps with red teaming and vulnerability scanning
  • Compare models side-by-side (OpenAI, Anthropic, Azure, Bedrock, Ollama, and more)
  • Automate checks in CI/CD
  • Review pull requests for LLM-related security and compliance issues with code scanning
  • Share results with your team

Here's what it looks like in action:

prompt evaluation matrix - web viewer

It works on the command line too:

promptfoo command line

It also can generate security vulnerability reports:

gen ai red team

Why Promptfoo?

  • Developer-first: Fast, with features like live reload and caching
  • Private: LLM evals run 100% locally - your prompts never leave your machine
  • Flexible: Works with any LLM API or programming language
  • Battle-tested: Powers LLM apps serving 10M+ users in production
  • Data-driven: Make decisions based on metrics, not gut feel
  • Open source: MIT licensed, with an active community

Learn More

Contributing

We welcome contributions! Check out our contributing guide to get started.

Join our Discord community for help and discussion.