School project · Delayed data · Not financial adviceTerms
Skip to content
SINGULARITYTERMINALOpen the terminal
Privacy

What is collected, what is stored, and what leaves the machine

Short, because the answer is mostly "nothing" — and specific, because "we respect your privacy" is not a statement anyone can check.

Not reviewed by a lawyer

This text was drafted by the people who wrote the software, not by a solicitor or an attorney. It has had no legal review of any kind. It is accurate about what the software does, which is the part the authors can vouch for — it is not a warranty that it satisfies any statute, in any jurisdiction. If you intend to host this where other people can reach it, have a qualified lawyer review and rewrite this page first. Running it on your own machine, for yourself, is the case it was written for.

Who is doing the collecting

On the hosted site (singularityview.com) the operator of Singularity Terminal, a school project, is doing the collecting. Its server receives your requests, like any website, and keeps the things listed below and nothing else.

If you run your own copy of the software instead, there is no operator: the server listens on your own machine, and everything on this page describes a local process that you are responsible for.

What is stored, and where

Reading preferences
Density, theme, accent, motion and default ticker, in your browser's localStorage under singularity_prefs. Clearing site data removes them.
Email you enter to open the terminal
The address, when you first and last entered it, and how many times, in a small database on the server. Plus a session cookie so you are not asked again for 180 days. The address is not verified, is not shared with anyone, and is not used to send you anything at present. To have it deleted, write to us on the contact page.
Account data
If you create an account: a username, a password hash and session tokens, in JSON files under work/ on your own disk. Passwords are hashed with scrypt and a per-user salt, never stored in a form anything can reverse, and never written to logs.
Your work
Watchlists, notes, portfolio, alert rules, workspaces and saved views, as server-side JSON under work/, partitioned per user by an internal user id rather than by username.
Cached responses
Upstream responses are cached under work/ so a throttled source does not blank a screen. Routes carrying per-user data are excluded from the shared cache by an explicit prefix list, so one account's response cannot be replayed to another.
Analytics
None. There is no analytics script, no tag manager, no session recorder and no third-party beacon anywhere in the frontend. Fonts and icons are self-hosted. Three screens do load an asset from a third party, and only those three: the GEO and TMAP maps fetch basemap tiles from CARTO, and the Quant Sandbox fetches its Python runtime from jsDelivr the first time you press Run. Those providers see your IP address; nothing else on any page does.

What leaves your machine

Three things, and nothing else.

  • Requests to the primary sources listed on the About page. Those publishers see your server's IP address, the User-Agent it declares (SEC's fair-access policy requires a declared one), and what you asked for — which ticker, which filing, which series. That is unavoidable for a tool that reads primary sources directly, and it is worth knowing that the request is not anonymous to them.
  • If you click an AI overview and have configured an API key: the payload currently on screen, sent to Anthropic's API. This is the only path that carries screen content off the machine, it never happens without a click, and it never happens at all if no key is set. Their handling of it is governed by their terms, not by this page.
  • Company logos and favicons, fetched from public icon services by domain. If that matters to you, it is a network request per issuer logo and nothing more.

Your watchlist, your portfolio, your alert rules, your notes and your preferences are not in that list. They are not transmitted anywhere, by any path, at any time.

Credentials

Optional API keys live in the server's environment. The browser never receives one: the route that reports credential status returns a boolean per name and nothing derived from the value — no value, no length, no prefix — and the list of names it will answer for is fixed in the server, so it cannot be used to read arbitrary environment variables. Keys are not written to logs and not stored in any file this project creates.

Cookies

One, and only if you sign in: a session cookie, marked HttpOnly and SameSite=Lax, and marked Secure whenever the connection is HTTPS. It holds a random token, not your user id and not anything derived from your password. There are no tracking cookies and there is no consent banner because there is nothing to consent to.

Your data, and getting rid of it

If you run this yourself, everything is on your disk. Deleting the work/ directory deletes all server-side state and clearing site data in your browser removes the preferences. There is nobody to ask, because there is no copy anywhere else.

If you are using an instance somebody else hosts, that is not true and should not be read as if it were: your account, watchlists, alert rules and — if you switched it on — your activity log sit on their server. Signed in, you can download everything held about you from your account page, and switching the activity log off in Settings deletes it. For anything else, the operator of that instance is the person to ask, and this project publishes a contact route for exactly that.

Children, and jurisdictions

This is a research tool for adults and is not directed at children. It is not aimed at any particular jurisdiction and makes no claim to satisfy GDPR, CCPA or any other regime. Running it locally for yourself is unlikely to engage most of them; hosting it for other people certainly can, and that is the point at which the banner at the top of this page stops being a formality.