13 programs — one per Sterling-supported language — that demonstrate the Vers VM lifecycle with headless Chrome:
- Create a root VM
- Install Chromium + puppeteer-core via
vers exec - Commit the VM (golden image)
- Branch from the commit (instant CoW clone)
- Scrape example.com with headless Chrome + puppeteer inside the VM
- Clean up — delete all VMs even on crash, signal, or error
| Language | SDK | Registry / Install |
|---|---|---|
| TypeScript | vers-sdk |
npm ^0.1.8 |
| Python | vers-sdk |
PyPI >=0.1.8 |
| Rust | vers-sdk |
crates.io 0.1.8 |
| Go | github.com/hdresearch/go-sdk |
Go proxy v0.1.8 |
| Java | sh.vers:vers-sdk |
Maven Central 0.1.8 |
| Kotlin | sh.vers:vers-sdk |
Maven Central 0.1.8 |
| Ruby | vers-sdk |
RubyGems ~> 0.1.8 |
| PHP | vers/sdk |
Packagist dev-main |
| C# | vers-sdk |
NuGet 0.1.8 |
| Dart | vers_sdk |
Git (hdresearch/dart-sdk) |
| Scala | sh.vers:vers-sdk |
Maven Central 0.1.8 |
| Swift | swift-sdk |
SwiftPM (hdresearch/swift-sdk) |
| Zig | vers_sdk |
Zig package (hdresearch/zig-sdk) |
VERS_API_KEYenvironment variableversCLI on PATH- Language toolchains (auto-detected by
run-all.sh, missing ones are skipped)
TypeScript: node, npm, npx (tsx)
Python: python3, pip
Rust: cargo, rustc
Go: go
Java: mvn, java (JDK 21+)
Kotlin: gradle, java (JDK 21+)
Ruby: ruby, bundle
PHP: php, composer
C#: dotnet (8+)
Dart: dart
Scala: sbt, java (JDK 21+)
Swift: swift (5.9+)
Zig: zig (0.15+)
Run all languages (skips any with missing toolchains):
VERS_API_KEY=... ./run-all.shRun specific languages:
VERS_API_KEY=... ./run-all.sh typescript python go dartAll 13 programs follow the same pattern:
SDK: createNewRootVm() → vers exec: install.sh → SDK: commitVm() → SDK: deleteVm()
↓
SDK: branchByCommit() → vers exec: scrape.sh → parse JSON → SDK: deleteVm()
- VM lifecycle: Each language's Vers SDK handles create/commit/branch/delete
- In-VM commands:
vers exec -i -t <timeout> <vm_id> bashpipes scripts into the VM - Scraping: Chrome runs on
localhost:9222inside the VM; puppeteer-core connects locally - No external network exposure needed — everything runs inside the VM over
vers exec