Open hoppscotch.io, paste a URL, hit Send. Hoppscotch describes itself the same way: its FAQ calls it "a web-based alternative to Postman, Insomnia, and Paw", and the first feature in its README is "Lightweight".
If you're testing a service on localhost:8080 or a staging box, though, the browser tab sends the request and CORS rules apply. So the lightweight client has picked up a proxy, a local Agent and a browser extension whose Firefox listing says it "removes CORS restrictions for cross-origin requests, particularly those to localhost".
Tetiva has no browser in that path. It's a desktop app for HTTP, GraphQL, WebSocket and gRPC (unary only), and the app sends each request itself. You don't need an account, and your collections stay in a file on your disk.

What happens in the browser
The web app has a few ways to send a request, which Hoppscotch calls interceptors. By default the tab sends it and CORS applies. Proxy serializes the whole request, headers and body included, posts it to proxy.hoppscotch.io, and Hoppscotch's server makes the call; you can point it at your own Proxyscotch instead. Hoppscotch's proxy can't reach a service on your localhost: to it, localhost is its own machine. Agent and the browser extension work around CORS on your machine once you install and configure them.
Signed out, the web app keeps collections, environments and history in the browser's localStorage, so clearing site data takes them with it. Its code also initializes PostHog, and the Telemetry setting is on by default, with an opt-out under Settings. Tetiva keeps collections, environments and history in ~/.tetiva/data.db, an unencrypted SQLite file, and the client has no usage analytics.
If you're already on Hoppscotch Desktop
Hoppscotch Desktop sends requests itself, so CORS doesn't get in the way. It still has no gRPC, though: the feature request has been open since December 2019. Tetiva calls gRPC services using a schema from server reflection or .proto files, with one limit: unary methods only. A server behind TLS is called with a grpcs:// address.


Hoppscotch keeps the URL and the Params tab apart; in issue #2227 a maintainer says that keeps long URLs readable. Tetiva keeps them in sync: type ?page=2 and a row shows up in the table, edit a cell and the URL is rebuilt. WebSocket messages you send over and over can be saved with the request; in Hoppscotch that's still an open feature request, #3311.
On Linux, Hoppscotch Desktop 26.9.0 ships for x64 only and needs glibc 2.38; its README recommends Ubuntu 24.04 or newer. Tetiva runs on Ubuntu 22.04 and Debian 12, and has arm64 builds for Linux and Windows.
An MCP server that reads local data
Hoppscotch's MCP server is a separate npm package. It needs Node.js 22 and a Hoppscotch account, and it works with what's stored in that account.
Tetiva's MCP server runs inside the desktop app at 127.0.0.1:9300 and works on the local database: an agent can read and create collections, requests and environments and run saved requests. Enable it in Settings and restart the app, then connect the agent with the token. You don't need a Tetiva account for it.
When Hoppscotch is the better fit
Hoppscotch runs in a browser with nothing to install, and you can share a request as a link. It's MIT-licensed, and the free Community Edition lets you host the web app, teams and admin panel yourself.
Hoppscotch also supports SSE, Socket.IO and MQTT, none of which Tetiva has. It has mock servers, versioned published docs, a Collection Runner with CSV and JSON data sets, and a CLI that runs collections in CI with JUnit reports; some of that is on paid plans. Hoppscotch scripts can send requests of their own with pm.sendRequest and fetch; Tetiva's sandbox has no network access.
Moving requests from Hoppscotch
You can move a collection as a file. In Hoppscotch, export one collection or all of them (Export all) as JSON. In Tetiva, click the import button above the collection tree and pick Import File… from the menu. GraphQL collections come across the same way.
Folders, bodies, auth and saved responses arrive with the requests, and <<var>> becomes {{var}}. Collection and folder headers are copied into their requests, and collection and request variables go into an environment named after the collection. If a folder turned auth off in Hoppscotch, the confirmation dialog names it: in Tetiva its requests still inherit the parent's auth.
A Hoppscotch environment file, holding one environment or a list, imports the same way or from the Manage Environments dialog. Hoppscotch exports secret values empty, and Tetiva lists the variables to fill in.
Scripts come in only when you tick Import scripts. Ones written for pw.* or hopp.* need rewriting to pm.*; pm.* scripts run as long as they don't call pm.sendRequest, pm.globals or fetch, which Tetiva doesn't have. A single request can still move as cURL: Generate Code → Shell → cURL in Hoppscotch, then paste into the URL bar of an HTTP request in Tetiva. The import reference has the details.

