Getting started¶
Launch the Promptfoo Evaluation Workbench, run the model-free example, and open the optional viewer through a tunnel.
You need: an AWS account that can subscribe on AWS Marketplace, launch EC2, and start Session Manager. The viewer forward needs the AWS CLI and the Session Manager plugin on your workstation. No key pair and no inbound rule are required for that forward.
1. Subscribe¶
Open the Promptfoo Evaluation Workbench listing, choose View purchase options, review the terms, and subscribe. When the subscription is active, choose Launch your software.
2. Launch the instance¶
On the EC2 launch page:
- Choose t3.medium (4 GiB of memory) or larger.
- Under Configure storage, use an encrypted gp3 root volume of at least 24 GiB.
- Require IMDSv2.
- Attach an IAM instance profile that includes
AmazonSSMManagedInstanceCore. Addbedrock:InvokeModelonly if you run the Nova Lite example later. - Leave inbound application ports closed.
- Choose Launch instance.
3. Connect¶
Session Manager starts as ssm-user. In the
EC2 console, choose Connect, then
Session Manager, then Connect. Or:
Wait for cloud-init, then run the walkthrough as ubuntu:
4. Run the walkthrough¶
The demo sends evaluation requests to a bounded localhost fixture. It uses no model account and downloads no weights.
Two prompt variants over two cases produce four passing assertions. A second
suite fails all four on purpose. Promptfoo's exit code for that suite is
100. The command checks both result files and the SQLite database. It writes
a directory under ~/promptfoo-results/evaluation-*.
On every later run, both earlier evaluation IDs and the unchanged JSON must still be present before a new evaluation starts. A failed assertion is an evaluation result. An installer or provider error fails the command separately.
First boot keeps evaluation state that is already on disk.
5. Evaluate your own model¶
Point Promptfoo at your config file:
Put provider credentials in a file readable only by ubuntu. Never pass keys
as command arguments. Your provider may charge for the requests.
For an instance role that may call Amazon Nova Lite in us-east-1:
That command makes eight short model requests and checks the responses. The
role must allow bedrock:InvokeModel for amazon.nova-lite-v1:0, and the
model must be available in the account. Model availability is your
prerequisite.
6. Open the viewer¶
The viewer does not start with the instance. It has no built-in sign-in, it
listens on network interfaces, and it has no --host flag. Start the bounded
unit below from an administrative Session Manager shell. It runs as ubuntu,
allows network traffic only inside the instance, and stops after one hour.
sudo systemd-run --unit=promptfoo-viewer --uid=ubuntu \
--setenv=HOME=/home/ubuntu \
--property=RuntimeMaxSec=3600 \
--property=IPAddressDeny=any \
--property=IPAddressAllow=localhost \
/usr/local/bin/promptfoo view --no --port 15500
Stop it sooner with sudo systemctl stop promptfoo-viewer. Other local users
on the instance can still open its results. Use an instance limited to people
who may see those evaluations.
From your workstation, forward port 15500. Replace <region> with the
instance's Region:
aws ssm start-session --region <region> --target <instance-id> \
--document-name AWS-StartPortForwardingSession \
--parameters '{"portNumber":["15500"],"localPortNumber":["15500"]}'
Open http://127.0.0.1:15500. The image includes no viewer password. The
tunnel is the remote access control. Do not publish the viewer on the
internet.
Next, see Configuration for where the database lives.
Last updated October 27, 2026 · Suggest an improvement