Libi

Privacy Policy

Last updated: 2026-08-13 · Version: 2.0

Applies to the libi desktop application, the libi CLI (npx @nagellabs/libi), and this website.


The short version

This describes libi as it works today: the free, local, open-source app. It runs on your computer. Your videos, audio, images, projects and database live in a folder on your own machine (~/.libi/). We never receive them. There is no libi account, no libi server holding your work, and no upload step.

Some things do leave your machine, and we explain each below:

  1. 01Product analytics — anonymous usage counters sent to Google Analytics. You can turn this off in Settings → Privacy.
  2. 02Crash reports — error reports sent to Sentry so we can fix bugs. You can turn this off in Settings → Privacy too; see §5.2, which also explains honestly what a crash report can contain.
  3. 03Requests you ask libi to make — when you generate a voice, an image or a video, libi calls that provider directly from your machine using your own API key. Those requests go to the provider, not to us. For one feature, this includes uploading your video file — see §4.2.
  4. 04Your email, if you join the paid membership waitlist — and only then. This is the one thing we hold that identifies you, you have to type it in and send it yourself, and we use it for a single announcement. See §5.3.

A paid membership would change this — by your choice, and only then (§10). Subscribing would mean a libi account, and features like cloud backup and team sharing exist to put some of your files on our servers. That is the point of them. It stays opt-in, the free local app keeps working exactly as described above whether or not you subscribe, and we will publish a revised policy before any of it goes live.

If you read one section, read §4 — What leaves your device.

1. Who we are

libi is operated by Nadav Nagel, an individual sole proprietor in Israel. There is no company entity behind libi at the time of writing.

For the limited processing described here we are the data controller. For everything that happens inside the app on your own machine there is no controller relationship at all — we have no access to it.

2. Who this is for

libi is not directed at children. You must be at least 16, or the age of digital consent where you live, to use libi. We do not knowingly collect personal data from children. If you believe a child has given us personal data, email us and we will delete it.

3. What stays on your device

Everything you create lives locally under ~/.libi/ (or LIBI_HOME):

WhatWhere
Video, audio and image files~/.libi/storage/
Projects, scenes, overlays, analyses~/.libi/libi.sqlite
Application logs~/.libi/logs/
Bundled tool binaries and ML models~/.libi/bin/, ~/.libi/models/
Your API keysyour own environment or OS keychain

We never receive any of it. There is no sync, no backup, no upload to us — none exists to enable. Deleting ~/.libi/ deletes everything libi holds locally. Because this sits on your computer under your control, backing it up and securing it is your responsibility (§11). (Cloud backup and sync are among the things a future paid membership would add; §10.)

Note that ~/.libi/logs/ contains diagnostic logs including absolute file paths of media you work with — which means file names you chose. These stay on your machine, but a subset can be included in crash reports. See §5.2.

4. What leaves your device

4.1 Things that come to us

Product analytics (§5.1), crash reports (§5.2), and — only if you choose to join the waitlist — your email address (§5.3). That is the complete list, and it stays complete for as long as you use the free app. A paid membership would add to it, by your choice; §10.

4.2 Things your machine sends to AI providers on your own account

When you ask libi to generate media, libi calls the provider directly from your computer, authenticated with the API key you supplied. We do not proxy these calls and never see your keys, requests or responses. That is true of every model call libi makes today. If we later offer hosted models as part of a paid membership, using them would be your choice and that traffic would pass through us — see §10, and we will publish a revised policy before any of it goes live.

ProviderWhenWhat it receives
fal.aiImage/video generation; the optional paid video-analysis featureYour prompt — and for video analysis, your video file is uploaded to fal's CDN
ElevenLabsSpeech, sound effects, music, transcriptionYour text — and for transcription, your audio file
Anthropic / OpenAI / GoogleThe chat agent, via your own CLI subscriptionYour conversation, under that CLI's own terms

Two things to be clear about:

libi also reads your locally-stored Claude Code credentials to show your plan usage. That token is used on your machine to call Anthropic's usage endpoint directly; it is never sent to us.

4.3 Things libi downloads to set itself up

On first run libi downloads bundled tools and models — ffmpeg, ffprobe, yt-dlp, and tracking models — from public hosts. As with any download, those hosts see your IP address, and their own privacy policies apply. We receive nothing from these requests.

5. What we collect

5.1 Product analytics (Google Analytics 4) — you can switch this off

Purpose. To learn which features are used, so we know what to build and fix. Nothing else. We do not advertise, profile, or sell anything.

What is sent. Short event names from a fixed list published in our source code (lib/analytics/events.ts) plus a few low-cardinality parameters — for example which export format was chosen, or which top-level media type was uploaded (video, image, audio). Never your prompts, file names, file contents, project names, chat messages, or any free text you type.

Identifier. A random UUID generated on first run and stored locally. It is sent to Google as both the client_id and the user_id. It is not derived from your hardware, name, email or OS account, and it does not follow you across websites. Deleting ~/.libi/libi.sqlite generates a new one.

Google's role. Google acts as our processor, and also processes some data as a controller for its own purposes. We do not enable Google Signals, advertising features, or ad personalisation.

How to turn it off. Settings → Privacy. Analytics is also disabled entirely in development builds and in test mode.

5.2 Crash and error reports (Sentry)

