Gopher Glide for VS Code

Gopher Glide (gg) is a modern, zero-scripting API traffic simulation and performance benchmarking CLI built in Go — a lightweight alternative to tools like k6, Gatling, or Locust that runs straight from standard .http files. No agents, no servers to stand up, no boilerplate code.
This extension brings gg's traffic-simulation workflow directly into VS Code:
- One-click runs — execute a traffic simulation, or scaffold a new run config, straight from any
.http file or .gg.yaml config via CodeLens, the editor title bar, or the right-click menu, with a built-in profile picker (smoke, load, stress, soak, spike, and 16 more) for zero-config runs.
- Native run dashboard — a dedicated Gopher Glide panel shows a live stage timeline, RPS chart, error rate, and latency percentiles while a simulation runs — no terminal TUI involved.
- Live control — steer a run while it is going: nudge the target rate up or down with bias steppers, drop labeled marks at moments that matter (a deploy, a cache flush), and stop cleanly so the snapshot is saved. Needs
gg v1.3.0 or newer — see Live control.
- Native snapshot workflow — browse, view, and diff
gg's semantic JSON snapshots in an interactive split-pane panel (sortable/searchable endpoint table, expandable inferred-schema tree, status-code distribution charts, and the marks and bias changes made during the run), run gg snap assert to gate regressions, and prune old snapshots by ID, tag, or age — entirely inside the panel, no terminal involved.
- Schema-validated config — JSON Schema completion and validation for
.gg.yaml files, covering stages, snapshot tuning, and built-in profiles.
- Zero manual setup — the extension downloads and manages the
gg binary for you, with update checks and diagnostics built into Settings → Gopher Glide.
Learn more and read the full docs at gopherglide.dev.
Features
- Run
.http files against a profile — pick from 21 built-in profiles (flash-sale, soak, chaos, ddos, etc.) or a custom one, with RPS/duration overrides and optional snapshot capture.
- Run
.gg.yaml config files directly — the config is the single source of truth, no profile picker needed.
- Live run dashboard — status, elapsed time, target/actual RPS, error rate, latency percentiles (p50/p95/p99), an RPS chart, and a stage timeline, updated in real time from
gg's headless heartbeat stream.
- Live control (
gg v1.3.0+) — bias steppers (-10, -5, +5, +10, Reset) with a badge showing the bias in effect, a Drop Mark button for labeled annotations, and a clean Stop (with Force Stop as a fallback). Bias changes and marks are drawn on the RPS chart and saved in the snapshot. See Live control.
- Snapshot workflows — browse captured snapshots in a tree view, then view endpoint detail, diff two snapshots, run
gg snap assert as a CI-style gate, or prune old snapshots.
- Snapshot view & diff panels — a split-pane layout with a resizable, searchable endpoint table on the left and a detail pane on the right showing an expandable inferred-schema tree (with per-field type, presence %, and stability) and status-code distribution charts; the view lists the marks and bias changes recorded during the run (with final and peak bias), and the diff panel overlays baseline vs. target with regression/improvement/added/removed indicators per endpoint and per schema field, plus a notice when either run had manual changes. Toggle table columns on/off and the selection is remembered per view.
.gg.yaml language support — schema-driven autocomplete/validation, plus Ctrl+Click navigation from httpFile: to the referenced .http file.
- Scaffolding — generate a
.gg.yaml config next to an existing .http file, or create a new .http test file pre-filled with the profile list.
- Auto-managed
gg binary — detects, downloads, and updates the gg CLI for you, with a status bar indicator and manual override via gg.binaryPath.
- CodeLens, editor title button, and right-click context menu entry points on
.http/.rest/.gg.yaml files.
Requirements
This extension drives the gg CLI. By default it downloads and manages the right binary for your platform automatically on first use — no manual install needed. See gopherglide.dev for CLI documentation and .http/.gg.yaml file format details.
Live control needs gg v1.3.0 or newer. Everything else works with older versions; on an older gg the run dashboard simply stays read-only (see Live control). The auto-managed binary is kept up to date, so most installs get live control without doing anything.
Live control
Once a run starts, the dashboard shows a Director Bias bar and a Drop Mark button above the chart:
- Bias steppers (
-10, -5, +5, +10) raise or lower the target request rate on top of whatever the profile is doing; the badge shows the total bias in effect and Reset returns it to 0. gg applies a change within about a second; the chart and target-RPS card follow at the next heartbeat (every 5 s by default — lower gg.heartbeatIntervalSeconds for snappier feedback).
- Drop Mark asks for a label (for example
cache-cleared) and annotates the run. Marks show as labeled lines on the chart. A mark is stamped at the moment gg receives it, which is when you confirm the label.
- Stop asks
gg to finish the run itself, so a snapshot started with --snap is saved with all your bias changes and marks — on every platform, including Windows. While gg wraps up, the button reads Stopping… and then becomes Force Stop, which kills gg immediately (a snapshot being written is lost).
- Bias changes and marks are stored in the snapshot. View Snapshot lists them under Manual changes, and Diff Snapshots warns when either run had any, because manual bias changes the load and can make peak RPS and latency not like for like.
With an older gg
If the gg in use is older than v1.3.0, the controls are not shown; a notice says Live Control needs Gopher Glide v1.3.0+ (installed: vX) and offers the fitting next step:
How gg was installed |
What the notice offers |
| Downloaded by the extension |
Update gg (available once the run ends) |
Found on $PATH or via GG_PATH |
Install managed gg — a copy managed by the extension, which takes priority; your own gg is left untouched |
Picked with Select Binary Path, or gg.installationMode is pathOnly |
Open Settings — the extension never replaces a binary you chose, so update that gg yourself |
The run itself is unaffected: it runs, charts and saves snapshots as before, and Stop ends it with a signal (gg still writes the snapshot on macOS and Linux).
Extension Settings
| Setting |
Type |
Default |
Description |
gg.binaryPath |
string |
"" |
Absolute path to the gg binary. Leave empty to use the auto-managed binary (or $PATH). |
gg.autoUpdateCheck |
boolean |
true |
Automatically check for a newer gg CLI version on activation. |
gg.installationMode |
string |
"auto" |
auto downloads/updates automatically, manual prompts first, pathOnly never downloads. |
gg.defaultProfile |
string |
"" |
Profile to pre-select in the Quick Pick (e.g. flash-sale). Leave empty to always prompt. |
gg.snapshotsDir |
string |
"" |
Override directory for snapshot storage (--snap-dir). Leave empty for gg's platform default. |
gg.heartbeatIntervalSeconds |
number |
0 |
Heartbeat cadence for headless runs (--heartbeat-interval). 0 uses gg's own default (5s). |
Commands
| Command |
Title |
gg.run |
Run |
gg.runConfig |
Run (Config) |
gg.copyCommand |
Copy Command |
gg.generateConfig |
Generate Config |
gg.newHttpTest |
New HTTP Test File |
gg.refreshSnaps |
Refresh Snapshots |
gg.viewSnap |
View Snapshot |
gg.diffSnaps |
Diff Snapshots |
gg.assertSnaps |
Assert Snapshots |
gg.pruneSnaps |
Prune Snapshots |
gg.selectBinaryPath |
Select Binary Path |
gg.checkForUpdates |
Check for Updates / Install |
gg.openSettings |
Open Settings |
All commands are grouped under the gg category in the Command Palette.
Known Issues
- A mark is timed when
gg receives it, so the time you spend typing its label is included.
- On Windows, only a
gg v1.3.0+ run can be stopped without losing its snapshot; older versions are killed outright by Stop.
Please open an issue if you run into another.
Release Notes
See CHANGELOG.md for the full version history.
License
MIT
| |