Signoff Studio — API Client & Database Workbench for VS Code
A REST/HTTP, GraphQL, WebSocket, SSE, gRPC & MQTT API client, collection runner, and SQL database workbench — without leaving your editor.
Signoff Studio brings collections, environments, scripts, a collection runner, and a multi-engine Database Workbench (PostgreSQL, MySQL, SQL Server, Oracle, SQLite) into Visual Studio Code. Your workspaces stay on disk, ready for Git, so the same requests you craft locally can travel with your team.
Free on the Visual Studio Marketplace. Publisher: SAMUCCAYA TECH LLP (QASignoff). Privacy: qasignoff.com/privacy.
Website: qasignoff.com · Product: qasignoff.com/product · Questions: hello@qasignoff.com · Bugs: fixit@qasignoff.com
Why Signoff Studio?
- Stay in flow — Send requests, inspect responses, and run collections beside your code — no context switch to a separate desktop client.
- Local-first workspaces — Collections, environments, runner plans, and database metadata live as files on your machine. Commit them, review them, share them.
- Import what you already have — Bring in Postman, Bruno, Hoppscotch, Thunder Client, Insomnia, OpenAPI/Swagger (JSON or YAML), or cURL and keep building. Link a spec on a collection and Sync from OpenAPI when the contract changes.
- API + data in one place — Validate APIs and query Postgres, MySQL, SQL Server, Oracle, or SQLite from the same studio.
Getting Started
- Install Signoff Studio from the VS Code Marketplace.
- Open the Signoff Studio icon in the Activity Bar.
- Click Open Signoff Studio (or run Signoff Studio: Open from the Command Palette).
- Create a request, open a workspace, or import an existing collection to get started.
Updates
When you install from the VS Code Marketplace, VS Code updates the extension automatically.
Sideloaded .vsix installs (local npm run install:vscode-extension) do not receive Marketplace auto-updates — reinstall a newer VSIX or switch to the Marketplace install for production use.
Features
Request builder
- Protocols: REST/HTTP, GraphQL, WebSocket, SSE (Server-Sent Events), gRPC (unary + server/client/bidi streaming, Discover via reflection), and MQTT
- REST methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Query params, headers, cookies, and flexible bodies
- Body editors for JSON, raw, XML, text, HTML, form-urlencoded, form-data, GraphQL (introspect + schema docs + field/arg autocomplete), SOAP, and binary
- Stream timeline for WebSocket frames, SSE events, gRPC messages, and MQTT publishes
- Response inspection with status, timing, size, and copy/download helpers
- Code generation for cURL and common languages (JavaScript, Python, Java, C#, Go, PowerShell, and more)
Collections & environments
- Organize requests in collections and folders
- Request history for quick revisits
- Environments with
{{variable}} substitution across URLs, headers, params, and bodies
Scripting & auth
- Sandboxed JavaScript pre-request and response-test scripts
- Postman-style
pm.* compatibility, plus Bruno bru.*, Hoppscotch pw.*, Insomnia insomnia.*, and Thunder Client tc.* for imported scripts
- Scriptless GUI asserts on the Tests tab (status, latency, header, body, JSONPath) plus stream asserts for WS/SSE/gRPC
- Auth helpers: Basic, Bearer, API key, OAuth 2 (Get New Access Token for authorization code + PKCE, client credentials, refresh token; automatic refresh-on-401 when a refresh token is stored; paste-token for other grants), and custom headers
Imports & exports
- Import: Postman v2.0 / v2.1, Bruno (including auth inside the method block, asserts, and post-response vars), Hoppscotch (including collection and folder auth), Thunder Client, Insomnia v4 JSON and v5 YAML/JSON (including folder auth and scripts), OpenAPI / Swagger (JSON or YAML), cURL, and Signoff Collection / Environment. NTLM, Digest signing, OAuth 1 signing, and file uploads from disk are not executed; the import keeps the fields it can and warns at send.
- Sync from OpenAPI: Link a JSON/YAML spec on a collection; match by
operationId or method+path; review adds / updates / orphans (keep or delete)
- Local mock: Start / Stop on a collection or folder (context menu, collection toolbar, Runner toolbar, Settings). Loopback
127.0.0.1 only (mock.start / mock.stop / mock.status / mock.logs). Saved examples win, then OpenAPI examples or schema stubs. CLI: npm run mock -- --workspace <abs> --collection <id|name>. Not a cloud mock. Restart after OpenAPI sync.
- MCP: Local stdio server
npm run mcp -- --workspace <abs>. Copy MCP config in Collection Settings. Tools list and run the open workspace; secrets are redacted. See src/mcp/README.md.
- Cookie jar: Send/Store cookies use the extension host jar (
cookies.list / cookies.clear / cookies.apply), same rules as the Windows app and CLI. pm.cookies and pm.execution.setNextRequest / skipRequest work in collection runs. pm.visualizer.set shows static HTML in the response pane.
- AWS Signature and Hawk are signed in the extension host before the request is sent. NTLM is still not supported.
- GraphQL subscriptions (
subscription operations) open graphql-ws on the host WebSocket. Stop ends the session. Events appear on the Stream timeline. Queries and mutations stay HTTP.
- Export: Signoff (default), plus optional Postman Collection v2.1, Bruno folder/ZIP, and OpenAPI 3 — choose in the Export dialog
Collection runner & reports
- Run collections or folders with iterations and CSV/JSON datasets
- Parallel workers and run history
- Local monitors (Scheduler): schedule collection runs while the Runner panel is open; fail notifications; open last-run report; definitions sync with workspace
runner/schedules.json. For always-on monitors, use the Windows app
- Reports in JSON, HTML, PDF (print of the HTML report), JUnit, and CSV. The report header has Export HTML and Export PDF for the full run (not only the visible page). PDF uses Edge/Chrome headless when available; otherwise open HTML and Print → Save as PDF. CLI:
--reporters pdf (set SIGNOFF_CHROME_PATH if needed)
- Headless CI CLI (
npm run runner) loads Signoff or Postman collections, supports --env-file / --folder / --request, and exits 1 on assertion failures (see root README)
- Local load (Runner Load tab /
npm run runner -- load): process-local VUs with duration, ramp, p95 / error-rate thresholds (soft cap 50 VUs). Not distributed cloud load.
Local Git-friendly workspace
Use Workspace → New / Open / Duplicate as to store (changes are kept automatically):
signoff-workspace.json — workspace manifest
collections/ — one request per JSON file
environments/, runner/plans/, runner/schedules.json, database/
Secrets stay out of Git via .gitignore and .env.example patterns. Ideal for PR-based collaboration. Workspace JSON is written with sorted keys so request-file diffs stay readable. Normalize a folder with npm run workspace:normalize -- --workspace <path> (add --check in CI). Signoff JSON stays canonical; use Export → Bruno when a PR needs Bruno-style plaintext review.
Git operations stay in VS Code Source Control. Signoff Studio does not add a competing Git tab in the extension; the Windows app still includes a Git workbench.
Database Workbench
- Connect to PostgreSQL, MySQL, SQL Server, Oracle, and SQLite
- SQL editor, schema browser, and connection testing
- CSV result export, encrypted credential vault, and confirmations for risky queries
Tips for a smooth first session
- Prefer a dedicated workspace folder if you plan to share collections with your team.
- Start with an environment for
dev / staging before hard-coding hostnames.
- Import a Postman or Bruno collection if you already have one — then refine tests and variables in-studio.
Links
License
Signoff Studio is proprietary software. See the LICENSE file bundled with this extension and the Terms on our website.
Built by the QASignoff team. Questions: hello@qasignoff.com. Something broken? fixit@qasignoff.com.
| |