Skip to content

Open-source product analytics

Product analytics without cookies, IP addresses or personal data.

Pyxis shows which features get used, where a sign-up loses people and which requests fail. It stores no cookie, no IP address, no user agent and nothing personal, and each of those rules lives in code, covered by tests.

No sign-up. Invented data. It opens straight on the dashboard.

Demo StoreLast 30 days

Overview

Visits
2,793
+5.6% (+147)
Identified users
189
+9.2% (+16)
Conversions
124
−0.8% (−1)
Write error rate
2.2%
+0.6 pt
This periodPrevious period

Top pages

  • /dashboard2,030
  • /1,409
  • /orders1,211
Invented data, like the live demo.

Privacy

What never gets stored

Five things an ordinary analytics tag would send, and what is left of each one. The browser cuts first; the API checks again before anything reaches the database.

  • Page addressIn the browser

    An ordinary tag would send:https://shop.example/orders/48213?email=ana@example.com&utm_source=news

    What is left:/orders/:id · utm_source=news

  • IP addressAt the API: country and state, then the address is dropped. The city is never read.

    An ordinary tag would send:203.0.113.7

    What is left:BR · BR-BA

  • BrowserAt the API: classified, then dropped

    An ordinary tag would send:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36

    What is left:desktop · Chrome · Windows

  • Event propertyAt the API: anything shaped like an email, a phone number or a tax id

    An ordinary tag would send:"coupon": "ana@example.com"

    What is left:dropped

  • VisitIn the browser: no cookie, nothing that links two tabs

    An ordinary tag would send:cookie: visitor_id=8f2c41d0…; Max-Age=34560000

    What is left:sessionStorage · ends with the tab

A browser that sends “do not track” (Global Privacy Control or Do Not Track) switches the tracker off before anything is queued. Events are deleted after 13 months.

Install

What a site adds

One package and two lines. Page views are recorded on their own; a named event is one call.

npm install pyxis-analytics
import { init, track } from 'pyxis-analytics';

init({ key: 'pyxis_pk_…', endpoint: 'https://api.pyxis-analytics.dev' });
track('signup_completed', { method: 'email_code' });

Keys are issued by whoever runs the API, and there is no public sign-up today. All three repositories are MIT-licensed, the AWS infrastructure (Terraform) included.

In production

Measuring real sites since October 2026

Neither site needs a cookie to be measured.

Engineering

Built in public

  • 100% of statements, branches, functions and lines covered in all three repositories. CI fails below that.
  • Integration tests against a real Postgres, and end-to-end tests in a real browser with axe accessibility checks.
  • The tracker is published to npm from GitHub Actions, with provenance.
  • Decisions written down as architecture decision records in each repository.
  • A Storybook where every story is also an accessibility test.

Architecture

How the pieces fit

  1. Your sitepyxis-analytics in the browser
  2. CloudFrontIn front of the API
  3. APINestJS on AWS Lambda, in São Paulo
  4. PostgresNeon, reached by a role that cannot change the schema
  • DashboardNext.js on Vercel, reads the API
  • Daily jobDeletes events after 13 months
  • Weekly digestAn e-mail every Monday

Compared

Pyxis and a typical cookie-based tag

AspectPyxisTypical cookie-based tag
Cookie on your visitorsNoneAn id cookie, usually kept for months
IP addressRead for country and state, never storedDepends on the tool and its settings
Links the visits of an anonymous visitorNever: a visit is one tabYes, through the cookie
Third partiesNoneDepends on the tool; sometimes an ad network
Source codeMIT, on GitHubVaries

“Typical” describes a common setup, not any one product.

FAQ

Questions people ask

Does Pyxis set cookies on my visitors?

No. A visit’s id lives in the tab’s sessionStorage and ends when the tab closes. Cookies exist only in the Pyxis dashboard itself, for the people who use it, never on the sites it measures.

Does it store IP addresses?

No. CloudFront tells the API the country and the state of each request; the address itself is never written anywhere, and the city is never read.

Can it tell that two visits came from the same person?

Only for people signed in to your site, through your own internal id, never an email. Anonymous visits are never linked: not across tabs, not across days.

Can a visitor opt out?

Global Privacy Control and Do Not Track switch the tracker off, and a site can offer its own switch with optOut() and trackingStatus().

How long is data kept?

Thirteen months, then a daily job deletes it. A person’s events can be exported or erased from your backend at any time.

Can I use it on my site?

The code is MIT-licensed on GitHub. Today keys are issued by whoever runs the API; there is no public sign-up.

The story

Why Pyxis exists

The introduction post explains why it was built and what it never stores.

Read the post