<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: open post</title>
    <description>The latest articles on DEV Community by open post (@open-post).</description>
    <link>https://dev.to/open-post</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3852007%2F65273ec0-e3d3-49c3-953c-5e43206aea19.png</url>
      <title>DEV Community: open post</title>
      <link>https://dev.to/open-post</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/open-post"/>
    <language>en</language>
    <item>
      <title>Lens: screenshots and click-by-click guides, with no account and no server</title>
      <dc:creator>open post</dc:creator>
      <pubDate>Thu, 17 Sep 2026 17:32:09 +0000</pubDate>
      <link>https://dev.to/open-post/lens-screenshots-and-click-by-click-guides-with-no-account-and-no-server-5hbi</link>
      <guid>https://dev.to/open-post/lens-screenshots-and-click-by-click-guides-with-no-account-and-no-server-5hbi</guid>
      <description>&lt;p&gt;I write a lot of documentation that is mostly screenshots. Every tool I tried for it wanted an account, uploaded my screenshots to somebody's bucket, and then charged me to export the result as anything other than a link. So I built &lt;a href="https://dev.toSTORE_LINK_HERE"&gt;Lens&lt;/a&gt;, a Chrome and Edge extension (Manifest V3, Chrome 137+) that does the whole job in the browser.&lt;/p&gt;

&lt;p&gt;There is no account, no server and no upload. Every feature works for free. A licence removes an occasional reminder, a Ko-fi link and the watermark on saved images, and that is all it removes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capture
&lt;/h2&gt;

&lt;p&gt;Three hotkeys, rebindable at &lt;code&gt;chrome://extensions/shortcuts&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;macOS&lt;/th&gt;
&lt;th&gt;Windows / Linux&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Capture region&lt;/td&gt;
&lt;td&gt;&lt;code&gt;⌘⇧S&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Alt+Shift+S&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart Capture (step guide)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;⌘⇧E&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Alt+Shift+E&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Record GIF or MP4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;⌘⇧R&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Alt+Shift+R&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The region selection is draggable with a Retina-accurate size readout, so a crop you measure at 800x600 saves at 800x600.&lt;/p&gt;

&lt;h2&gt;
  
  
  Edit and save on one screen
&lt;/h2&gt;

&lt;p&gt;Pen, text, box, circle, arrow and blur, plus crop, colour adjustment, rotation and an exact-pixel resize, with the file name and notes next to them.&lt;/p&gt;

&lt;p&gt;Marks stay editable instead of being painted into the pixels. Move one, retype a label, delete the one in the middle, undo any of it. Nothing is written to disk until you press Save.&lt;/p&gt;

&lt;p&gt;Blur is the exception, because blur rewrites the pixels. That is deliberate, and it matters for the next part.&lt;/p&gt;

&lt;h2&gt;
  
  
  Private data warnings before you save
&lt;/h2&gt;

&lt;p&gt;Before a capture is saved, Lens reads the DOM under the selection and flags passwords, API keys, tokens, JWTs, private keys, email addresses and Luhn-checked card numbers. The rules are plain DOM rules. No model, no network call.&lt;/p&gt;

&lt;p&gt;It offers to blur what it found and never blurs anything for you. Blur is destructive, so it stays your click.&lt;/p&gt;

&lt;h2&gt;
  
  
  Guides from clicks, without a model
&lt;/h2&gt;

&lt;p&gt;Record a walkthrough with &lt;code&gt;⌘⇧E&lt;/code&gt; and every click becomes a step: a screenshot taken at the moment of the click, cropped to the control you clicked, outlined and numbered. There is no video behind it and no time limit.&lt;/p&gt;

&lt;p&gt;The step text comes from the accessible name a screen reader would announce for that control, so "Click &lt;strong&gt;Save changes&lt;/strong&gt;" is generated from the button's own label rather than guessed at by an LLM. Nothing about guide capture involves AI.&lt;/p&gt;

