Privacy
Exactly what we store, what we cannot read, and every third party involved. It is a short page because the list is short.
The short version
- We store your email address, your public key, and the names of your teams, projects and variables.
- We cannot read a single one of your values. They arrive encrypted and we hold no key. Security explains why that is a property rather than a promise.
- Two companies are involved and no more: Cloudflare hosts everything and counts visits to this website, and Stripe takes the payments.
- The visit counting sets no cookies and runs on the marketing pages only. It is not in the app, and it is not on any page you reach from a link we emailed you.
- Deleting your account deletes it. There is no copy we keep for ourselves.
Who we are
MiniEnv is operated by Las Mulas LLC, a limited liability company registered in Wyoming, USA. Las Mulas LLC is the data controller for everything described on this page. Write to support@minienv.dev.
What the service stores
This is the whole list, taken from what the code actually writes rather than from a template.
| Your email address | Stored |
|---|---|
| Your display name, if you set one | Stored |
| Your public key | Stored |
| Team and project names, and who belongs to which | Stored |
Variable names, e.g. STRIPE_SECRET_KEY | Stored |
| Vault entry labels and their kind | Stored |
| When each value last changed, and how many there are | Stored |
| Per project: who added, changed or removed what, and when | Stored |
| Your signed-in devices: the label the app offered, and the times it was first and last seen | Stored |
| Pending invitations: the address invited, and when it expires | Stored |
| Your team's plan, and Stripe's customer and subscription identifiers | Stored |
| Variable and vault values | Ciphertext only |
| Your private key | Never sent to us |
| Your access token | Stored hashed |
Names being visible is a trade-off we have written up rather than hidden. The practical consequence is one sentence long: do not put a secret in a variable name.
Why we are allowed to hold it
The reasons the law asks us to state, one per thing.
- Your email, your public key, and the project and team metadata above: we need them to run the service you signed up for. That is contractual necessity.
- Bug reports, and keeping the relay working and unabused: our legitimate interest in a service that functions and is not attacked.
- Payment and subscription records: a legal obligation, and necessary to take a payment you asked us to take.
- Analytics on this website: our legitimate interest in knowing which pages people read. It is on the marketing pages only, and stopping it changes nothing about the site. See below.
Where we rely on legitimate interest, you can object. Write to support@minienv.dev and we will actually consider it rather than filing it.
If you send us a bug report
The report carries your message, your email address, and the app's version, build and platform. That is the entire payload, and the dialog in the app lists it in full before you press send.
There is no log capture, no diagnostics bundle, and no attachment of project or variable names. A bug report is the likeliest place for something to leave a machine unnoticed, so it was built to carry nothing it did not show you first.
The update check
The app asks minienv.dev whether a newer version exists. That request
carries nothing: no version number, no machine identifier, no account, no
query string at all. It is a plain fetch of a static file, and the answer is the
same file for everybody.
Like any web request it shows your IP address to Cloudflare, which is unavoidable for anything served over the internet. We do not log it and we could not tie it to an account if we wanted to.
The command-line tool has no update check at all, and neither the app nor the CLI contains any analytics, crash-reporting or telemetry code. Beyond the relay, the update check, and Vercel if you connect it yourself, they talk to nothing.
The website, and the one thing that follows you
Cloudflare Web Analytics runs on this website's marketing pages: the homepage, security, changelog, comparisons, privacy and terms. It sets no cookies and stores nothing on your device, and it does not follow you from one visit to the next. It counts the page you are on, where you came from, your browser and country, and how quickly the page loaded. Cloudflare's own description is on their Web Analytics page. A content blocker stops it, and nothing on this site behaves differently.
Until 24 September 2026 this was Google Analytics 4, which did set cookies, with no banner asking first. We replaced it rather than add one.
Where it deliberately does not run
Analytics is not on /verify, /join,
/device, or the pages Stripe returns you to after checkout. Those addresses carry a single-use token in
the URL, and any analytics script sends the full URL of the page it is on. Putting
it there would mail your confirmation token to a third party. It is also not in
the desktop app or the command-line tool, and it is not on our relay.
Fonts
Every typeface on this site is served from this domain rather than linked from Google Fonts, so simply loading a page hands your address to nobody.
Who else is involved
These processors and no others. If we add one that handles your personal data, this page changes and the changelog says so before it goes live.
| Cloudflare hosts the website, the relay and the stored data, and sends our email. Like any host, it processes the network requests that reach us, including IP addresses. | Processor |
|---|---|
| Stripe handles payment. Stripe is the merchant of record, so it is Stripe, not us, that collects and remits sales tax and VAT. Card details never touch our app or our servers. | Processor |
There is no third. No advertising network, no session recorder, no error-reporting service, no data broker, and nothing is sold or shared for anybody's marketing.
Vercel is worth naming for the opposite reason. If you use the Vercel integration, those requests go from your Mac straight to Vercel and never pass through us. The token you paste stays in your Keychain. We are not a party to it.
Where all of this physically is
Cloudflare and Stripe both run global networks, the United States included, so your data is processed outside the country you are in. Where it leaves the European Economic Area or the UK, that transfer rests on the European Commission's Standard Contractual Clauses, which both processors have in place.
How long we keep it
Numbers rather than "as long as necessary", because that phrase means nothing.
| Your account, keys, teams, projects and their metadata | Until you delete it |
|---|---|
| Everything above, once you have deleted the account | Gone at once, out of storage within 30 days |
| Bug reports and email you have sent us | 24 months |
| Invoices and payment records, which Stripe holds as merchant of record | As Stripe's tax obligations require, usually 7 years |
| Relay error logs: which part of the relay failed and where in the code, with no address, IP, token or content in them | Up to 7 days, at Cloudflare |
| Request logs (who asked for what, from which IP) | We keep none |
Deleting your account from the app removes your person record, your sessions, the teams you administer and the projects you own. There is no shadow copy kept for our own purposes.
Two things survive on purpose and you should know which. A project you share with other people is not deleted when you leave it, because it is theirs too. And a bug report you sent stays in our records with the address you sent it from, because it is correspondence rather than account data. Ask us and we will delete it.
The relay logs only its own failures, and a line names the kind of request that failed, never who made it: no address, IP, token, id or content. So there is no file anywhere pairing an IP address with an account. Cloudflare still handles the network requests as our host, on its own retention, the same as for any site you visit.
What you can ask us for
A copy of what we hold about you, a correction, a deletion, an export in a portable format, a restriction on how we use it, or an objection to anything we do on the basis of legitimate interest. Write to support@minienv.dev and we will answer within 30 days. You do not have to explain why, and asking will not affect your account.
If you are in the EEA or the UK and you think we have handled your data badly, you can complain to your national data protection authority. If you are in California, we do not sell or share personal information as the CCPA defines those words, and exercising any of these rights will never cost you anything here.
One request we cannot fulfil, and it is the point of the product. We cannot give you your values back, because we cannot read them. If you have lost your key, a current member of the project can re-encrypt it for your new one. If nobody else is on the project, the data is gone, and there is no version of asking us that changes that.
If something goes wrong
If we suffer a breach affecting your personal data, we will email the people affected without undue delay, and tell the relevant regulators within 72 hours where the law requires it. We will say what was taken and what it was worth, not that we take security seriously.
What an attacker who reached our storage would and would not get is set out on the Security page, in detail, including the parts that are not flattering.
Changes, and children
If this page changes in a way that affects what we collect, the changelog will say so on the day it happens, and the date at the top of this page will move.
MiniEnv is a developer tool, it is not intended for anyone under 16, and we do not knowingly collect a child's data. If you think a child has given us something, write to support@minienv.dev and we will delete it.
Questions about any of this go to support@minienv.dev.