Purpose. To learn that libi crashed and where, so we can fix it.

We minimise this deliberately. We set sendDefaultPii: false, never call Sentry's user-identification API, do not capture local variables, and use no session replay. Before a report leaves your machine an automatic scrubber removes values whose keys or shapes look like credentials — API keys, tokens, passwords, cookies, authorization headers — and drops the user object, request headers, cookies and query strings.

What a crash report can still contain. We would rather tell you than let you find out:

For that reason we describe these reports as pseudonymous, not anonymous. We have no way to link one to you by name, but we cannot promise a report contains nothing traceable.

Turning it off. Settings → Privacy. This takes effect immediately, mid-session, with no restart. If you run libi from source or from the command line, you can also launch it with the environment variable LIBI_SENTRY_DISABLED=1, which acts as a hard kill-switch that wins over the Settings toggle.

Where it goes. Sentry (Functional Software, Inc., USA) acts as our processor. Data is stored in the United States.

5.3 The paid membership waitlist

Opt-in. Nothing is sent unless you type your address and press "Join waitlist".

If you join the waitlist, your email address is sent to us and stored on our servers. Alongside it we store the date and time you joined, which membership you asked about, and — where your app sent one — the version of libi you signed up from. We do not store your IP address, your device details or anything that ties the address to the rest of your use of libi.

What we use it for. One thing: telling you when the membership is available. We will not sell it, share it, add you to any other mailing list, or use it to profile you. Every message we send includes a way to unsubscribe.

Where it goes. The list is stored in Google Cloud Firestore (Google LLC acting as our processor) in the United States. Because that is outside Israel and the EEA, the transfer relies on Google's Standard Contractual Clauses.

How long we keep it. Until the membership launches and we have told you, or until you ask us to delete it — whichever comes first. If the membership is shelved, we delete the list.

Your copy of it. Your own computer also remembers that you joined, so the app can show you a confirmation instead of an empty form. Clearing that — including with the app's "leave waitlist" control — only affects your computer. To have the address itself deleted, email us (§6).

5.4 This website

This website runs no analytics, no advertising and no third-party trackers, and sets no cookies of its own. Our hosting provider keeps standard server access logs for security. If we ever add analytics we will update this policy and add a consent banner for EU and UK visitors first.

6. Legal bases and your rights

We process the data above under Israel's Privacy Protection Law, 5741-1981 (as amended, including Amendment 13). Where you are in the EEA or UK, the GDPR also applies because libi is offered internationally: analytics rests on your consent, crash reporting on our legitimate interest in keeping the software working, and the waitlist email on your consent — given by the deliberate act of typing your address into a form headed "Join waitlist" and pressing the button, having been told beside it where the address goes and what it is used for. Nothing is pre-filled and nothing is sent unless you send it.

You have the right to access, correct, delete and port your personal data, to object to processing based on legitimate interests, and to withdraw consent at any time. In practice, given how little we hold:

We respond within one month, free of charge. We will not demand identity documents for data we cannot tie to an identity.

EEA/UK residents may complain to their national supervisory authority. Israeli residents may complain to the Privacy Protection Authority.

7. Sharing and international transfers

We do not sell your personal data and never have. The only recipients are the processors named above — Google (analytics, and Cloud Firestore for the waitlist) and Sentry (crash reports) — plus our website host.

All of them process data in the United States. Two separate regimes apply, running in opposite directions, and they are often conflated:

8. Retention

DataRetention
Everything in ~/.libi/Until you delete it. We have no copy.
Analytics events[14] months, then deleted by Google
Crash reports[90] days, then deleted
Waitlist emailUntil the membership launches and we have told you, or until you ask us to delete it
Website server logsUp to 90 days, held by our hosting provider (Vercel), then deleted. We keep no separate copy.

9. Security

Your projects are only as secure as the computer they sit on, and ~/.libi/ is not encrypted by libi. Use full-disk encryption and keep your machine updated. Your API keys live wherever you configured them — libi neither stores nor transmits them to us.

For the small amount we do handle: it travels over TLS, we minimise it as described, and we scrub credential-shaped values before reports leave your machine. The waitlist is stored with secured, access-controlled cloud infrastructure (Google Firebase); the credentials that can touch it are held server-side only and are never shipped in the app or in this site's client code. We are a one-person project and do not claim enterprise security certifications.

libi is free and open source under GPL-3.0-only. Every claim here can be checked against the source — the analytics event list, the crash scrubber, and every network call are all readable. Please verify rather than trust us.

10. When the paid membership launches

This describes services that do not exist yet. We will publish a revised policy before any of it goes live, and none of it applies unless you choose to subscribe.

It will be an optional, paid membership — the app calls it libi Pro today, and the name may change before launch; this section applies to whatever we end up calling it. The free local app keeps working exactly as described above either way.

That version will add a subprocessor list, a data-processing agreement, a breach-notification commitment and a full account-deletion flow.

11. Changes

We post revisions here with a new date and version. Because the repository is public, every superseded version stays permanently visible in the git history. For material changes — especially anything that increases what we collect — we will give 30 days' notice first.

12. Contact

Email: admin@nagellabs.com · Postal: Yarden Street, Rosh HaAyin, Israel

Last updated 2026-08-13 · every revision is public in the git history