&lt;p&gt;Guides open as a document in their own tab. Markdown sits behind the formatting, and a toggle drops you into that Markdown when you would rather type than click. Reorder steps, retitle them, split an animated step back into its clicks, replace or re-edit any screenshot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Export
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;guide.html&lt;/code&gt;, self-contained, every image inlined, no scripts. One file you can attach to an email, and &lt;code&gt;⌘P&lt;/code&gt; then Save as PDF gets you a PDF.&lt;/li&gt;
&lt;li&gt;Markdown, zipped with its screenshots.&lt;/li&gt;
&lt;li&gt;Rich text on the clipboard, for Confluence, Notion or a doc.&lt;/li&gt;
&lt;li&gt;Every guide at once, as one archive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Import takes a bundle back from a file or a link. Imports are copies, so nothing already on disk is overwritten. There is also a "Find guides on disk" pass that lists guides whose folders exist but whose metadata entry does not, which is how you repair a lost &lt;code&gt;project_metadata.json&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the files live
&lt;/h2&gt;

&lt;p&gt;A project keeps its own captures and guides, so it works with no folder linked at all. Link a folder and every capture is also written there through the File System Access API, with a &lt;code&gt;project_metadata.json&lt;/code&gt; beside them holding the timeline.&lt;/p&gt;

&lt;p&gt;The interesting failure here is the folder grant. Chrome hands that permission back whenever nothing of the extension is running, which used to mean a folder linked in the morning was asking to be reconnected by lunchtime. Now a lapsed grant only means the copy on disk is behind. The capture is saved regardless, the pending writes are remembered, and they are flushed when the folder is reachable again, either because you reconnected it or because you reopened the browser. The project card tells you how many writes are waiting.&lt;/p&gt;

&lt;p&gt;Link a folder to a project that has been running for months and Lens offers to copy the whole history across, tells you how many files and how much disk that is first, and skips files the folder already has.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bring your own AI, off by default
&lt;/h2&gt;

&lt;p&gt;There is an optional assistant. Configure as many models as you like, including the browser's built-in one, a model running on your own machine, Claude, Gemini, OpenAI or any compatible endpoint, and switch between them per message. Each one is usable only after a test that actually reached it.&lt;/p&gt;

&lt;p&gt;The assistant sends what you attach to a message and nothing else. Keys live in their own storage key, read by the service worker and never by a content script sharing a process with the page.&lt;/p&gt;

&lt;p&gt;All of it is off until you turn it on, and every AI-written piece of text has a non-AI fallback behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/lens-by-vectored-tab-capt/gjonlnbkjjlhkcbbebagiadphdfipdki?hl=en&amp;amp;authuser=0" rel="noopener noreferrer"&gt;Lens by Vectored on the Chrome Web Store&lt;/a&gt;. Same package on Edge Add-ons.&lt;/p&gt;

&lt;p&gt;Current version is 1.22.0. If you capture documentation for a living, I would like to know which part of your workflow it still does not cover.&lt;/p&gt;

</description>
      <category>chrome</category>
      <category>extensions</category>
      <category>documentation</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Open Post - Test APIs Without Leaving VS Code</title>
      <dc:creator>open post</dc:creator>
      <pubDate>Mon, 30 Mar 2026 17:29:06 +0000</pubDate>
      <link>https://dev.to/open-post/open-post-test-apis-without-leaving-vs-code-3eg0</link>
      <guid>https://dev.to/open-post/open-post-test-apis-without-leaving-vs-code-3eg0</guid>
      <description>&lt;h2&gt;
  
  
  Open Post: Test APIs Without Leaving VS Code
&lt;/h2&gt;

