Command line
HarborClient ships as a single product binary. With no arguments it opens the desktop app; with an HTTP method, run, or workflow it acts as a command-line client that shares the same HTTP stack and local data as the GUI. Download and install HarborClient for your platform, then invoke harborclient from a terminal.
harborclient --help
harborclient -VAd-hoc requests
Send a one-off HTTP request without opening the GUI:
harborclient <METHOD> <url> [options]Supported methods: GET, POST, PUT, PATCH, DELETE, HEAD, and OPTIONS (case-insensitive).
harborclient GET https://echo.harborclient.com
harborclient POST https://echo.harborclient.com --json '{"ok":true}'
harborclient GET https://echo.harborclient.com -H 'X-Token: secret' -vThe response body is written to stdout. With -v / --verbose, status and response headers go to stderr so you can pipe the body separately.
Ad-hoc options
| Option | Description |
|---|---|
-H, --header <Name: value> | Add a request header. Repeat for multiple headers. The value is split on the first :. |
-d, --data <body> | Set the request body as a raw string. |
--json <body> | Set a JSON body. Adds Content-Type: application/json when that header is not already set. |
--timeout <ms> | Request timeout in milliseconds. |
--no-verify-ssl | Disable TLS certificate verification. |
-v, --verbose | Print HTTP status and response headers to stderr; body still goes to stdout. |
-h, --help | Show help. Prefer harborclient --help on the product binary. |
Run a collection
Run every request in a saved collection by name or uuid. The CLI reads collections from the same Electron userData directory as the desktop app (for example ~/.config/HarborClient on Linux, ~/Library/Application Support/HarborClient on macOS, and %APPDATA%\HarborClient on Windows).
harborclient run <name-or-uuid> [options]harborclient run "My Collection"
harborclient run <collection-uuid> --stop-on-failure
harborclient run "My Collection" --user-data /path/to/HarborClient| Option | Description |
|---|---|
--user-data <path> | Override the Electron userData directory used to find saved collections. |
--stop-on-failure | Stop after the first failed request or test. |
Run a workflow
Run a saved workflow by name or uuid. Workflows are loaded from the same Electron userData directory as collections (for example ~/.config/HarborClient on Linux, ~/Library/Application Support/HarborClient on macOS, and %APPDATA%\HarborClient on Windows). Create and edit workflows in the GUI first — see Workflows.
Playback is headless: the CLI executes request.load, request.draft, request.send, and environment.activate actions. Pure UI actions (tabs, pages, workspaces) and persistence side effects (request.save, request.create, request.cancel) are skipped. For action coverage and hello-world recipes, see Workflows — Run from the CLI.
harborclient workflow run <name-or-uuid> [options]harborclient workflow run "My Workflow"
harborclient workflow run <workflow-uuid> --stop-on-failure
harborclient workflow run "My Workflow" --export ./results
harborclient workflow run "My Workflow" --user-data /path/to/HarborClient| Option | Description |
|---|---|
--user-data <path> | Override the Electron userData directory used to find saved workflows. |
--stop-on-failure | Stop after the first failed request.send (HTTP status 400 or higher, transport error, or failed test). |
--export <dir> | Write a workflow-run JSON export to this directory (workflow-yyyy-mm-dd-hh-mm-ss.json). |
Exit codes
| Code | Meaning |
|---|---|
0 | Success (ad-hoc requests also require an HTTP status below 400). |
1 | Transport error, missing or invalid arguments, unknown option, failed collection or workflow run, missing workflow/collection, or (for ad-hoc) HTTP status ≥ 400. |
Verbose logging
HarborClient supports optional main-process logging for troubleshooting.
| Flag | Environment variable | What is logged |
|---|---|---|
-v / --verbose | HARBOR_VERBOSE=1 | Startup steps and diagnostic output |
-vv / --very-verbose | HARBOR_VERBOSE=2 | Everything in -v, plus each outbound HTTP request's method, URL, request headers, and body |
Response headers and response bodies are never logged, even with -vv.
These flags and HARBOR_VERBOSE control console output only. To write the same diagnostic channels to a rotating log file on disk, set Log file path in Settings → General. When a path is configured, HarborClient writes [verbose] and [request] lines to that file regardless of whether you pass -v or -vv. See Settings — Diagnostic log file for rotation defaults and Browse behavior.
Packaged build:
./HarborClient -v
./HarborClient -vvDevelopment:
pnpm dev -- -v
pnpm dev -- -vvSeed collection
Pass --seed on startup to ensure the HarborClient Echo sample collection exists. The flag is idempotent: it imports the collection only when it is missing.
Packaged build:
./HarborClient --seedDevelopment:
pnpm dev -- --seedPlugins
Pass --disable-plugins on startup to keep every plugin inactive for that session only. Saved enablement in Settings is unchanged; plugins return to their previous on/off state on the next launch without the flag.
Packaged build:
./HarborClient --disable-pluginsDevelopment:
pnpm dev -- --disable-pluginsTheme
Pass --theme on startup to use a built-in appearance theme for that session only. Saved Settings are unchanged; the theme returns to your stored preference on the next launch without the flag.
| Value | Description |
|---|---|
light | Light theme |
dark | Dark theme |
system | Match the operating system preference |
high-contrast | High-contrast theme (aliases: high contrast, high_contrast) |
Packaged build:
./HarborClient --theme dark
./HarborClient --theme high-contrastDevelopment:
pnpm dev -- --theme dark
pnpm dev -- --theme high-contrastQuit without warning
Pass --quit-without-warning on startup to close or quit the app without prompting when request tabs have unsaved changes. Unsaved edits are discarded.
To make this behavior persistent without passing the flag on every launch, uncheck Warn when exiting the app with unsaved changes in Settings → General. See Settings — Unsaved changes and confirmations.
Packaged build:
./HarborClient --quit-without-warningDevelopment:
pnpm dev -- --quit-without-warningTheme picker
Pass --pick-theme on startup to open the appearance theme picker on launch. HarborClient also shows this picker automatically on first install until you choose a theme.
Packaged build:
./HarborClient --pick-themeDevelopment:
pnpm dev -- --pick-themeRandom user directory
Pass --rand-user-dir on startup to use an isolated temporary profile in the OS temp directory, as if HarborClient were installed on a fresh machine. Settings, databases, plugins, and session storage are written only to that directory—not your normal profile.
On normal quit HarborClient removes the temporary directory. Abnormal termination (for example kill -9 or a crash) may leave it behind.
Combine with -v to print the temporary path in startup logs. This is useful for testing first-run behavior, the theme picker, or reproducing issues without touching your saved data.
Packaged build:
./HarborClient --rand-user-dir
./HarborClient --rand-user-dir -vDevelopment:
pnpm dev -- --rand-user-dir
pnpm dev -- --rand-user-dir -vGUI vs CLI
The same binary serves both modes. Empty argv or GUI-only flags open the desktop app; an HTTP method, run, or workflow as the first argument routes to the CLI.
harborclient --verbose/harborclient -v(with no method) opens the GUI with main-process verbose logging. See Verbose logging.harborclient GET https://echo.harborclient.com -vis CLI verbose: status and response headers on stderr.
Desktop startup flags such as --seed, --theme, and --disable-plugins are documented under Getting started. They are not CLI request options.
What's next
- Download — install HarborClient for your operating system.
- Getting started — launch the desktop app and use startup flags.
- Making requests — build, send, and inspect HTTP requests in the GUI.
- Collections — organize saved requests and run them from the sidebar or CLI.
- Workflows — record multi-step sessions and run them from the GUI or CLI.
