vacuum is an ultra-super-fast, lightweight OpenAPI, AsyncAPI and JSON Schema deterministic linter and quality checking tool.

It’s designed for serious API quality work: fast local feedback, CI output, reusable reports, editor diagnostics and a ruleset model that works with existing ruleset investments.


Designed to reliably lint OpenAPI, AsyncAPI and JSON Schema specifications, very, very quickly. Including very large ones.

vacuum will tell you what is wrong with your spec, why, where and how to fix it. It will work at scale and is designed as a CLI (with a UI) and a library to be consumed in other applications.

Why does it exist?

When I worked at VMware, We needed a quality linter to start understanding just how well the API landscape held up across the company.

There were thousands of different OpenAPI specs, across a large number of business units. It was my job to try and make sense of it all.

Spectral was the only credible linter available at the time to build on top of, Which is great, because spectral does a good job, except for one thing…

Spectral is really slow against large and multiple specs.

We need a faster linter

We needed something compiled and fast, even Java would have been too slow.

I was talking to my colleague Steve Trefethen about this major pain point with our engineering capability one day, particularly how slow Spectral was when trying to operate it as a service.

Steve Said:

“What we really need is a drop in replacement for Spectral”

I said:

“I am going to build it.”

So I did.

World’s fastest API linter.

vacuum is much, much faster than the typical JavaScript-based linting stack.

It’s faster because it’s written in golang, it’s multi-threaded and uses an index for complex rules.

It’s also been designed as a golang library from the ground up.

What makes vacuum different?

It’s been designed with enterprise & large scale use, as well as having a console UI, a rad, interactive HTML report as well as a ‘vacuum sealed report’ that allows re-rendering of any report in time, without losing any fidelity or re-running new logic that could change results.

Origin story

Read more about the origin story behind vacuum.