Skip to main content

PyPI CI Python

VIP - Verified Installation of Posit

An open-source, extensible test suite that validates Posit Team deployments are installed correctly and functioning properly.

VIP uses BDD-style tests (pytest-bdd + Playwright) to verify Connect, Workbench, and Package Manager deployments. Results can be viewed from the command-line output or compiled into an HTML report.

Documentation: https://posit-dev.github.io/vip/

Quick start

uv tool install posit-vip
vip install
vip verify --connect-url https://connect.example.com --interactive-auth

Run VIP from your own workstation or a CI runner, not the Connect, Workbench, or Package Manager servers themselves: VIP checks the deployment the way a real client would (over the same URL, proxy, and TLS termination your users go through), and --interactive-auth opens a visible browser window that those servers typically don't have a display for. On a headless server, use --headless-auth or --api-auth instead (see below).

Reproducible install

uv tool install posit-vip resolves the newest versions each release allows. To install the exact set a release was tested against, pass that release's constraints file (attached to every GitHub release as constraints-<version>.txt):

uv tool install posit-vip \
  -c https://github.com/posit-dev/vip/releases/download/vX.Y.Z/constraints-X.Y.Z.txt

Replace X.Y.Z with the release you are installing (see the releases page).

For a fully pinned, batteries-included environment, use the container image, which installs from the committed uv.lock:

docker run --rm -v "$PWD/vip.toml:/app/vip.toml" ghcr.io/posit-dev/vip:latest

On a headless server (no display), use --headless-auth instead:

vip verify --config vip.toml --headless-auth

Run a specific test by name:

vip verify --connect-url https://connect.example.com --filter test_login

With a configuration file:

cp vip.toml.example vip.toml     # edit with your deployment details
vip verify --config vip.toml

Fast confidence check — skip the detailed/long-running checks:

vip verify --config vip.toml --basic

Uninstalling

To reverse what vip install (or just setup) did:

vip uninstall        # dry run; prints the full plan including any sudo command
vip uninstall --yes  # remove Playwright cache + manifest; prints the sudo command
                     # for any system packages so you can remove them yourself

uv tool uninstall posit-vip  # remove vip itself once you're done

vip uninstall only removes packages and files that vip install recorded in .vip-install.json; anything that was already on your machine before running vip install is left alone.

If a Connect URL is configured (in vip.toml or via --connect-url), vip uninstall chains vip cleanup first to remove _vip_test-tagged content from Connect.

CLI commands

Command Description
vip verify Run verification tests against a Posit Team deployment
vip status Quick health check for each configured product
vip cleanup Delete VIP _vip_test content from Connect
vip report Render the HTML report from test results (requires Quarto CLI)
vip auth Authentication tools (e.g. mint Connect API keys)
vip version Print the vip version and the minimum supported Posit Team version
vip --version Print the installed vip version

Run vip --help or vip <command> --help for full usage details.

CI / pipeline integration

VIP emits machine-readable output for security-ops and CI/CD pipelines.

vip verify always writes report/results.json (and report/failures.json on failures). Add JUnit XML and/or SARIF with --format:

vip verify --format json,junit,sarif
# report/results.json   (always)
# report/junit.xml       (--format junit)  -> CI test dashboards
# report/results.sarif   (--format sarif)  -> GitHub code scanning / secops

Skip messages in the JUnit and SARIF output carry the actual skip reason instead of a generic "skipped" label. results.json also records provenance for the run (VIP version, duration, Python version, platform, and whether the slow checks were excluded) so an archived report can be traced back to what produced it.

The --ci preset bundles all three formats with concise tracebacks (--tb=short) and overrides --format if both are given. Run it without --interactive-auth/ --headless-auth -- combining them is an error, since --ci is meant for non-interactive pipelines:

vip verify --ci

Container

An official image is published to ghcr.io/posit-dev/vip. The entrypoint is the vip CLI; the default subcommand is verify. Because docker run args replace the default command (they do not append to it), name the verify subcommand explicitly when passing verify flags:

# bare invocation runs `vip verify`:
docker run --rm -v "$PWD/vip.toml:/app/vip.toml" ghcr.io/posit-dev/vip
# CI preset (name the subcommand so args don't replace it):
docker run --rm -v "$PWD/vip.toml:/app/vip.toml" ghcr.io/posit-dev/vip verify --ci
# other subcommands are reachable too:
docker run --rm -v "$PWD/vip.toml:/app/vip.toml" ghcr.io/posit-dev/vip status --json

Development

See docs/development.md for dev setup, linting, and formatting.

For the test architecture and four-layer design, see docs/test-architecture.md.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

posit_vip-2026.8.3.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

posit_vip-2026.8.3-py3-none-any.whl (455.3 kB view details)