&lt;p&gt;If you're tired of switching between your code editor and Postman, or concerned about your API credentials living in the cloud, I built something you might like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Post&lt;/strong&gt; is a fully offline REST &amp;amp; GraphQL API client that lives inside VS Code. No accounts, no cloud sync, no telemetry. Just you, your editor, and your APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;I got tired of the constant context-switching. Write code in VS Code, test the API in Postman, copy the cURL command, switch back to VS Code, paste it somewhere... you know the drill.&lt;/p&gt;

&lt;p&gt;Plus, I never felt comfortable with my API keys and tokens syncing to someone else's cloud. Call me paranoid, but I prefer my secrets to stay on my machine.&lt;/p&gt;

&lt;p&gt;So I built Open Post with three goals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stay in VS Code&lt;/strong&gt; — no more context-switching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy first&lt;/strong&gt; — everything stays local&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git-friendly&lt;/strong&gt; — plain JSON files you can commit&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Install from VS Code Marketplace:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=open-post.open-post" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=open-post.open-post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step-by-step installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open VS Code&lt;/li&gt;
&lt;li&gt;Click the Extensions icon in the sidebar (or press &lt;code&gt;Cmd+Shift+X&lt;/code&gt; / &lt;code&gt;Ctrl+Shift+X&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Search for "Open Post"&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Install&lt;/strong&gt; on the extension by &lt;code&gt;open-post&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Once installed, press &lt;code&gt;Cmd+Alt+P&lt;/code&gt; (Mac) or &lt;code&gt;Ctrl+Alt+P&lt;/code&gt; (Windows/Linux)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Open Post panel will open automatically. Now try your first request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET https://jsonplaceholder.typicode.com/posts/1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hit &lt;strong&gt;Send&lt;/strong&gt; or press &lt;code&gt;Cmd+Enter&lt;/code&gt;. You'll get a formatted response with syntax highlighting, response time, and status code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features Worth Mentioning
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Encrypted Secret Vault
&lt;/h3&gt;

&lt;p&gt;Store API keys, tokens, and certificates in an AES-256-GCM encrypted vault. No external services needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Open the Vault tab
2. Create a vault with a master password
3. Add secrets: key="api-key", value="sk-abc123..."
4. Use {{api-key}} in your requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The vault auto-resolves variables during requests, and you can store TLS certificates for mTLS authentication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Environment Variables
&lt;/h3&gt;

&lt;p&gt;Create environments (Dev, Staging, Prod) and use &lt;code&gt;{{variable}}&lt;/code&gt; syntax anywhere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;URL:    {{base_url}}/users/{{user_id}}
Header: Authorization: Bearer {{token}}
Body:   { "api_key": "{{api_key}}" }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Variables follow a priority chain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;collection vars &amp;lt; global env &amp;lt; vault secrets &amp;lt; local env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Collections with Inheritance
&lt;/h3&gt;

&lt;p&gt;Organize requests into collections with nested folders. Set auth at the collection level, and every request inherits it. Override at the folder or request level when needed.&lt;/p&gt;

&lt;p&gt;Same goes for pre-request and test scripts — they cascade down the hierarchy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mock Servers
&lt;/h3&gt;

&lt;p&gt;Spin up mock servers right inside VS Code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define routes with custom or snapshot-based responses&lt;/li&gt;
&lt;li&gt;Auto-generated OpenAPI docs at &lt;code&gt;/_openapi.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Interactive Swagger UI at &lt;code&gt;/_swagger&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Request logging&lt;/li&gt;
&lt;li&gt;File-based responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perfect for frontend development when the backend isn't ready yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Integration (MCP)
&lt;/h3&gt;

&lt;p&gt;Open Post supports the Model Context Protocol. Expose your collection requests as tools for AI clients like Claude Desktop, Cursor, or GitHub Copilot.&lt;/p&gt;

&lt;p&gt;Enable the built-in Management MCP server, and your AI can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create collections and requests&lt;/li&gt;
&lt;li&gt;Run API tests&lt;/li&gt;
&lt;li&gt;Start/stop mock servers&lt;/li&gt;
&lt;li&gt;Import/export data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Connect to &lt;code&gt;http://127.0.0.1:3199/mcp&lt;/code&gt; and say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Create a new collection called User API"&lt;/li&gt;
&lt;li&gt;"Run all requests in the Auth collection"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Code Export
&lt;/h3&gt;

&lt;p&gt;Need to integrate an API call into your codebase? Click the &lt;code&gt;&amp;lt;/&amp;gt;&lt;/code&gt; button and get code in 14 languages:&lt;/p&gt;

&lt;p&gt;cURL (Unix &amp;amp; Windows), PowerShell, JavaScript (Fetch &amp;amp; Axios), Python (Requests &amp;amp; http.client), Go, Java, C#, Ruby, PHP, Rust, Swift&lt;/p&gt;

&lt;p&gt;Environment variables are resolved, auth headers are injected, and the code is ready to paste.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication
&lt;/h3&gt;

&lt;p&gt;Supports every auth type you'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic Auth&lt;/li&gt;
&lt;li&gt;Bearer Token&lt;/li&gt;
&lt;li&gt;API Key (header or query param)&lt;/li&gt;
&lt;li&gt;OAuth 2.0 (authorization code &amp;amp; client credentials)&lt;/li&gt;
&lt;li&gt;AWS Signature V4&lt;/li&gt;
&lt;li&gt;Digest Auth (RFC 7616)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All auth types support &lt;code&gt;{{variable}}&lt;/code&gt; placeholders.&lt;/p&gt;

&lt;h3&gt;
  
  
  Body Types
&lt;/h3&gt;

&lt;p&gt;JSON, Form Data, URL Encoded, Raw Text, XML, GraphQL, Binary&lt;/p&gt;

&lt;p&gt;All text-based body types support inline comments that are automatically stripped before sending:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"John"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Temporarily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;disabled&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"age"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pre-Request &amp;amp; Test Scripts
&lt;/h3&gt;

&lt;p&gt;Automate workflows with JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Pre-request: set dynamic header&lt;/span&gt;
&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Timestamp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Test: assert response&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Expected 200&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Should have id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Global Storage
&lt;/h3&gt;

&lt;p&gt;Create global collections and environments in &lt;code&gt;~/.openpost/global/&lt;/code&gt; that are shared across all workspaces. Changes sync automatically across VS Code windows.&lt;/p&gt;

&lt;p&gt;Perfect for reusable collections you use across multiple projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Import &amp;amp; Export
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Postman v2.1 collections&lt;/li&gt;
&lt;li&gt;OpenAPI / Swagger specs (auto-generates collections)&lt;/li&gt;
&lt;li&gt;cURL commands&lt;/li&gt;
&lt;li&gt;Open Post JSON (native format)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data Storage
&lt;/h2&gt;

&lt;p&gt;All your data lives locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.openpost/                    ← per workspace
  ├── collections.json
  ├── environments.json
  ├── history.json
  └── config.json

~/.openpost/global/           ← shared across workspaces
  ├── collections.json
  ├── environments.json
  ├── vault.enc               ← encrypted vault
  └── config.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No cloud sync. No telemetry. Commit &lt;code&gt;.openpost/&lt;/code&gt; to git to share with your team.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Daily Workflow
&lt;/h2&gt;

&lt;p&gt;Here's how I use it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a global environment with &lt;code&gt;base_url&lt;/code&gt;, &lt;code&gt;api_key&lt;/code&gt;, &lt;code&gt;auth_token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create a collection for each microservice&lt;/li&gt;
&lt;li&gt;Set collection-level auth (Bearer token with &lt;code&gt;{{auth_token}}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Add requests using &lt;code&gt;{{base_url}}/endpoint&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Write pre-request scripts to refresh tokens&lt;/li&gt;
&lt;li&gt;Use test scripts to extract IDs and set them as variables&lt;/li&gt;
&lt;li&gt;Run the entire collection to test the full flow&lt;/li&gt;
&lt;li&gt;Export to code when integrating into the app&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything stays in sync across projects, and I never leave VS Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simple vs Advanced Mode
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Simple Mode&lt;/strong&gt; (default) — Clean interface with just the essentials: requests, params, headers, body, auth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advanced Mode&lt;/strong&gt; — Unlocks Mock+MCP servers, Vault, test scripts, and advanced settings. Requires a license key, but includes a built-in trial.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;VS Code Marketplace:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=open-post.open-post" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=open-post.open-post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open VSX Registry:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://open-vsx.org/extension/open-post/open-post" rel="noopener noreferrer"&gt;https://open-vsx.org/extension/open-post/open-post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/openAPI-Studio/openAPI-Studio" rel="noopener noreferrer"&gt;https://github.com/openAPI-Studio/openAPI-Studio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Support the project:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://ko-fi.com/openpost" rel="noopener noreferrer"&gt;https://ko-fi.com/openpost&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Keyboard Shortcuts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open Open Post: &lt;code&gt;Cmd+Alt+P&lt;/code&gt; (Mac) / &lt;code&gt;Ctrl+Alt+P&lt;/code&gt; (Windows/Linux)&lt;/li&gt;
&lt;li&gt;Send Request: &lt;code&gt;Cmd+Enter&lt;/code&gt; / &lt;code&gt;Ctrl+Enter&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who Should Use This?
&lt;/h2&gt;

&lt;p&gt;Open Post is great for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Privacy-conscious developers&lt;/li&gt;
&lt;li&gt;Teams using git for collaboration&lt;/li&gt;
&lt;li&gt;VS Code power users who hate context-switching&lt;/li&gt;
&lt;li&gt;Backend developers who need quick API testing&lt;/li&gt;
&lt;li&gt;DevOps engineers managing multiple environments&lt;/li&gt;
&lt;li&gt;API developers who want to mock endpoints&lt;/li&gt;
&lt;li&gt;AI enthusiasts exploring MCP integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Coming
&lt;/h2&gt;

&lt;p&gt;The team is working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;External vault providers (Azure Key Vault, AWS Secrets Manager)&lt;/li&gt;
&lt;li&gt;WebSocket support&lt;/li&gt;
&lt;li&gt;gRPC support&lt;/li&gt;
&lt;li&gt;Request chaining and workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Open Post isn't trying to replace Postman for everyone. It's for developers who value privacy, simplicity, and keeping their workflow inside VS Code.&lt;/p&gt;

&lt;p&gt;If that sounds like you, give it a try. Install from the marketplace, press &lt;code&gt;Cmd+Alt+P&lt;/code&gt;, and start making requests. No sign-up required.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Note:&lt;/strong&gt; This is an actively developed project and there might be bugs. Any feedback, bug reports, or feature requests are greatly appreciated! Feel free to open an issue on GitHub or reach out.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Current Version:&lt;/strong&gt; 1.3.40&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Minimum VS Code:&lt;/strong&gt; 1.85.0&lt;br&gt;&lt;br&gt;
&lt;strong&gt;License:&lt;/strong&gt; Proprietary&lt;/p&gt;

&lt;p&gt;Support Open Post on Ko-fi: &lt;a href="https://ko-fi.com/openpost" rel="noopener noreferrer"&gt;https://ko-fi.com/openpost&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Questions? Open an issue on &lt;a href="https://github.com/openAPI-Studio/open-post/issues" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=open-post.open-post" rel="noopener noreferrer"&gt;VS Code Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://open-vsx.org/extension/open-post/open-post" rel="noopener noreferrer"&gt;Open VSX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openAPI-Studio/openAPI-Studio" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ko-fi.com/openpost" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #vscode #api #rest #graphql #tools #productivity #opensource&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>api</category>
      <category>tools</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
