Skip to main content

Quality tracking for people and agents

Tests tell you it runs. QA-Board shows you it's better.

Every change runs on your test set, whether a person or a coding agent wrote it. QA-Board puts its outputs and metrics next to the reference's (images, videos, point clouds, plots, flame graphs, test reports and logs) so everyone sees what changed, agrees it's better, and ships it.

Open source · self-hosted · git-native

Setting it up for your team? The maintainers help you get started: get in touch.

  • 40M+ runsSaved and reviewed in production at Samsung
  • ~50 projectsOn Samsung’s central quality platform
  • Since 2018In daily use by Samsung’s teams
  • Open sourceApache 2.0, self-hosted: your results stay on your network

You already built half of this

Every team that cares about quality ends up with its own tools to look at results. They fit, at first.

  • 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.
  • A coding agent that says its change is better, with nothing to check it against.

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 and for their agents.

The loop

Run, compare, look, find, tune, gate

The same review loop for anything you measure: camera pipelines, models, servers, embedded code, test suites, agents.

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.

Put your project on QA-Board →

People and agents

One view of quality, for people and agents

Coding agents write a growing share of changes. With QA-Board they run the same tests, read the same results and meet the same targets as people, and a person decides what ships.

  • People

    Review in the web app

    Every commit’s outputs next to the reference’s, behind a link you can share. Milestones, History and tuning, from the browser.

  • Agents

    Read the same results

    qaboard.runs(url) and qa runs give an agent the runs a page shows. The compare API gives it a verdict against the reference.

  • Agents

    Learn the conventions

    Two skills teach coding agents to integrate a project with QA-Board, and to check the results before they call a change better.

  • People and agents

    Meet the same targets

    Experimental

    qa gate fails a change that regresses, whoever wrote it, and links to the Metrics Diff that shows why.

Viewers

Built for heavy data

Each kind of output gets a viewer that puts the new run next to the reference, in sync, and shows where they differ: images and videos down to the pixel, 3D maps, flame graphs, plots and reports.

Images, down to the pixel

Zoom from a 113 MP test wall to single pixels of a Siemens star, and the reference follows. The viewer loads only the tiles it shows.

  • Wipe and flipDrag a divider across the two images, or flip between them in place: differences jump out.
  • The differencePerceptual, ΔE 2000, absolute or signed. Raise its maximum until only what really changed stands out.
  • Blind testsThe two images in a random order, A and B: pick the better one, then reveal which was new.
The image viewer →

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.

  • The list of a commit's runs ranked by how much their output images differ from the reference's, with a bar, a percentage and the number of regions found for each; the 113 MP test wall, a TIFF, has no out.png to compare.The list of a commit's runs ranked by how much their output images differ from the reference's, with a bar, a percentage and the number of regions found for each; the 113 MP test wall, a TIFF, has no out.png to compare.

    Which runs changed most

    The server compares the images of every run on the page with the reference’s, and ranks the runs by their largest difference: start your review where it matters.

  • Every stage, synced

    One slider over a camera pipeline’s stages, from the raw mosaic to the output, drives every run’s card at once.

  • Bit accuracy before a hardware handoff

    Only the output files that changed, each diffed with the reference’s. A commit that changes none is bit-accurate.

  • The Logs view with the 113 MP test wall's run open: tagged "LSF: out of memory", a red summary says the job was killed at its memory limit (TERM_MEMLIMIT), compares the memory it used with the 3072 MB it requested, and says how to ask for more.The Logs view with the 113 MP test wall's run open: tagged "LSF: out of memory", a red summary says the job was killed at its memory limit (TERM_MEMLIMIT), compares the memory it used with the 3072 MB it requested, and says how to ask for more.

    Why a run failed

    When LSF kills a run, its log says why, compares the memory it used with what it asked for, and says what to change.

  • The efficient frontier of the tune-batching sweep: one point per configuration of max batch and max delay, CPU per request against p99, colored by max delay. The hovered point, max batch 16 and max delay 250 µs, sits on the lower left edge.The efficient frontier of the tune-batching sweep: one point per configuration of max batch and max delay, CPU per request against p99, colored by max delay. The hovered point, max batch 16 and max delay 250 µs, sits on the lower left edge.

    Tuning frontiers

    Every configuration of a sweep, one metric against another: see which ones sit on the efficient frontier.

  • The facade's window frame, new and reference images: above them, the hovered pixel's coordinates and its RGB values in both images, with their colors; crosshairs mark the pixel in both.The facade's window frame, new and reference images: above them, the hovered pixel's coordinates and its RGB values in both images, with their colors; crosshairs mark the pixel in both.

    The file’s own values

    Hover a pixel: its values in both images as your code saved them, 16-bit or float included, not only the colors on screen.

  • The sidebar's Milestones menu on the detector's commits: a search box, the favorite kd-1.3, then "My milestones" with the releases kd-1.3 and kd-1.2 and, in the group quant / calibration, entropy-try. Each shows its batch, branch, commit and date.The sidebar's Milestones menu on the detector's commits: a search box, the favorite kd-1.3, then "My milestones" with the releases kd-1.3 and kd-1.2 and, in the group quant / calibration, entropy-try. Each shows its batch, branch, commit and date.

    Milestones

    Save a release as a shared milestone, an experiment as a private one, and compare any commit with them.

  • Live logs

    Follow a running log, count its errors, and jump from one to the next.

  • File browser

    Every run’s folder in the browser, from the keyboard: j k to move, / to filter, c to copy a path.

