Pageviews, sources, campaigns, cities, devices, custom events, funnels, retention, errors, Web Vitals and full session replays. One 8 KB script. One small VM. A bucket as the database. The Google Analytics and PostHog replacement built for 2026.

Install once and every page, click, error and visit is there. Name your own events for the moments that matter.
Watch what a visitor did, with inputs masked before anything leaves their browser. Recordings are stored as compressed chunks in your bucket, so a ten-minute session costs a fraction of a cent, and you choose the sample rate per project.

Who is on the site right now, which pages, and the event feed as it happens.
Identify signed-in users; see their properties, sessions and replays in one place.
Organizations, members with roles, invite links, any number of sites, each with its own allowed domains and keys.
Entry and exit pages, referrers classified (Google, X, LinkedIn, ChatGPT…), UTM source, medium and campaign, bounce rate and time on site per row.
Country, region and city from the IP without storing it. Browser, OS, device class and screen size.
Count any event, break it down by any property, build a funnel from ordered steps, see weekly cohorts come back.
JavaScript errors grouped by message with the page they happened on. LCP, CLS, INP, FCP and TTFB at the 75th percentile, split into good, needs improvement and poor.
Every event is a row in a Parquet table. Ask anything with SQL, straight from the dashboard, with a JSON accessor for your custom properties. Export CSV.
No raw IPs stored, daily-rotating visitor hashes, cookieless mode, opt-out, Do Not Track, per-project retention.
The server, the admin app, the SDK and this page ship in a single Rust binary. Deploy to Google Cloud's free tier with one command, or anywhere with a bucket.
The same design as HanuDB, the database it runs on: one free-tier machine does the work, and everything durable lives in object storage that costs cents.
The 8 KB script sends batched events with a beacon. The server checks the project's allowed domains, adds geo and device, and buffers.
Events become zstd Parquet files, one per project per day; recordings become gzip chunks. HanuDB keeps users, projects, sessions and persons.
Apache DataFusion scans the local mirror of those files. Dashboards are SQL templates, so the explorer gives you the same table.
your site ──<script src=…/hanu.js>──▶ one e2-micro (free tier) ──▶ bucket (the truth)
caddy :443 ─▶ hanu :8090 (Rust, axum, DataFusion) events/ parquet
└─▶ hanudb :8080 (Rust) rec/ rrweb chunks
admin app · SDK · ingest · stats · replay · SQL hanudb/ its log
There is no database server to pay for and queries never read the bucket. The only metered thing is object writes, and events are batched into a few hundred of them a day.
| Item | What it costs |
|---|---|
| Compute: one e2-micro VM with a 30 GB disk | $0 on Google Cloud's Always Free tier |
| Storage: a million events as Parquet | about 60 MB, $0.001 a month |
| Writes: a site with traffic all day | about 1 500 objects a day, $0.23 a month |
| A ten-minute session recording | about 300 KB, $0.000006 |
| The hosted beta on analytics.carebun.com | Free while in beta. Paid plans will come later, with notice; self-hosting stays free forever. |
One Rust binary with the admin app and the SDK inside. Deploy to Google Cloud with one script, or point it at any S3-compatible bucket and a HanuDB.
Tell us who you are and where you'll use it. You get an invite link by email, usually the same day. Then it is the snippet above and nothing else: your data stays in our bucket, in your own organization, and you can export it as CSV or Parquet at any time.