Uploaded Python 3

File details

Details for the file posit_vip-2026.8.3.tar.gz.

File metadata

  • Download URL: posit_vip-2026.8.3.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for posit_vip-2026.8.3.tar.gz
Algorithm Hash digest
SHA256 d86b0d2a8028e821375604296766f054d7c5e158a183c62370ed037e1e4c8d22
MD5 852ec666bebed5b79ab99082a50beadc
BLAKE2b-256 18bf442d038d6124f620f40a9bce07f53538baa773d6648d6e265889b19a21eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for posit_vip-2026.8.3.tar.gz:

Publisher: publish.yml on posit-dev/vip

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file posit_vip-2026.8.3-py3-none-any.whl.

File metadata

  • Download URL: posit_vip-2026.8.3-py3-none-any.whl
  • Upload date:
  • Size: 455.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for posit_vip-2026.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 521bad613acd91638025d89b469b3cfa1306399542a8f08119c0a3990f12766a
MD5 76863a0d1fc7febb4c3250fefaba4daa
BLAKE2b-256 23eb93b988a1f7e00cf136d416977d33eb54cb450d25ae4c83b369039f55a1ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for posit_vip-2026.8.3-py3-none-any.whl:

Publisher: publish.yml on posit-dev/vip

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2026.8.3 This release

2 files

2026.8.2

2 files

2026.8.1

2 files

2026.8.0

2 files

2026.7.0

2 files

0.58.18

2 files

0.58.17

2 files

0.58.16

2 files

0.58.15

2 files

0.58.14

2 files

0.58.13

2 files

0.58.12

2 files

0.58.11

2 files

0.58.10

2 files

0.58.9

2 files

0.58.8

2 files

0.58.7

2 files

0.58.6

2 files

0.58.5

2 files

0.58.4

2 files

0.58.3

2 files

0.58.2

2 files

0.58.1

2 files

0.58.0

2 files

0.57.1

2 files

0.57.0

2 files

0.56.0

2 files

0.55.3

2 files

0.55.2

2 files

0.55.1

2 files

0.55.0

2 files

0.54.8

2 files

0.54.7

2 files

0.54.6

2 files

0.54.5

2 files

0.54.4

2 files

0.54.3

2 files

0.54.2

2 files

0.54.1

2 files

0.54.0

2 files

0.53.1

2 files

0.53.0

2 files

0.52.4

2 files

0.52.3

2 files

0.52.2

2 files

0.52.1

2 files

0.52.0

2 files

0.51.0

2 files

0.50.1

2 files

0.50.0

2 files

0.49.2

2 files

0.49.1

2 files

0.49.0

2 files

0.48.3

2 files

0.48.2

2 files

0.48.1

2 files

0.48.0

2 files

0.47.0

2 files

0.46.3

2 files

0.46.2

2 files

0.46.1

2 files

0.46.0

2 files

0.45.0

2 files

0.44.0

2 files

0.43.0

2 files

0.42.0

2 files

0.41.3

2 files

0.41.2

2 files

0.41.1

2 files

0.41.0

2 files

0.40.0

2 files

0.39.1

2 files

0.39.0

2 files

0.38.0

2 files

0.37.0

2 files

0.36.7

2 files

0.36.6

2 files

0.36.5

2 files

0.36.4

2 files

0.36.3

2 files

0.36.2

2 files

0.36.1

2 files

0.36.0

2 files

0.35.2

2 files

0.35.1

2 files

0.35.0

2 files

0.34.1

2 files

0.34.0

2 files

0.33.1

2 files

0.33.0

2 files

0.32.1

2 files

0.32.0

2 files

0.31.2

2 files

0.31.1

2 files

0.31.0

2 files

0.30.1

2 files

0.30.0

2 files

0.29.1

2 files

0.29.0

2 files

0.28.0

2 files

0.27.0

2 files

0.26.8

2 files

0.26.7

2 files

0.26.6

2 files

0.26.5

2 files

0.26.4

2 files

0.26.3

2 files

0.26.2

2 files

0.26.0

2 files

0.25.0

2 files

0.24.10

2 files

0.24.9

2 files

0.24.8

2 files

0.24.7

2 files

0.24.6

2 files

0.24.5

2 files

0.24.4

2 files

0.24.3

2 files

0.24.2

2 files

0.24.1

2 files

0.24.0

2 files

0.23.0

2 files

0.22.0

2 files

0.21.1

2 files

0.21.0

2 files

0.20.1

2 files

0.20.0

2 files

0.19.1

2 files

0.19.0

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.15.0

2 files

0.14.0

2 files

0.13.2

2 files

0.13.1

2 files

0.13.0

2 files

0.12.2

2 files

0.12.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page