Use cases

For quality that pass/fail tests can't judge

Images, models, trajectories, latency, test suites, agents. 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 differences, a 113 MP test wall, every stage of the pipeline.

  • Computer vision, ML

    Model evaluation

    An int8 detector is 72% smaller and misses small objects: metrics per class and object size, PR curves over the reference.

  • Robotics, perception

    Odometry and mapping

    A false loop closure pulls the trajectory meters away: 6DoF trajectories against the ground truth, point clouds, depth video in sync.

  • Embedded, HW/SW co-design

    Bit accuracy

    Check in CI that a change left every output file identical, before you hand a fixed-point model over to a hardware team.

  • Performance engineering

    Serving latency

    A shared cache saves CPU and takes p99 from milliseconds to seconds: latency tails, flame graph diffs, History, a tuning frontier.

  • LLM agents

    Agent evals

    Shorter tool descriptions, and an assistant reboots robots without asking: transcripts diffed, a report per task, pass rate and cost.

All use cases →

Production-ready

Hardened at scale

QA-Board has been Samsung's central quality platform since 2018: about 50 projects and more than 40 million runs. Running it for your company is documented and tested.

  • Upgrades without downtime

    • Rolling deploys, tested in CI
    • Rollbacks
    • Database backups and restores
  • Kubernetes

    • A Helm chart, installed in CI with a real batch
    • Database failover with CloudNativePG
  • Access control

    • Single sign-on, LDAP, local accounts
    • Project roles, groups from your directory
  • Monitoring

    • Errors and traces of the web app, server, jobs and qa
    • Sent to Sentry, hosted or self-hosted
  • Storage at scale

    • What takes space, and whose it is
    • Old outputs deleted automatically
  • Heavy outputs

    • 113 MP images, zoomed to the pixel
    • Videos, point clouds, flame graphs

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

    • Single sign-on (OpenID Connect)
    • LDAP, SAML
    • Local accounts
  • 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.

The whole roadmap →

Get in touch

Bring QA-Board to your team

We're looking for teams who track quality, and we help them get started. Tell us what you measure and where your code runs, and we'll help you:

  • Set up a self-hosted server on your own machines, with Docker Compose or Kubernetes
  • Integrate your first projects: inputs, metrics, visualizations and CI
  • Plan upgrades, backups and storage as your results grow

Write to the maintainers

arthur.flam@gmail.com

Or open a GitHub issue for bugs and feature requests.

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

qaboard v1.1.1

A new image viewer, readable configuration diffs, a dark theme and a commit page that stays fast with 1000 runs. QA-Board now works with GitHub and other git hosts, and comes with a quickstart, a tutorial and a user guide. Admins: read "Before you upgrade" first; at SIRC, also install `qaboard-site-sirc` when you upgrade qaboard.

Users

A new image viewer

Compare images side by side, with a wipe, one at a time in place, or as their difference, measured perceptually or in ΔE 2000. Zoom in to read the pixels' own values, even 16-bit or float, run a blind test, and rank the runs of a page by how much their images changed. Videos compare the same way, frame by frame.

Learn more →
Users

See what changed in a configuration

Runs show how their configuration differs from their reference run's, like gain: 3 → 4, and hide the settings all runs share. Lists and tuning parameters are readable, and runs are compared with the reference run whose configuration is closest. Copy a run's settings as qa options.

Learn more →
Users

Fast with 1000 runs and years of commits

On a commit with 1000 runs, filtering takes half a second instead of freezing the page for 7, and the Metrics Table opens in a third of a second instead of 7. The commit search box finds any of a project's commits, and long commit lists and the projects list load as you scroll.

Learn more →
Users

Dark theme and more room for results

Switch to a dark theme, or follow your system's. Collapse the sidebar to icons, dock the View options on the right (o), and switch commit lists to Compact. Press ? for the keyboard shortcuts and the filter syntax.

Learn more →
Users

Logs, files and reruns

Logs update live, with search, and failed LSF runs say why LSF stopped them. Browse a run's files under /s/, edit your batches in Available Tests with errors flagged as you type, and redo only the runs you filtered, with the batch's runner and concurrency.

Learn more →
Project integration

GitHub, other git hosts and a quality gate

QA-Board works with GitHub and GitHub Enterprise as well as GitLab, and receives the push events of Gitea, Forgejo and Bitbucket Cloud. qa batch sets a commit status that links to the results, you can start GitHub Actions workflows from the web app, and the experimental qa gate fails the CI when quality regresses.

Learn more →
Project integration

Get started in minutes

Try QA-Board on your computer with one Compose file and demo projects, then follow the tutorial: it shows the steps for your server, git host, CI and runners. A user guide explains the web app, and release notes pop up in it once a month is over.

Learn more →
Admins

Deploy, monitor and upgrade safely

deployments/deploy.py rolls out new backend replicas next to the old ones and rolls back instantly, a Helm chart runs QA-Board on Kubernetes, and Sentry traces requests from the browser to the database. Before upgrading, check your git host, QABOARD_STORAGE_ROOTS and QABOARD_PROXY_HOSTS settings, and your backups.

Learn more →
All release notes →