mrkeyoor.com_
Tue 01 Sept 17:41 UTC
LLM Toolsevaluationupdated 27 Aug 2026

promptfoo review

Promptfoo is a command-line tool and library for testing prompts, models, agents, and retrieval-based AI applications. It lets teams compare outputs, turn expected behavior into repeatable checks, and probe an AI system for security failures before release.

+102 / 5dstars / 7d
Verdict

Our Promptfoo checkout installed 2,415 packages and passed 23,460 tests, but its source build failed after 79 seconds, so it fits teams willing to own a large evaluation stack better than developers seeking a light dependency. The 30 audit findings, including 27 high-severity vulnerabilities, require review before putting it in a sensitive CI environment. Use it when prompt evaluation and AI red teaming belong in the same workflow; use a narrower Python test framework or scanner when only one side matters.

We ran it

Lab card: what happened when we ran promptfooScreenshot of promptfoo (promptfoo.dev)
Install✓ · 126s2415 packages · 3807 MB
Build✗ · 79s
Tests✓ · 269s23460 passed · 0 failed · 10 skipped of 23470 (vitest)
Known vulns300 critical · 27 high · 3 moderate · 0 low (npm audit)
Repo5524 files~995,274 lines of source · 238 MB · 12 CI workflows · Dockerfile · tests dir

Answers from our run

Does promptfoo build from source?

Dependencies installed in 126 seconds (2415 packages), and the build failed. We cloned commit e3b3645 into a clean Debian container with 3 CPUs and no project-specific setup.

Do promptfoo's tests pass?

Yes: 23460 of 23470 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Does promptfoo have known vulnerabilities in its dependencies?

npm audit flagged 30 known advisories in the dependency tree at the time of our run.

Who should not use promptfoo?

Teams pinned to Node.js 20 or an earlier runtime: npm and npx use requires Node.js 22.22.0 or newer.

What are the alternatives to promptfoo?

DeepEval, Garak, Langfuse. Our Promptfoo checkout installed 2,415 packages and passed 23,460 tests, but its source build failed after 79 seconds, so it fits teams willing to own a large evaluation stack better than developers seeking a light dependency.

Setup2/5126-second install used 3,807 MB; the source build failed
Docs5/5Setup, providers, assertions, CI, red teaming, and privacy are covered
Community5/524,603 stars and an August 27 push show heavy current activity
Maturity4/523,460 tests passed, though build and audit findings need work

Discussed on

  1. hnPromptfoo Is Joining OpenAI28 points
  2. hnShow HN: Automated red teaming for your LLM app23 points
  3. hnShow HN: Promptfoo – CLI for testing & improving LLM prompt quality14 points
  4. hnOpenAI to Acquire Promptfoo7 points
  5. hnHow to replicate the Claude Code attack with Promptfoo6 points

Who it’s for

AI application teams that need prompt and model comparisons recorded as repeatable tests.
Security engineers testing agents, chatbots, or retrieval systems for prompt injection and data exposure.
Developers who want YAML-based evaluation cases and quality checks in CI.
Teams comparing hosted providers, local models, and custom application endpoints through one runner.

Who it’s NOT for

Teams pinned to Node.js 20 or an earlier runtime: npm and npx use requires Node.js 22.22.0 or newer.
Contributors who need a small source checkout: our install pulled 2,415 packages and occupied 3,807 MB.
Organizations requiring a clean dependency audit before evaluation: our npm audit found 27 high and 3 moderate known vulnerabilities.
Developers who require the source build to pass in a 3-CPU, 8 GB container: ours exited after 79 seconds while both build processes received SIGTERM.
Users who prohibit usage telemetry unless they can set an opt-out: the project docs say telemetry is enabled by default and document PROMPTFOO_DISABLE_TELEMETRY=1.

Setup reality

Our sandbox install succeeded in 126 seconds, adding 2,415 packages and using 3,807 MB. The build failed with exit 1 after 79 seconds. Tests then succeeded in 269 seconds: Vitest reported 23,460 passed, 0 failed, and 10 skipped out of 23,470. npm audit found 30 known vulnerabilities, including 27 high and 3 moderate.

The quick start needs Node.js 22.22.0 or newer, a YAML configuration, test cases, and usually a provider API key. Local providers such as Ollama and custom scripts are documented alternatives. Running evaluations can incur model charges, while result history and cache data live under the local Promptfoo directory by default.

The source is a workspace monorepo with 5,524 files and about 995,274 source lines. The failing log showed tsdown receiving SIGTERM, then the app build running tsc -b && vite build before it also received SIGTERM. The log does not identify why the signals were sent. Basic CLI use from npm or Homebrew avoids a source build, while contributors must budget for the larger toolchain.

Version 0.122.1 combines evaluation and red teaming

Promptfoo 0.122.1 puts prompt comparison, model evaluation, and adversarial testing behind one command-line workflow. A YAML file defines prompts, providers, inputs, and assertions. The runner can compare hosted APIs, local models such as Ollama, or custom code, then show the results in a browser. That is useful when a team has outgrown screenshots and hand-picked examples but is not ready to build its own evaluation service.

