← Back to Overview

SETTINGS & DATA

Data Storage

How API Studio stores your data — plain JSON files, two scopes (local and global), git-friendly by design, and fully offline.

Overview

All data is stored as plain JSON files on your machine. No cloud, no accounts, no telemetry. Your data never leaves your computer.

Local Scope

Per workspace — stored in .openpost/ at project root

Global Scope

Shared across all workspaces — stored in ~/.openpost/global/

Human-readable JSON Git-friendly No database No binary formats Fully offline

Local Storage (.openpost/)

Located at the workspace root. Created automatically on first use. Per-project, workspace-specific data.

.openpost/
├── collections.json        ← saved request collections
├── environments.json       ← environment variables
├── history.json            ← request/response history
├── snapshots.json          ← response structure snapshots
├── cookies.json            ← persistent cookie jar
├── session.json            ← open tabs state for restore
├── config.json             ← settings and preferences
├── mock-servers.json       ← mock server configurations
└── graphql-schemas.json    ← cached GraphQL schemas
Commit to git to share collections, environments, and mock servers with your team
Created automatically — no setup required
Each workspace has its own independent local storage

Global Storage (~/.openpost/global/)

Located in the user home directory. Shared across ALL workspaces. Not committed to git (user-specific).

~/.openpost/global/
├── collections.json        ← global collections (shared across workspaces)
├── environments.json       ← global environments
├── history.json            ← global request history
├── config.json             ← settings, proxy profiles, license key,
│                              vault providers, secret sets
└── vault.enc               ← encrypted vault (AES-256-GCM)
⚠️ Not for git: Global storage contains user-specific data (license key, vault secrets, personal preferences). It lives outside your project directory and should not be committed.

File Formats

All files are plain JSON (except vault.enc which is encrypted JSON).

FileContents
collections.jsonArray of Collection objects (requests, folders, auth, scripts)
environments.jsonArray of Environment objects (key-value variable sets)
history.jsonArray of HistoryEntry objects (request + response pairs)
session.jsonOpen tabs state for session restore on reopen
config.jsonSettings, proxy profiles, active environment IDs
cookies.jsonArray of CookieEntry objects (persistent cookie jar)
vault.encAES-256-GCM encrypted vault (secrets + certificates)

See the Collection JSON Schema page for full type reference.

Git Workflow

Commit .openpost/ to share collections, environments, and mock servers with your team. Each developer gets the same API definitions.

✓ DO commit

  • collections.json
  • environments.json
  • mock-servers.json
  • snapshots.json
  • config.json

✗ Consider .gitignore

  • session.json — personal tab state
  • cookies.json — personal session cookies
  • history.json — optional (can be large)

Recommended .gitignore additions:

.openpost/session.json
.openpost/cookies.json
🔒 Vault secrets are safe: vault.enc is encrypted (global-only, not in your project). Secret values are automatically scrubbed from history before writing to disk.

No-Workspace Mode

When VS Code opens without a workspace folder, local storage is unavailable.

No .openpost/ directory — local storage unavailable
Only global collections and environments accessible
Save operations prompt for Global scope
History, cookies, and session silently skip (no error)
Open a folder to enable full local storage

You can still send requests and use global collections — just no per-workspace persistence.

Cross-Window Sync

Global storage changes sync across VS Code windows automatically via file system watcher.

Edit a global collection in Window A → appears in Window B automatically
Local storage is per-workspace (no cross-window sync needed)
Sync is near-instant (file watch event trigger)
How it works: The extension registers a FileSystemWatcher on ~/.openpost/global/. When any file changes on disk (from another VS Code window or external editor), the watcher triggers a reload and pushes updated data to the webview.

Next

Ko-fi