CarbonWire

approvedunreviewed

by CarbonConfig

Test REST APIs with a fast HTTP client. Send requests, inspect JSON responses, and import collections from Postman, Insomnia, Bruno, HTTPie and curl, kept as plain files in your vault.

Updated todayMIT

CarbonWire

A fast REST API client for Obsidian. Send HTTP requests, inspect responses and keep your API collections right next to your notes. Bring your collections over from Postman, Insomnia and Bruno, or just paste a curl command.

CarbonWire request and response in Obsidian

Why CarbonWire

  • Fast. The sidebar indexes 5,000 requests in under 5 ms and filters them as you type. Big JSON responses are formatted in the background, so Obsidian stays responsive.
  • Your files, your vault. Collections are plain YAML files in the OpenCollection format that Bruno uses. They sync, diff and version like the rest of your notes, and Bruno's YAML collections open as they are.
  • Bring everything with you. Import from Postman, Insomnia, Bruno, HTTPie, Hoppscotch, curl, HAR and .http files, environments included.
  • Private by design. No account, no cloud, no telemetry. Requests go only where you send them, and secrets stay in Obsidian's secret storage.

Quick start

  1. Select the CarbonWire icon in the ribbon to open your collections.
  2. Select + → New request, or Import to bring in a Postman, Insomnia or Bruno collection.
  3. Type a URL, or paste a curl command, and press Ctrl/Cmd + Enter.
  4. Select Save to keep the request in a collection. From then on, changes save automatically.

Features

Requests

  • Any method, query and path parameters, headers, and JSON, XML, text, form, multipart or file bodies
  • {{variables}} everywhere, shown in blue when defined and red when not, plus dynamic values like {{$guid}} and {{$timestamp}}
  • Auth: Basic, Bearer token, API key, Digest and OAuth 2.0 (client credentials and password)
  • Paste a curl command into the URL bar and the whole request fills in. Copy any request back out as curl.
  • Start a request in a new tab without saving it, then save it to a collection when you want to keep it

Responses

  • Status, time and size at a glance, with live progress while connecting, waiting and downloading
  • Pretty-printed, searchable JSON with syntax colouring, and a JSON tree view for large payloads
  • HTML preview, images and PDFs right in the panel
  • Headers and a timing breakdown: DNS, connect, TLS, waiting and download

Collections and environments

  • Collections and folders share variables, headers and auth with every request inside them
  • One list of environments, one active at a time, each with its own colour. Names like dev, test, staging and prod get matching colours automatically.
  • Drag to reorder or move requests, folders, collections and environments. Sort by name, creation or last update.

History

  • Every request you send is kept with its response, saved or not
  • Open a request and its last response is already there
  • Kept on this device only, never synced

Collections, history and environments

Performance

TaskTime
Index 5,000 requests for the sidebarunder 5 ms
Filter 5,000 requests as you typeunder 1 ms
Sort 5,000 requests by nameabout 1 ms
Import a Postman collection with 1,000 requestsunder 10 ms
Pretty-print a 2.7 MB JSON responseabout 25 ms, off the main thread
Build JSON tree rows for 25,000 objectsunder 5 ms
Time added to each request over Node's own HTTP clientunder 10 µs
Plugin size385 KB, nothing downloaded at runtime

Median times on an Intel Core i5-1135G7 laptop with Node 24. Run npm run bench to measure on your machine.

Import from

SourceWhat comes across
PostmanCollections (v2.0 and v2.1) and environments
Insomniav4 JSON and v5 YAML exports, with environments
Bruno.bru collections and OpenCollection YAML folders
HTTPieDesktop and web exports
HoppscotchCollections and environments
curlAny command, pasted or imported
HARBrowser network exports
.http filesJetBrains HTTP Client and VS Code REST Client, with http-client.env.json

Import dialog detecting a Postman collection

Keyboard shortcuts

ActionShortcut
Send the requestCtrl/Cmd + Enter, or Enter in the URL bar
Save an unsaved requestCtrl/Cmd + S
Find in the response or bodyCtrl/Cmd + F

Commands in the palette: Open collections, New request, Import collection, environment or cURL and Send request. Assign your own hotkeys to any of them.

Settings

SettingDefaultWhat it does
Collections folderAPI CollectionsWhere new collections are created. Existing collections are found anywhere in the vault.
Environments folderAPI Collections/EnvironmentsWhere environments are kept. They're shared by every collection.
Response size limit20 MBLarger bodies are cut short in memory; the full size is still shown.
History size100How many recent requests to keep. Set to 0 to turn history off.
Wrap long lines in responsesOnWraps long lines instead of scrolling sideways. Also on the response toolbar.
Verify TLS certificatesOnTurn off only for local servers with self-signed certificates.

Install

In Obsidian, open Settings → Community plugins → Browse, search for CarbonWire, then select Install and Enable.

CarbonWire needs Obsidian 1.11.4 or later, on desktop.

Privacy and network use

  • CarbonWire sends requests only to the URLs you enter, and only when you send them. For OAuth 2.0 it also calls the token URL you set, including when you copy a request as curl.
  • There's no telemetry and no account.
  • A request body can be a file anywhere on your computer, such as -F file=@/path/to/report.pdf in an imported curl command. CarbonWire reads that file only when you send the request, and never writes outside your vault.
  • Secret environment values are kept in Obsidian's secret storage, never in your vault.
  • History, including response bodies up to 1 MB each, stays on this device. Requests are stored as written, so secrets aren't copied into history. Clear it from the History tab or turn it off in settings.
  • HTML previews run no scripts and load nothing from the network.

Coming next

  • Request settings: timeout, redirects and URL encoding
  • Export to Postman and OpenCollection
  • GraphQL
  • gRPC
  • WebSocket and server-sent events
  • OpenAPI import
  • Pre-request and test scripts, with a collection runner
  • Cookies, proxies and client certificates
  • OAuth 2.0 authorization code with PKCE
  • Code snippets for other languages
  • Mobile support

Development

Requires Node 24 (nvm use).

npm install
npm run dev      # rebuild main.js and styles.css on change
npm test         # unit and transport tests
npm run bench    # performance benchmarks
npm run lint
npm run build    # type-check and production build
npm run analyze  # production build with a size breakdown

To try a build, link the repository into a vault's .obsidian/plugins/carbonwire folder and enable CarbonWire under Community plugins.

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.