Where does your system break?Self-hosted, on-premise 24/7 load testing and performance testing
curl -fsSL https://spitfire.sh | SPITFIRE_LANG=en bash -s -- dockerBreaking point: the load climbs step by step and the run stops when a threshold breaks.
Not a tool you open now and then: on watch all the time
Spitfire works in two modes. On watch, your tests keep running on production at a low load and tell you once when something changes; when needed, the same test pushes the system with the full load.
All the time, at a low load
Your critical flows are tried on production every 1–60 minutes with 1–10 virtual users, each scenario once. The system does not notice; you notice when something changes.
- Uptime, step durations, recent failures
- Living baseline: drift without thresholds
- SLO and error budget
- A 30-minute close watch after each deploy
- One notice per incident, drift and budget
When you ask, the full load
Before a sale, a big release or an infrastructure change, the same test becomes a distributed load test: the load climbs step by step and you see the breaking point and what slowed down in the backend.
- Breaking point and thresholds
- Scheduled runs and a CI release gate
- Version comparison (A/B)
- Root cause with OpenTelemetry and monitoring alerts
Fill in a test like a form.
Scenario, stages, steps and thresholds on one screen. Behind it the same test is kept as JSON, so you can also write it as a file.
Scenario, load model and stages, with the plan drawn on the right. Steps, thresholds, environments and JSON on the same screen. Real screenshot, dark theme.
Your monitoring, inside the load test
When the system breaks, Spitfire writes into the same report what your monitoring alerted on at that moment. No agent, and nothing is written to these systems.
- ZabbixProblems opened during the run, with host and severity.
- DatadogMonitors that alerted, and their recoveries.
- New RelicAlert incidents and their closings.
- DynatraceProblems opened and closed.
- InstanaIssues and incidents opened during the run.
- OpenTelemetryWhich service or database slowed down; no agent.
Also: Prometheus, Grafana Tempo, Jaeger, Loki, Jira, ServiceNow, Azure DevOps, GitLab, YouTrack, Redmine, Linear, Slack, Microsoft Teams, GitHub Actions, GitLab CI, Jenkins…
Is the new release slower? Find out before it goes live.
Run the same test, with the same load, at the same time, against the environment running the old release and the one running the new release. Every runner splits its load evenly between the two, so network and timing differences do not skew the result. At the end Spitfire shows the difference step by step and says it plainly: better, no difference, or worse.
Like for like
Before it starts it compares the two environments, and warns when they share a database or sit at different network distances.
Takes out the environment difference
A calibration run with the same release on both measures how the environments differ on their own; the result is corrected for it.
Release gate
In CI, a slower new release fails the step with exit 98, and the release does not go live.
What are your servers and database doing as the load climbs?
While the test runs, the server's CPU, memory and disk and PostgreSQL's connections, commits and deadlocks are in the run report, right next to the load stages. No connection to add to the test.
- Collector server · PostgreSQL
- Tower in your network, disk buffer
- One outgoing link no inbound
- Spitfire run report · Backend
The Tower only connects to the controller. Nothing connects into your network, and no internet access is needed.
If it can't reach the controller it keeps the metrics on disk (1 GB / 24 hours by default) and forwards them in order once the link is back.
The config for the official OpenTelemetry Collector is made in the product; the token and the password stay out of the file and come from the environment.
For PostgreSQL the pg_monitor role is enough: it can't read the data in your tables, only the statistics.
The free key includes 1 server + 1 database, kept 7 days; more as your plan grows, unlimited and 365 days on Enterprise. Plans →
What can it do?
Tests without code
Steps are set up in a form; or import OpenAPI, Postman, HAR, k6 or JMeter.
Beyond HTTP
gRPC, WebSocket, Kafka, MQTT, SQL and more in the same test.
Breaking point and findings
The load climbs in steps; where it broke and the slowest step, with the numbers.
A report to share
Every run becomes a PDF, HTML or a time-limited link in one click.
CI and scheduled runs
A release gate in the pipeline; nightly runs with Slack, Teams and e-mail alerts.
Safe, built for teams
A guard against production writes, SSO, roles and an audit log.
One run, several cities.
Split the load across locations by percentage and see each location's latency separately. Remote runners connect outbound to the controller over TLS with key pinning, so the load servers need no inbound ports.
A runner installs as a Docker image or as a single binary with a systemd unit; the UI prepares the install command.
--ca-pin sha256:9f2c…e41a
Works by your organization's rules.
Spitfire runs on your infrastructure; identity, permissions and audit plug into your organization's processes.
Data stays in your network
The controller, database and runners run on your servers; test definitions and results are not sent out. The license is verified offline and works air-gapped.
Runners dial out
No inbound port on the load servers. The runner checks the controller's key against a SHA-256 pin, which protects against man-in-the-middle attacks.
Production write guard
SQL/MongoDB writes, dangerous Redis commands and data-changing HTTP requests are flagged; the test does not start until the person starting it sees the list and confirms. It asks again on every run.
Append-only audit log
Who did what, when and from where. A database trigger refuses updates and deletes; exports as CSV.
Encrypted secrets
Connection passwords, tokens and certificate keys are encrypted with AES-256-GCM in the database; the API never shows them again.
Database access by consent, least privilege
Query suggestions from the schema are for installation admins only; nothing is read until a consent is recorded: who, when, from where. A ready read-only user script is provided and only the catalog is read.
Read the full security statement → · Self-hosted load testing →
Single sign-on
Roles and groups are mapped from your identity provider. Password sign-in can be limited to admins; SSO users have no local password. On Enterprise, SCIM closes a leaver's access at once.
Roles and groups
Admins write the tests. Groups decide who sees which test and who may run it. Reports are shared with people without an account through a link valid for 1–90 days.
Audit log
Tests, connections, users, permissions, sign-ins, run start and stop, write confirmations, report shares. You set the retention period (at least 30 days). On Enterprise it streams live to a SIEM over syslog or a signed webhook.
Kubernetes or Docker
Installs with one command in your own data center, private cloud or AWS/Azure VPC; amd64 and arm64.
Multiple locations
Split a run's load across locations by percentage. Remote runners install with Docker or without it (systemd, Windows service) and dial out to the controller.
Start free
Every testing feature in every edition · no usage charges, a fixed license price.
Free
- Active users1
- Runs at a time1
- Concurrent virtual users100
- Requests / second500
- Run length15 min
- Browser VUs (Web Vitals)1
- Runners · locations per run1 · 1
- Per-second results kept7 days
- Scheduled tests1
- Notification channels1
- Server and database metrics The Collector is the official OpenTelemetry Collector on your server: it gathers CPU, memory, disk, network and PostgreSQL metrics. A Tower is a small gateway in your network: it forwards the Collectors' metrics to Spitfire over one outgoing link, so the run report shows what the server and the database did next to the load stages. The numbers: servers with metrics · databases · days the metrics are kept. Full explanation →1 server
1 database
kept 7 days - Synthetic monitors1 · every 15 min at most
- SSO · LDAP · audit log—
- Version comparison1 a month
- Performance budgets · PR comments1 test · 1 repository
- Monitoring events (Zabbix, Datadog, New Relic, Dynatrace, Instana)add-on · 7-day trial
- Issue tracking (Jira, ServiceNow, Azure DevOps…)add-on · 7-day trial
- PDF / shared report“Free” mark
- SupportCommunity
- Price lock (on renewal)—
- Add-on packs (more limits, same plan)—
Starter
billed yearly: $990 (incl. taxes) Yearly: paid once, the license does not renew itself; you get a reminder before it ends.
- Active users2
- Runs at a time1
- Concurrent virtual users500
- Requests / second2,500
- Run length1 h
- Browser VUs (Web Vitals)5
- Runners · locations per run2 · 1
- Per-second results kept30 days
- Scheduled testsunlimited
- Notification channelsunlimited
- Server and database metrics The Collector is the official OpenTelemetry Collector on your server: it gathers CPU, memory, disk, network and PostgreSQL metrics. A Tower is a small gateway in your network: it forwards the Collectors' metrics to Spitfire over one outgoing link, so the run report shows what the server and the database did next to the load stages. The numbers: servers with metrics · databases · days the metrics are kept. Full explanation →3 servers
1 database
kept 30 days - Synthetic monitors3
- SSO · LDAP · audit log✓
- Version comparison✓
- Performance budgets · PR comments1 test · 1 repository
- Monitoring events (Zabbix, Datadog, New Relic, Dynatrace, Instana)—
- Issue tracking (Jira, ServiceNow, Azure DevOps…)—
- PDF / shared reportunbranded
- SupportE-mail support, answered within 2 business days
- Price lock (on renewal)✓
- Add-on packs (more limits, same plan)—
Growth
billed yearly: $2,900 (incl. taxes) Yearly: paid once, the license does not renew itself; you get a reminder before it ends.
- Active users5
- Runs at a time3
- Concurrent virtual users2,000
- Requests / second10,000
- Run length4 h
- Browser VUs (Web Vitals)5
- Runners · locations per run10 · 3
- Per-second results keptunlimited
- Scheduled testsunlimited
- Notification channelsunlimited
- Server and database metrics The Collector is the official OpenTelemetry Collector on your server: it gathers CPU, memory, disk, network and PostgreSQL metrics. A Tower is a small gateway in your network: it forwards the Collectors' metrics to Spitfire over one outgoing link, so the run report shows what the server and the database did next to the load stages. The numbers: servers with metrics · databases · days the metrics are kept. Full explanation →10 servers
3 databases
kept 90 days - Synthetic monitors10
- SSO · LDAP · audit log✓
- Version comparison✓ · CI and schedules on yearly
- Performance budgets · PR commentsunlimited
- Monitoring events (Zabbix, Datadog, New Relic, Dynatrace, Instana)add-on · 7-day trial
- Issue tracking (Jira, ServiceNow, Azure DevOps…)add-on · 7-day trial
- PDF / shared reportunbranded
- SupportE-mail support, answered within 2 business days
- Price lock (on renewal)✓
- Add-on packs (more limits, same plan)✓
Scale
billed yearly: $6,900 (incl. taxes) Yearly: paid once, the license does not renew itself; you get a reminder before it ends.
- Active users15
- Runs at a time5
- Concurrent virtual users10,000
- Requests / second50,000
- Run length8 h
- Browser VUs (Web Vitals)20
- Runners · locations per run30 · 6
- Per-second results keptunlimited
- Scheduled testsunlimited
- Notification channelsunlimited
- Server and database metrics The Collector is the official OpenTelemetry Collector on your server: it gathers CPU, memory, disk, network and PostgreSQL metrics. A Tower is a small gateway in your network: it forwards the Collectors' metrics to Spitfire over one outgoing link, so the run report shows what the server and the database did next to the load stages. The numbers: servers with metrics · databases · days the metrics are kept. Full explanation →30 servers
10 databases
kept 180 days - Synthetic monitors30
- SSO · LDAP · audit log✓
- Version comparison✓ · CI and schedules on yearly
- Performance budgets · PR commentsunlimited
- Monitoring events (Zabbix, Datadog, New Relic, Dynatrace, Instana)add-on · 7-day trial
- Issue tracking (Jira, ServiceNow, Azure DevOps…)add-on · 7-day trial
- PDF / shared reportunbranded
- SupportE-mail support, answered within 1 business day
- Price lock (on renewal)✓
- Add-on packs (more limits, same plan)✓
Enterprise
Priced for your scale and number of installations
- Active usersunlimited
- Runs at a timeunlimited
- Concurrent virtual usersunlimited
- Requests / secondunlimited
- Run lengthunlimited
- Browser VUs (Web Vitals)unlimited
- Runners · locations per rununlimited
- Per-second results keptunlimited
- Scheduled testsunlimited
- Notification channelsunlimited
- Server and database metrics The Collector is the official OpenTelemetry Collector on your server: it gathers CPU, memory, disk, network and PostgreSQL metrics. A Tower is a small gateway in your network: it forwards the Collectors' metrics to Spitfire over one outgoing link, so the run report shows what the server and the database did next to the load stages. The numbers: servers with metrics · databases · days the metrics are kept. Full explanation →unlimited servers
unlimited databases
kept 365 days - Synthetic monitorsunlimited
- SSO · LDAP · audit log✓
- Version comparison✓ + CI and schedules
- Performance budgets · PR commentsunlimited
- Monitoring events (Zabbix, Datadog, New Relic, Dynatrace, Instana)included
- Issue tracking (Jira, ServiceNow, Azure DevOps…)included
- PDF / shared reportunbranded
- SupportPriority support, answered within 1 business day
- Price lock (on renewal)by contract
- Add-on packs (more limits, same plan)not needed
1 production + 1 test installation (same legal entity) · support by e-mail, weekdays 09:00–18:00 UTC+3 (Istanbul); 1 business day is the time to a first response, not to a fix · 10–15% off for several years
Request a quoteFrequently asked questions
The questions we hear most, from installing Spitfire to what happens during a run.
Is my test data sent anywhere?Security
Do I need to write code?Getting started
Can I bring my k6 or JMeter tests?Getting started
How much load can my system take?Tests
Can I run the same test against staging and production?Tests
Can I test live screens that use WebSocket or Server-Sent Events?Tests
Can I run stress, spike and soak tests too?Tests
What if a runner or the controller drops during a run?Setup and operation
Can I run a fixed number of operations instead of a duration?Tests
I have a Swagger document, a Postman collection or a browser recording. Do I write the test from scratch?Getting started
Our monitoring alarms during load tests. What can we do?Tests
Can people sign in with their company account (Entra ID, Okta, Active Directory)?Security
Can a test run every night and tell us when something is wrong?Tests
How do I send results outside the team?Tests
How do I run tests from my CI/CD pipeline?Tests
SPITFIRE_TOKEN secret, and run spitfire cloud run "Test name" in a step. The CLI comes from the controller or the Docker image; the CI button on a test's page prepares GitHub Actions and GitLab CI steps. The step exits 0 (passed) or 99 (thresholds failed).Where can I install it?Setup and operation
I lost the setup code shown after installation. What now?Setup and operation
SPITFIRE_SETUP_CODE in ~/spitfire/deploy/docker/.env on Docker, the spitfire-secrets Secret on Kubernetes. The controller log also prints setup_code=, and re-running the installer shows the same code.Our API wants a client certificate (mTLS); can I test it?Security
How long are results kept?Setup and operation
What happens when the license expires?Licensing and pricing
How do I hear about new releases, and is updating hard?Setup and operation
When does the license term start?Licensing and pricing
What happens to what I paid when I upgrade?Licensing and pricing
Does the price change when I renew?Licensing and pricing
What is the price lock? What else comes with yearly?Licensing and pricing
If Growth's limits are not enough, must I move to Scale or Enterprise?Licensing and pricing
Do your prices include VAT or sales tax?Licensing and pricing
Can I get a discount by inviting friends?Licensing and pricing
Can we pay by bank transfer or get a quote?Licensing and pricing
Which plan fits me?Licensing and pricing
What does the free edition limit?Licensing and pricing
How do I know whether the new release is slower than the old one?Tests
My two environments are not identical. Can I still trust the result?Tests
Why not run twice and compare the two runs?Tests
I have one test environment. Can I still use it?Tests
Can CI stop the deployment when the new release is slower?Tests
spitfire cloud run the --compare flag; if the new release is worse the step exits with 98 and the deployment stops.Write your question to support@usespitfire.com or try Spitfire on your own systems with the 30-day pilot; our team will help you.



