brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
hoppscotchHoppscotch 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 …
Independent GitHub snapshot · Automated classification · Original documentation governs
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.
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.
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.
// 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"));
// 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).
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.
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:
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.
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).
Export the collection orders-api.json and the staging environment from the app, commit both, and add a CI step:
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.
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.
clientSecret, tokens) in secret environment variables, not in exported collection files that go to Git.hopp.response.statusCode.