The repository also reaches well beyond a prompt matrix. It includes red-team probes, model-graded and deterministic assertions, caching, shareable reports, and CI output in JSON, HTML, and JUnit XML. Our checkout contained 12 CI workflow files, a Dockerfile, a tests directory, and npm workspaces. That breadth makes Promptfoo credible as a common test layer, although it also explains why working on the source resembles maintaining an application platform rather than installing a tiny developer utility.

Node.js 22.22.0 is the floor, and provider keys are recurring work

Node.js 22.22.0 or newer is required for npm and npx use, while the installation guide recommends Node.js 24 LTS. The shortest trial is npx promptfoo@latest init --example getting-started, followed by an evaluation and the local viewer. Homebrew and a global npm package are supported too. Those paths avoid compiling the repository, which matters because our source build did not complete.

A useful evaluation still needs decisions that an installer cannot make. You choose providers, supply test inputs, and decide which assertions deserve to block a change. Most hosted providers need API credentials, and model-graded checks can add calls beyond the target response. CI users also need to control rate limits, cache behavior, output retention, and spend. Promptfoo records basic usage telemetry by default; its docs say prompts, outputs, test cases, keys, and full configuration files are excluded, and an environment variable disables collection.

What happened when we ran it

Our sandbox installed the promptfoo repository in 126 seconds. npm added 2,415 packages, and the completed dependency tree occupied 3,807 MB on disk. The checkout itself had 5,524 files, roughly 995,274 source lines, and a size of 238 MB. We cloned commit e3b3645 and ran it in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node.js 22, and no secrets; that was our measurement setup.

The build exited with code 1 after 79 seconds. Its final lines show the tsdown process ending with SIGTERM, which triggered termination of the other processes. The app task had started tsc -b && vite build and then received SIGTERM as well. The log tail gives no cause for those signals, so it would be speculation to blame memory, the container, or the application compiler. The defensible result is simpler: the full source build failed in our stated environment.

Tests had a much better result. Vitest finished in 269 seconds with 23,460 passing tests, 0 failures, and 10 skipped out of 23,470. That is strong evidence that the tested behavior held at commit e3b3645, even though it does not cancel the separate build failure. A contributor would need both commands green before treating the checkout as release-ready on the same class of machine.

The 30 audit findings need review before CI adoption

npm audit reported 30 vulnerabilities in the installed tree: 27 high and 3 moderate, with 0 critical and 0 low findings. The measurement does not tell us whether each advisory is reachable in normal Promptfoo use, a development-only package, or a false fit for this application. It does give security teams a concrete review queue before credentials and evaluation data are placed in a shared CI runner.

The scale cuts both ways. Passing 23,460 tests shows far more internal checking than a young prompt script usually has, while 2,415 installed packages create a wide dependency surface. The README's global install makes a first evaluation look small because users do not see the source toolchain. Teams that only run the published CLI can start there, but anyone embedding the library or contributing code should reproduce the audit and build on the exact deployment image they plan to trust.

An August 27 push and 528 open items show active maintenance

GitHub recorded the latest push on August 27, 2026, one day after release 0.122.1. The repository had 24,603 stars and 528 combined open issues and pull requests when fetched. That combined count is not a defect total. Recent activity includes release work, provider fixes, tracing changes, and red-team token accounting, which points to a maintained project with a busy change stream rather than an abandoned package.

Release 0.122.1 touched provider support, tracing, dependency handling, assertions, and red-team usage accounting. A team adopting Promptfoo should pin the CLI version in CI and review changes before upgrading, especially when provider behavior or token accounting affects budgets. The active queue means bugs can get attention, but it also means a moving interface around many external APIs. Current maintenance is good; quiet upgrades are still a poor idea for a test gate.

A 3,807 MB install is justified only when both jobs matter

Promptfoo makes the most sense when one team owns ordinary LLM evaluation and security probing. DeepEval is the cleaner comparison for Python teams that want tests to feel like the rest of a pytest suite. NVIDIA's Garak is narrower when the assignment is vulnerability scanning. Langfuse belongs on the shortlist when production traces, shared datasets, and experiment history are more important than a local-first runner.

Our 126-second install and 269-second test run make Promptfoo practical to trial, while the failed build and 30 audit findings keep it out of the effortless category. I would use it for a team with several providers, a real regression corpus, and someone assigned to maintain the evaluation definitions. For a single prompt, one model, and occasional manual review, the 2,415-package source tree asks for more ownership than the problem warrants.

Alternatives

ProjectWhat it isPick it when
DeepEvalA Python-first framework for unit testing and evaluating LLM applications.pick this instead when your test suite and application code already center on Python and pytest-style workflows.
GarakA scanner focused on finding weaknesses in language models and connected systems.pick this instead when adversarial security scanning is the job and broad prompt comparison is secondary.
Langfuse gh↗A self-hostable platform for traces, prompt management, datasets, and evaluations.pick this instead when production observability and shared experiment history matter more than a local test runner.

What people are saying

  1. [velocity-scout] promptfoo/promptfoo

Sources

  1. Promptfoo README
  2. Promptfoo installation guide
  3. Promptfoo telemetry documentation
  4. Promptfoo CI/CD guide
  5. Promptfoo 0.122.1 release

More llm tools reviews

rig · open-knowledge · graphiti · cve-mcp-server · minimind · SillyTavern · the whole board →