Privacy,
in plain words.

Gnista runs on your Mac. It has no analytics, no telemetry and no account, and nothing about your sessions leaves your Mac. Here is every request it makes, and what each one sends.

Updated

On your Mac

Gnista reads what your coding agents leave on your Mac: the events their hooks send it over a local socket, and their own session files and configs, for titles, progress, cost and limits. It reads them where they are, and sends them nowhere.

It keeps a little of its own in its folder in Application Support: recently finished sessions, your latest plan limits, the model price list, backups of the agent configs it changed, crash reports not yet sent (dropped after 30 days), the Linux helpers it downloaded, the recent messages of Amp threads it showed (removed after a week), and your own agent, model and jump-rule files. Your licence key is kept in Gnista’s own Keychain item, never synced, and the start of your trial there and in Gnista’s preferences. It doesn’t read anything else in your Keychain, and it doesn’t probe your ports.

To connect an agent, it edits only its own lines in that agent’s config, after a backup. With your permission, it uses Automation and Accessibility to find the right terminal tab or window. That stays on your Mac too.

If you connect a remote machine, Gnista keeps its helper and one settings file in ~/.gnista there, and adds its hooks to the configs of the agents it connects there. Disconnect the machine, and both go.

What goes online

  • Update checks. Gnista asks gnista.sh for its list of updates, about once a day while automatic updates are on, and downloads them from Gnista’s public downloads on GitHub. Like any request, it carries your IP address, and it says which version of Gnista you have. Gnista doesn’t send a profile of your Mac.
  • Your licence. When you activate a key, Gnista sends it and your Mac’s name, the activation’s label, to report.gnista.sh, our relay. The relay hands just those to Creem, who sell Gnista for us, and keeps nothing about your licence. About once a week Gnista checks the key, and removing it frees the Mac’s place; both send the key and this Mac’s activation ID. To stop floods, the relay counts licence requests as it counts crash reports, below. The trial needs nothing online.
  • Model prices. Only if you turn on Usage: LiteLLM’s public price list, downloaded from GitHub at most once a day. A plain download; nothing about you or your sessions goes with it.
  • Crash reports. If Gnista or its helper quits unexpectedly, Gnista asks the next time it opens whether to send the crash report. In Settings ▸ About you can choose to always send them, or never; an organisation can choose for its Macs. A report has the error, when it happened and where in Gnista’s code, the names of its threads’ queues, the names and addresses of the libraries it had loaded, Gnista’s and macOS’s versions, your Mac’s model and processor architecture, and a random number made only for crash reports. Nothing about your projects, prompts or code, and no user names or file paths. It goes to report.gnista.sh, our relay hosted by Inleed in Sweden, which emails it to us through Proton and keeps no copy. To stop floods it counts reports per day, with your IP address only as a scrambled value, forgotten the next day.
  • Remote machines. Only if you connect one in Settings ▸ Remote. Gnista reaches it with your own ssh, your ssh config and keys, to put its helper there, connect its agents, bring up an agent’s tmux pane when you click its row, and keep a tunnel open that brings their events to your Mac and your answers back; a Kubernetes pod is reached the same way through your own kubectl. The first time a machine needs the helper for your version of Gnista, Gnista downloads it from Gnista’s public downloads on GitHub, and uses it only if Gnista’s key signed it. That download says which version and processor it’s for, and nothing about you.
  • Amp’s threads. Amp keeps its threads on its own servers, so for an Amp row Gnista runs Amp’s own CLI, signed in as you, to read the thread, what it cost and your credits left. Gnista sends nothing of its own with it.
  • Nothing else. No analytics, no ads, no account.

Beta reports

If you test betas, Gnista can put a report together for you: its crash reports from the last two weeks, its own log from the last 24 hours (with private values left out), and a short note with Gnista’s version, your macOS version, your Mac’s model, the display mode and which agents are connected. It attaches the report to an email draft to us in your mail app. You see it first, and nothing is sent unless you send it.

Buying a licence

Purchases go through Creem, our merchant of record: they take the payment, handle tax and send your key. What they collect is in Creem’s privacy notice (opens in a new tab). We see what Creem shows a seller about an order, such as your email address and what you bought, and use it only to help with your licence.

This website

gnista.sh is static pages: no cookies, no ads. It counts visits, and clicks on the download and Buy buttons, with Pirsch (opens in a new tab), a cookieless analytics service hosted in Germany. Pirsch never stores your IP address: it tells visits apart by a hash of your IP address, browser and the date, so it can’t recognise you the next day or on another site. It sees the page you opened, the page that sent you, your browser, system, language, screen size and rough location. More in Pirsch’s privacy policy (opens in a new tab).

Fonts and icons come from gnista.sh itself; Pirsch’s script is the only thing a page loads from elsewhere. When you switch language, your browser keeps your place on the page in its own storage on your device, for that tab only. The site is hosted by statichost.eu, which, like any web host, receives your IP address to deliver the pages.

Questions

Gnista is made by Blixt & Dunder (opens in a new tab). To ask what we hold about you, or to have it corrected or deleted, write to support@gnista.sh. For payment details, Creem is the one to ask.

If any of this changes, this page changes first, with its date.