GravityPort

Privacy

GravityPort is a local library: no account, no cloud, and your library stays on your computer. This page says exactly what it reads, what it stores, and when it goes online.

Last updated 2026-10-23

In short

  • Your libraryStays on your computer. No uploads, no sync.
  • The extensionSends images and their source details only to GravityPort on your computer.
  • Going onlineOnly update checks and an anonymous activity signal at most once a day, with no assets, Prompts, file names or paths.
  • FeedbackSent only when you press Send. No diagnostic log unless you tick it.
  • Third partiesNo selling data, no ad profiling.

What it reads

Only the sources you use:

  • Codex: the generated-images folder, plus the matching local Codex session records to fill in the Prompt and source.
  • Grok Build CLI: images, videos and the matching chat_history.jsonl records under ~/.grok/sessions.
  • Cowart: the GravityPort canvas, and canvases of projects where Cowart was launched from Codex in the last 14 days.
  • Images and source details sent by the browser extension (see Browser extension).
  • The ChatGPT desktop app’s local state file, for conversation ids only (see ChatGPT desktop app).

GravityPort never scans Downloads, Desktop, unrelated project folders or arbitrary web pages.

What it stores

Your library is the folder you chose. It holds:

  • original images or videos, with previews and thumbnails;
  • Prompts and what you said;
  • source, time, size, model or tool, page address and other provenance;
  • version relations, tags, groups and stacks;
  • reference images, kept as private attachments of the images that used them, outside the gallery, search and asset count;
  • the ChatGPT desktop sync progress, .chatgpt-desktop-sync.json: ids, times, retry counts and a hash for at most 200 conversations, no prompt text.

The library is never uploaded to a GravityPort server. Group exports contain metadata only, with every local path removed.

AI assistant (MCP)

The MCP server does not run on its own: an AI assistant can connect to your library only after you paste the ready-made configuration from Settings → Connect into Claude Desktop, Claude Code, or Codex.

A connected assistant can search and read assets — including Prompts, source details and local file paths — and add images to the library. Once that content has been handed to the assistant, it is processed under that AI service’s own privacy policy and may be sent to its servers. To keep an assistant from reading your library, remove the GravityPort entry from its MCP configuration.

Browser extension

  • Runs only on ChatGPT, Gemini, Flow and Google AI Studio pages.
  • Automatic capture is off on a new install; the settings page opens so you can read this before turning it on. Manual saves work from the context menu.
  • ChatGPT: images, their Prompt and your message, images you uploaded in that turn as references, conversation and message ids, which turn each image came from (ids and numbers only, no conversation text), and the conversation title (to name the stack).
  • Gemini, Flow, Google AI Studio: images, plus the one question or Prompt card on the page that reliably belongs to them, labelled unverified. Inputs, hidden content and model thoughts are never read.
  • Everything goes only to GravityPort on your computer (127.0.0.1 / localhost), never to a server.
  • The local address, pairing token, auto-capture switch and retry queue live in chrome.storage.local, not synced to your Google account. Media waiting to be retried is kept in the extension and deleted once delivered or expired.
  • It never reads, stores or sends passwords, cookies or API keys, and never reads ChatGPT’s authorization headers. The one place it uses your ChatGPT sign-in is described in the next section.
  • Permissions: storage, contextMenus, alarms, plus the sites above, their image and video hosts, and the local address. No remote code.

ChatGPT desktop app

The ChatGPT desktop app (which now also hosts Codex) doesn’t save chat images on your computer. To collect them, GravityPort:

  1. while the Codex source is on, reads the desktop app’s state file ~/.codex/.codex-global-state.json about every 10 seconds, using only conversation ids and the id of the last prompt in each, never prompt text;
  2. once a conversation has been quiet for 90 seconds, hands it to the paired extension with automatic capture on, one at a time;
  3. the extension asks chatgpt.com/api/auth/session for an access token of the ChatGPT account signed in to your browser, and uses it once to read that conversation and see whether it holds a generated image. The token isn’t stored and goes nowhere but chatgpt.com;
  4. with no image, that’s the end. Otherwise it opens the conversation in a minimized, unfocused window, captures it as if you had opened it yourself, and closes it after 20 to 110 seconds.

These requests are made by your browser with your own ChatGPT sign-in; GravityPort itself never contacts OpenAI. To stop this, turn off the extension’s automatic capture or disable the extension. To keep GravityPort from reading the state file at all, turn off the Codex source with GRAVITYPORT_DISABLE_BRIDGES=codex, which also stops Codex image import.

