Working in a terminal is an essential and every day part of any software or DevOps engineer’s life. A terminal is perhaps the most common interface most of us use.

Terminal UIs are becoming more common these days, which is awesome.

Using a browser based app is cool, but there is something really cool about a console UI. That’s why vacuum comes with a custom terminal UI for reviewing a linting run. I call it the dashboard


Run the dashboard against an OpenAPI spec

If you’re running docker, make sure you’re using the -it flag.

docker run --rm -v $PWD:/work:ro -it dshanley/vacuum dashboard sample.yaml

Run the dashboard command and pass in your OpenAPI spec, or vacuum Report.

vacuum dashboard <my-openapi-spec.yaml>

Make sure your terminal window is sized to at least 1024x768. However, the vacuu

Everything is keyboard driven (mouse wheel scrolling is also supported).

Action Keys Action Result
Navigate rows ↑↓ / j,k Move up/down through violations
Page navigation PgUp/PgDn Page up/down through violations
Jump to top/bottom g/G Go to first/last violation
Toggle details view Enter Show/hide split view with violation details
Expand code view x Open full-screen code view modal
Open documentation d Show rule documentation modal
Filter by severity Tab Cycle through: All → Errors → Warnings → Info
Filter by category c Cycle through available categories
Filter by rule r Cycle through available rules
Toggle path column p Show/hide the path column
Clear filters/Close Esc Close modals/views or clear filters
Quit q, Ctrl-C Exit the dashboard

Mouse Support

  • Mouse wheel scrolling: Scroll through violations or within open modals
  • Responsive: All views adapt to terminal resize

File Watching

The dashboard supports automatic file watching to re-lint specifications when they change. use the -W or --watch flags to automatically updated the results.

Replaying a report

The dashboard can replay a vacuum report. This means the dashboard will load in all the results as they were captured Even if the current specification is different to what it was when the report was captured.

Simply replace the <my-openapi-spec.yaml> with the report file, which will look something like my-openapi-spec-report-07-04-22-12-30-21.json.gz. vacuum will auto-detect the report file.

Global Flags

dashboard supports the following global flags

Short Full Input Description
-r –ruleset string Use an existing ruleset file for linting
-p –base string Base URL or Base working directory to use for relative references
-u –remote string Load remote references automatically if possible (default is true)
-k –skip-check string Skip checking for a valid OpenAPI document, useful for linting fragments or non-OpenAPI documents
-g –timeout string How long (in seconds to wait) for a rule before it times out (default is 5 seconds)
-z –hard-mode string Enable every single built-in rule (including OWASP). Only for adventurers and brave souls.
-W –watch bool Watch for file changes and automatically re-lint the specification
–ext-refs bool Allow $ref pointers inside extension objects (x-) to be looked up
–cert-file string Path to client certificate file for HTTPS requests that require custom certificates
–key-file string Path to client private key file for HTTPS requests that require custom certificates
–ca-file string Path to CA certificate file for HTTPS requests that require custom certificates
–insecure bool Skip TLS certificate verification (insecure)

Watch Mode

The --watch or -W flag enables automatic file monitoring. When enabled, the dashboard will:

  • Monitor file changes: Automatically detect when the specification file is modified
  • Auto-relint: Re-run linting rules when changes are detected
  • Preserve state: Maintain your current position and filters during updates
  • Visual feedback: Show processing indicator (green ●) during re-linting
  • Error handling: Display error messages if the updated spec becomes invalid

Example usage:

vacuum dashboard my-spec.yaml --watch
# or
vacuum dashboard my-spec.yaml -W

The dashboard will show a colored indicator in the status bar:

  • Green ●: Currently processing file changes
  • Red ●: Error occurred during re-linting