- Open sourceApache 2.0, on GitHub
- Self-hostedYour results stay on your network
- Since 2018Born at Samsung Israel R&D Center
- ~50 projectsIn production there, on the central quality platform
You already built half of this
Every algorithm team ends up with its own tools to look at results. They fit, at first.
- A script that renders an HTML page of images, and an output folder per run that nobody cleans up.
- Metrics pasted into a spreadsheet, a week after someone ran them.
- Screenshots in a chat thread, to argue which version looks better.
- A dashboard someone maintains on weekends, for one project.
QA-Board is what those tools become after years of use on dozens of projects: one place where each commit's outputs and metrics sit next to the reference's, for everyone on the team.
The loop
Run, compare, look, find, tune, gate
The same review loop for every algorithm: camera pipelines, models, servers, embedded code.
Run your code on your test set
Wrap your code with qa and run it on a batch of inputs: on your computer, on a cluster (LSF, Dask, Celery) or in CI on every push.
Use cases
For outputs that pass/fail tests can't judge
Each use case follows a demo project: the problem, the workflow, and the configuration that produces what you see.
- Camera, ISP, imaging
Image quality
A denoiser wins PSNR but adds halos: synced zoom, Image Diff, deep zoom on 113 MP images, every pipeline stage.
- Performance engineering
Serving latency
A cache saves CPU and takes p99 from milliseconds to seconds: latency distributions, flame graph diffs, History, a tuning frontier.
- Computer vision, ML
Model evaluation
An int8 detector loses small objects: metrics per class and slice, PR curves over the reference, automated tuning.
- Embedded, HW/SW co-design
Bit accuracy
Check that a change left every output file identical, before you hand a model over to a hardware team.
- Robotics, perception
Trajectories and 3D
6DoF trajectories against ground truth, point clouds and videos played in sync with the reference.
The details
Polish you'd never build in-house
Years of daily use on dozens of projects, in the web app you get on day one.
Deep zoom
Images over 100 MP load tile by tile, from the whole image down to single pixels.

Image Diff
A perceptual diff with a threshold: only what really changed stands out.

Pixel values
Hover a pixel to read its values in both images, with a crosshair on the other.

Histograms
Select a region to compare its histograms, new against reference.

Regions of interest
Jump to preset regions, or to where the images differ most.

Filters
Brightness, contrast and gamma on every image at once, to see into the shadows.
Every stage
Sliders over a pipeline’s stages or a video’s frames, synced across runs.

Flame graph diffs
The functions that got slower in red, the faster ones in blue, the new ones in orange.

Plot overlays
Your Plotly figures, with the reference drawn dashed on the same axes.
Bit accuracy
Only the output files that changed: click one to diff it with the reference.
Live logs
Follow a running log, count its errors, jump to the next one.
File browser
Every run’s folder in the browser, driven from the keyboard.
Integrations
Fits your stack
QA-Board wraps the code you have, where it runs today. It doesn't need to be the entrypoint of your build or your CI.
Your code
- Python
- Any executable: C++, shell...
Git and CI
- GitHub and GitLab webhooks
- GitHub Actions, GitLab CI, Jenkins
- CircleCI, Travis CI...
Runners
- Local processes
- LSF
- Dask
- Celery
Servers
- Docker Compose
- Kubernetes (Helm)
- Air-gapped installs
Sign-in
- Local accounts
- LDAP
- SAML
Storage
- A shared folder (NFS, SMB...)
- Mounted at the same path everywhere
Roadmap
Where we're going
- Next
N-way comparisons
Pick N commits, batches or tuning runs: outputs in a grid with synced zoom, one metrics column per run.
- Next
HTTP upload of outputs
Save results from GitHub-hosted runners, laptops off the VPN and pods without a shared volume.
- Next
An MCP server
Coding agents read results, Metrics Diffs and image crops, and review their changes like people do.
See it on your computer
Start a server, run an example project and open its results in a few commands.
What's new: October 2026
QA-Board now works with GitHub as well as GitLab, Gitea/Forgejo and Bitbucket, searches all of a project's commits, opens big commits much faster, and has a file browser and a video viewer. A quickstart, a user guide and release notes in the app help you get started; admins, check your git host settings before upgrading, and at SIRC install one more package when you upgrade qaboard.
GitHub and other git hosts
QA-Board works with repositories on GitHub and GitHub Enterprise as well as GitLab, and receives the push events of Gitea, Forgejo and Bitbucket Cloud. On GitHub, qa batch sets a commit status that links to the results, and you can start GitHub Actions workflows from the web app. The experimental qa gate fails the CI when quality regresses.
Search all your commits, browse your files
The commit list's Filter box searches all of a project's commits, not only the last days: by message, committer, branch, batch or hash. Open a folder under /s/ to get a file browser. Commit pages with 1000 runs filter and sort without freezing, and big commit lists and the projects list load much faster.
What's new, a user guide, logs and videos
Release notes pop up once a month is over: read them again from the sparkles button in the sidebar. A new user guide, with screenshots of demo projects, explains the web app. Logs update live, with search, failed LSF runs show why LSF stopped them, and videos compare with a wipe, frame by frame.
Learn more →Quickstart, Kubernetes, and upgrading
Try QA-Board with one Compose file and demo projects. deployments/deploy.py rolls out new backend replicas next to the old ones and rolls back instantly, and each release publishes its images and a Helm chart. Before upgrading, keep GITLAB_HOST set or list your GitLab in QABOARD_GIT_HOSTS: a migration records the git host of each project.