Going online

GravityPort’s local service listens only on 127.0.0.1. The desktop app goes online on its own for two things only, both to gravityport.azhuilab.com, neither with assets, Prompts, file names, paths or account details.

Update checks

While the app is open, it reads the update manifest about 2 minutes after launch and then every 4 hours, or when you check by hand. When a new version is out, it downloads that platform’s update in the background and verifies it by size and SHA-256; the app itself is replaced only when you choose Restart to update, and the library is never touched. Versions 0.3.4 and earlier read the manifest only when the window opens and the last check is more than 24 hours old, and download only when you choose Download and update.

Anonymous activity signal

At most once per day (Pacific time), a request with no body that carries only:

  • the event type (first launch or daily active) and protocol version;
  • a random install ID, generated on your computer and not derived from a serial number, account, path or hardware;
  • the GravityPort version, OS family (macOS / Windows / other) and CPU architecture (such as arm64 or x64).

There’s no switch in the app; set GRAVITYPORT_DISABLE_TELEMETRY=1 to turn it off (GravityPort 0.3.3 or later; update an older version first in Settings → About). The install ID then stays on your computer and is never sent.

# macOS, for one launch
GRAVITYPORT_DISABLE_TELEMETRY=1 /Applications/GravityPort.app/Contents/MacOS/GravityPort
# macOS, also for launches from the Dock or Finder, until restart
launchctl setenv GRAVITYPORT_DISABLE_TELEMETRY 1
# Windows, for every later launch
setx GRAVITYPORT_DISABLE_TELEMETRY 1

On Windows, remove it under System Properties → Environment Variables to undo.

Our server keeps access logs of every request: the IP address, browser user-agent and request URL (the update-check and activity-signal URLs include the install ID). Log lines are deleted automatically after 14 days and are used only to troubleshoot faults and prevent abuse.

The app downloads no models. Download links on this site may carry a referral label (such as ref=…) to count which page a download came from; no sign-in is involved.

Pinterest (not yet available)

You can choose to connect your Pinterest account and browse your own boards and Pins in the app. It’s built, and opens once Pinterest approves production API access. Until you connect, GravityPort never contacts Pinterest.

Once connected it reads only your username, your boards’ names, descriptions, Pin counts and covers (secret boards included), and your Pins’ titles, descriptions, links and image addresses. They are shown live on your computer, never saved to the library or uploaded, and cached in memory for at most 5 minutes.

Access tokens stay in a permission-restricted file on your computer. During sign-in our server only passes the authorization code to Pinterest and returns the tokens to you, without storing or logging them. Disconnecting in Settings deletes the local tokens; you can also revoke access in your Pinterest account settings.

Feedback

Nothing is sent until you press Send in Settings → Feedback. Then it goes to gravityport.azhuilab.com/api/feedback with:

  • your message (up to 5,000 characters) and, if you add one, a contact address used only to reply;
  • the feedback type, interface language, app version, OS and version, and CPU architecture;
  • if you tick Include diagnostic log (off by default), the recent runtime log. You can read all of it before sending; user names in paths, tokens and email addresses are hidden, and any line that may hold prompt text is removed.

No install ID, assets, prompts or library location. No IP is stored with the feedback content; an IP is held briefly in memory to stop abuse. Feedback is stored in a private folder on our server, read only by the developer, and used only to reply to you and improve the app. To have yours deleted, write to fengseekling@gmail.com with roughly when you sent it.

Your controls

  • Move the library to another empty folder in Settings → Storage.
  • Turn off the extension’s automatic capture: automatic and ChatGPT desktop capture stop, manual saves still work. Disable or remove the extension to stop it entirely.
  • Turn off a source with GRAVITYPORT_DISABLE_BRIDGES (codex, grok, cowart).
  • Turn off the activity signal with GRAVITYPORT_DISABLE_TELEMETRY=1 (see Going online).
  • Pinterest is never contacted until you connect it; disconnecting deletes the local tokens.
  • Delete, trash or archive assets. Archiving only organizes and is not secure erasure; system backups, browser data and each tool’s own history need clearing separately.

Third parties

ChatGPT, Gemini, Flow, Google AI Studio, Codex, Grok, Cowart, Chrome and Pinterest are separate products; their own network behavior and privacy policies still apply.

GravityPort does not sell data or use it for ad profiling, credit scoring or lending.

Contact and security

Report security issues as described in the GitHub repository’s security policy. Other questions can go to GitHub Issues, but never post tokens, Prompts, private assets or conversation content there.

Join the community

Community group QR code