Skip to content
Back to skills

Hoppscotch

ASecurity

Hoppscotch is an open-source API client for sending and testing REST, GraphQL, WebSocket, SSE, Socket.IO and MQTT requests from the browser, desktop app or a self-hosted server. Use when a user asks to test or debug API endpoints, organize requests into collections, run API tests in CI with the hopp CLI, self-host Hoppscotch, or find an open-source Postman alternative.

  • 142 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added May 29, 2026
developmentjavascriptpythongojavashellbashsqlnodedockerkubernetes

Works with

  • terminal
  • cli
  • api
  • mcp

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add TerminalSkills/skills --skill hoppscotch --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hoppscotch?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hoppscotch
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/terminalskills-hoppscotch/badge)](https://www.skillsdirectory.com/skills/terminalskills-hoppscotch)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: hoppscotch
description: >-
  Hoppscotch is an open-source API client for sending and testing REST,
  GraphQL, WebSocket, SSE, Socket.IO and MQTT requests from the browser,
  desktop app or a self-hosted server. Use when a user asks to test or debug
  API endpoints, organize requests into collections, run API tests in CI with
  the hopp CLI, self-host Hoppscotch, or find an open-source Postman
  alternative.
license: Apache-2.0
compatibility: "Web app (hoppscotch.io), desktop app, or self-hosted with Docker and PostgreSQL; CLI needs Node.js 22+"
metadata:
  author: terminal-skills
  version: "1.1.0"
  category: development
  tags:
    - hoppscotch
    - api-testing
    - postman
    - rest
    - graphql
  repository: https://github.com/hoppscotch/hoppscotch
---

# Hoppscotch

## Overview

Hoppscotch is an open-source API development tool and a lighter alternative to Postman. It sends REST, GraphQL, WebSocket, Server-Sent Events, Socket.IO and MQTT requests, with collections, environments, pre-request scripts, tests and code-snippet generation. It runs as a web app at hoppscotch.io (no account needed for quick requests), as a desktop app, or as a self-hosted instance (Community Edition is MIT licensed; Enterprise adds SSO, SCIM and audit features). Releases are date-versioned; the latest checked is 2026.9.0, and the `@hoppscotch/cli` package is 0.31.x and still labelled alpha.

## Instructions

### Step 1: Send a request and keep it

In the app choose a method, enter the URL, add headers, params, auth or a body, and press Send. Save the request into a collection. Use environments for values that change between servers: a variable `baseUrl` is referenced in URLs, headers and bodies as `<<baseUrl>>`. Browser requests are subject to CORS, so on the web app switch the interceptor to the Hoppscotch Agent (or use the desktop app, which has a native interceptor).

Import from Postman, Insomnia, OpenAPI or HAR through the Importer. Imported Postman scripts are converted only after you consent, and some `pm.*` features (for example `pm.collectionVariables`) are not supported.

### Step 2: Scripts

Pre-request scripts and test scripts are JavaScript. The `hopp` namespace is the current API (experimental sandbox, on by default); the older `pw` namespace still works for existing scripts, and the docs advise against bulk-migrating them yet.

```javascript
// Pre-request: fetch a token once, then attach it to this request
if (!hopp.env.get("accessToken")) {
  const res = await fetch(hopp.env.get("baseUrl") + "/auth/token", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      client_id: hopp.env.get("clientId"),
      client_secret: hopp.env.get("clientSecret"),
    }),
  });
  hopp.env.set("accessToken", (await res.json()).access_token);
}
hopp.request.setHeader("Authorization", "Bearer " + hopp.env.get("accessToken"));
```

```javascript
// Test script
hopp.test("order is created", () => {
  hopp.expect(hopp.response.statusCode).toBe(201);
  const order = hopp.response.body.asJSON();
  hopp.expect(order.items).toHaveLength(2);
});
```

Other helpers: `hopp.env.set/get/delete/reset`, `hopp.env.global.*`, `hopp.request.setUrl/setMethod/setParam/setBody`, `hopp.response.headers/responseTime`, `hopp.cookies.*`. The legacy equivalents are `pw.env.get/set/unset`, `pw.response.status`, `pw.test`, `pw.expect`. There is no `pw.api` helper; use `fetch` for extra HTTP calls (prefer the Agent or Native interceptor in the app).

### Step 3: Run collections from the CLI

```bash
npm install -g @hoppscotch/cli       # requires Node.js 22+; build tools (python3, make, g++) on Linux
hopp --version

# a collection file exported from the app, with an exported environment file
hopp test -e staging.json orders-api.json
hopp test -e staging.json -d 500 orders-api.json --reporter-junit reports/orders-junit.xml

# several rounds with CSV data (header row = variable names)
hopp test orders-api.json --iteration-count 3 --iteration-data customers.csv

# a collection stored in a team workspace (personal workspace collections cannot be run this way)
hopp test clxsntdgh0000lcx9fnits2h8 --token "$HOPP_TOKEN" --server https://hoppscotch.brewline.dev
```

`-e` accepts an environment file or, with a token, an environment id. Create the personal access token in the app under settings; keep it in a CI secret. Exit code is non-zero if any test fails, so the command works as a CI gate. GraphQL requests in a collection run as HTTP POSTs; subscriptions cannot run in the CLI and are reported as errors.

### Step 4: Self-host

Community Edition needs PostgreSQL and a `.env` file (values unquoted) with at least `DATABASE_URL`, a 32-character `DATA_ENCRYPTION_KEY`, `WHITELISTED_ORIGINS`, the `VITE_BASE_URL` / `VITE_ADMIN_URL` URLs and the three `VITE_BACKEND_*` URLs, plus an auth provider (see the Community Edition prerequisites page). The all-in-one image runs the app on 3000, admin dashboard on 3100 and backend on 3170:

```bash
docker pull hoppscotch/hoppscotch
docker run -p 3000:3000 -p 3100:3100 -p 3170:3170 --env-file .env --restart unless-stopped hoppscotch/hoppscotch
```

Before the first start the database needs its tables: open a shell in the image (`docker run -it --entrypoint sh --env-file .env hoppscotch/hoppscotch`) and run `pnpm exec prisma migrate deploy`. Then open the admin dashboard on port 3100 to create the admin account. Individual images `hoppscotch/hoppscotch-frontend`, `-backend` and `-admin` exist for split deployments; a Helm chart covers Kubernetes. For the desktop app, enable subpath access (`ENABLE_SUBPATH_BASED_ACCESS=true`) and expose port 3200 of the frontend.

### Step 5: Let an agent drive it (optional)

Hoppscotch ships an MCP server that exposes collections, environments and request execution to an agent. Register it with `claude mcp add -s user hoppscotch -- npx -y @hoppscotch/mcp-server` (Node.js 22+; sign in with a Cloud or self-hosted account).

## Examples

### Example 1: "Smoke-test the orders API in CI before every deploy"

Export the collection `orders-api.json` and the `staging` environment from the app, commit both, and add a CI step:

```bash
npm install -g @hoppscotch/cli
hopp test -e environments/staging.json orders-api.json --reporter-junit reports/orders-junit.xml
```

Result: each request prints its status and time, each `hopp.test` prints a check mark or a failure, and the job fails on the first broken assertion. Verified on a minimal collection against `https://echo.hoppscotch.io`: output ends with `Test Cases: 0 failed 2 passed` and a JUnit file is written.

### Example 2: "Run Hoppscotch for our team on our own server"

Provision PostgreSQL, write `.env` with the URLs of your host, start the AIO container with the command above, run `pnpm exec prisma migrate deploy`, and open port 3100 to sign in as admin. Invite teammates there; shared workspaces then hold collections and environments for everyone, and CI jobs use `--server` and a personal access token.

## Guidelines

- Keep secrets (`clientSecret`, tokens) in secret environment variables, not in exported collection files that go to Git.
- The CLI is alpha and requires Node.js 22 or newer; pin the version in CI and read release notes before upgrading (it follows 0.x versioning, so a minor bump can break).
- Test scripts decide what counts as failure: a 404 is a valid response to the CLI, so assert on `hopp.response.statusCode`.
- Browser CORS errors are an interceptor problem, not an API bug; switch to the Agent or desktop app.
- Self-hosted instances send anonymous telemetry unless you opt out (see the telemetry page); do not expose ports 3100 and 3170 publicly without a reverse proxy and TLS.
- Not a fit for load testing; use a tool such as k6 for that. For heavy mock-server or contract-testing workflows, look at Postman or Bruno.

Files in this skill

  • SKILL.md2.5 KB
  • _scores.json1.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.