Privacy policy

What personal data Lampwick collects about its customers and website visitors, why, on what legal basis, how long we keep it, and your rights under the GDPR.

Effective date View as Markdown

On this page

Lampwick is a service of NIO Media. This policy explains what personal data we process when you visit lampwick.dev, create an account, are invited to a team, pay for a plan, use the iOS app or view a public status page.

Lampwick has two roles under the GDPR:

  • Controller for the data about you as our customer or visitor: your account, your team membership, billing, security logs and the website. This policy covers that data.
  • Processor for the monitoring data your apps send us (errors, logs, requests, browser errors, app users). That data often contains personal data of your own users. You decide what you send and why; we process it only on your instructions, under our Data processing agreement. If you are an end user of an app that uses Lampwick, contact that app's operator first.

Who we are

NIO Media is the trade name of Niels Oosterhoff, sole proprietorship (eenmanszaak) registered with the Netherlands Chamber of Commerce under number 69855773.

ControllerNIO Media
AddressRoomweg 68, 7523 BR Enschede, the Netherlands
Chamber of Commerce (KvK)69855773
VATNL002409406B60
Privacy contactinfo@niomedia.nl, or the contact form (topic "Privacy")

What we collect, why, and for how long

The retention periods below are what the software does today. Where a row says "until deleted", the data goes when you delete your account, or the team it belongs to, whichever comes first. Database backups keep it for about 30 more days (see Backups).

Your account

DataPurposeLegal basisKept
Email address, password (stored only as an Argon2 hash), account creation dateCreate and run your account, log you inContract (art. 6(1)(b))Until deleted
Two-factor secret and recovery codesOptional second login factorContract (art. 6(1)(b))Until you turn 2FA off or delete your account
Team name, team membership and role (owner or member)Share projects with your teamContract (art. 6(1)(b))Until deleted
GitHub or Google account id, verified email address and GitHub login nameOnly if you choose "Continue with GitHub" or "Continue with Google"Contract (art. 6(1)(b))Until you disconnect the provider or delete your account
Accounts that never confirm their email addressSignupContract (art. 6(1)(b))Deleted automatically after 7 days
API tokens (stored only as a hash), connected apps (OAuth grants for MCP clients)API and MCP access you set upContract (art. 6(1)(b))Until you revoke them, they expire, or you delete your account. OAuth access tokens last 1 hour, refresh tokens 60 days

When you log in with GitHub we ask for the user:email scope only; with Google, openid email. We don't receive your password at those providers. GitHub and Google process your login as independent controllers under their own privacy policies.

What you must provide. An email address and a password (or a GitHub or Google login) are needed to create an account; billing details are needed for a paid plan. Without them we can't provide the service. Everything else is optional.

No automated decisions. We make no decisions about you based solely on automated processing that have legal or similarly significant effects (art. 22 GDPR). Plan limits are applied by the software, but they follow from the plan you chose.

If you are invited to a team

When a team owner invites you, we store your email address, the team, the role and who invited you, so we can send you the invitation and let you join. The owner gave us your address; the legal basis is the team's legitimate interest in adding colleagues (art. 6(1)(f)). A pending invitation is kept until it is accepted or revoked, or the team is deleted. The link in the email works for 7 days.

Sessions and security logs

DataPurposeLegal basisKept
Session cookie (a random id; we store only its hash)Keep you logged inContract (art. 6(1)(b))30 days, or until you log out
Audit log: who did what (logins, 2FA changes, token changes, team and project changes), with the IP address and the channel (web, API, MCP, app)Security, and to let team owners see who changed whatLegitimate interest in securing accounts and teams (art. 6(1)(f))365 days
IP address in rate limiting and account lockout countersStop password guessing and abuseLegitimate interest (art. 6(1)(f))In memory only, minutes to hours; never written to the database
Mail throttle: a hash of the email address, the kind of mail and the timeLimit how many mails one address getsLegitimate interest (art. 6(1)(f))2 days
Web server access logs: IP address, time, URL and user agent of every request, including ingest and status pagesOperate and secure the serviceLegitimate interest (art. 6(1)(f))Up to 14 days
Application logs, which can contain email addresses (for example of failed mails or account actions)Find and fix errorsLegitimate interest (art. 6(1)(f))Up to 14 days

Team owners can see the IP addresses in their team's audit log; members can't. When an account is deleted, its own audit log goes with it, but team audit entries keep the email address and IP address of whoever made a change, so the team's history stays readable for the rest of the 365 days.

Billing

DataPurposeLegal basisKept
Plan, subscription status, billing interval, renewal date, Stripe customer and subscription ids, monthly event countsRun your subscription and enforce plan limitsContract (art. 6(1)(b))Until the team is deleted; monthly usage counts 13 months
Company name, billing email, billing address, VAT id, payment methodPayment and invoicesContract and legal obligation (art. 6(1)(b) and (c))You enter them in Lampwick or Stripe; we pass them to Stripe, which stores them. We don't keep a copy
InvoicesTax and bookkeepingLegal obligation (art. 6(1)(c))7 years (art. 52 of the Dutch General Tax Act, AWR), by us and by Stripe, also after you delete your account

Payments go through Stripe. Lampwick never sees your full card details: the payment form on the Billing page is Stripe's own (Stripe.js). Stripe acts as an independent controller for payment processing and fraud prevention (Stripe privacy policy).

Emails and notifications

DataPurposeLegal basisKept
Your email address and the content of service mails: verification, password reset, invitations, alerts, usage and retention noticesRun the service you signed up forContract (art. 6(1)(b))Alert mails leave our queue within a day; alerts themselves are kept 30 days
iOS app: device name, platform, Apple push tokenSend push notifications for your projectsContract (art. 6(1)(b))Until you log out in the app, remove the device, or delete your account

We send no newsletters or marketing mail. You can turn alert mails off on Account & security.

Support

If you email us, we use your message and email address to answer you, based on our legitimate interest in helping customers (art. 6(1)(f)), or on the contract when it is about your account. We keep support mail for 2 years after the last message, except where it is part of our tax records, which we keep for 7 years.

DataPurposeLegal basisKept
Contact form: your name, email address, company (optional), topic and messageAnswering youLegitimate interest in answering questions (art. 6(1)(f)), or steps you ask for before a contract (art. 6(1)(b))Like support mail: 2 years after the last message. Lampwick stores nothing: the form sends your message to our inbox by email
Contact form: your IP addressLimit how many messages one network can sendLegitimate interest (art. 6(1)(f))In memory only, 1 hour; never written to the database

The contact form sends you no email; we answer from our inbox. Our logs record only the topic and length of a message, never its text or your address.

Public status pages

Status pages set no cookies and run no scripts. When you view one, your IP address is used in memory to limit requests (300 per 5 minutes) and appears in the web server access logs above. We use it for nothing else.

The website

The marketing website (lampwick.dev, the docs and these pages) sets no cookies, uses no analytics or tracking, and loads nothing from third parties. The theme toggle doesn't store anything.

Cookies

CookieSet byPurposeLifetime
__Host-lampwick_sessionThe app, after you log inKeeps you logged in30 days (10 minutes during the 2FA step)
__Host-lampwick_oauthThe app, during "Continue with GitHub/Google"Protects the login flow (state, PKCE, nonce)10 minutes
lw_hostchecks_noticeThe app, when you dismiss a noticeRemembers that you closed it1 year
__stripe_mid, __stripe_sidStripe.js, only on a team's Billing page, for ownersFraud prevention for payments; Stripe.js also contacts m.stripe.network1 year and 30 minutes

The Lampwick cookies are strictly necessary or functional for a service you asked for, so they need no consent under the Dutch Telecommunications Act (art. 11.7a Tw). Public status pages and the website set no cookies.

Who receives your data

We use these service providers. Those marked "processor" process data only on our behalf under a data processing agreement.

ProviderRoleWhat they getLocation
Hetzner Online GmbHProcessor: servers, database, backupsAll data in LampwickGermany (EU)
LettermintProcessor: sending emailYour email address and the mail content, including messages you send with the contact formEU (the Netherlands)
Stripe Payments Europe, LimitedIndependent controller for payments; processor for parts of billingCompany name, email address, billing address, VAT id, payment detailsIreland, with transfers to the US
Apple (Apple Push Notification service)Processor: push notifications to the iOS appPush token and notification text: for issues the project name, issue number, error class and message; for alerts their title and body, such as monitor names, failure reasons and URL host and pathUS
GitHub, GoogleIndependent controllers, only if you log in with themThe login itselfUS

Our source code is hosted on GitHub, and GitHub Actions builds and deploys it to our server. GitHub doesn't receive account, billing or monitoring data.

We don't sell personal data and don't share it with advertisers. We may disclose data when Dutch law or a court order requires it.

Transfers outside the EU

Lampwick's servers and backups are in the EU. Data reaches the US only through Stripe (payments), Apple (push notifications, if you use the iOS app) and GitHub or Google (if you log in with them). For Apple we rely on the EU-US Data Privacy Framework; for the others on the Data Privacy Framework where the recipient is certified, and on the European Commission's Standard Contractual Clauses otherwise.

Backups

The database is backed up every night. Local backups are kept for 7 days and off-site backups (Hetzner Object Storage, a different location in the EU) for 30 days. Data you delete therefore disappears from backups within about 30 days. We restore a backup only to recover from a failure.

Security

We protect your data with:

  • TLS for all traffic, with HSTS;
  • passwords hashed with Argon2, and session ids, API tokens and email links stored only as hashes;
  • 2FA secrets and alert channel webhook URLs encrypted at rest;
  • rate limits and account lockout on logins;
  • strict isolation between teams, and a team audit log;
  • servers with automatic security updates, a firewall and SSH key-only access.

The Data processing agreement lists the measures in more detail.

If a breach puts your personal data at risk, we notify the Autoriteit Persoonsgegevens within 72 hours and tell you without undue delay when the risk to you is high (art. 33 and 34 GDPR).

Your rights

You have the right to access, correct and delete your personal data, to restrict processing and to data portability. You can do much of it yourself:

  • Access and portability: most of your data is available through the API, in JSON. You can also ask us by email for a full copy.
  • Correction: change your details on Account & security, and billing details on the team's Billing page.
  • Deletion: delete your account on Account & security. Teams where you are the only member are deleted with all their projects and data. If such a team still has a running subscription, cancel it first; you can delete once the paid period has ended. If you are the only owner of a team with other members, transfer ownership first.

Right to object. Where we process your data based on legitimate interest (security logs, the audit log, invitations, support), you can object at any time on grounds relating to your situation. We then stop, unless we have compelling legitimate grounds that override your interests, or need the data for legal claims.

For any request, email info@niomedia.nl. We answer within one month (extendable by two months for complex requests, in which case we tell you). We may ask you to confirm your identity first.

You can file a complaint with the Dutch data protection authority, the Autoriteit Persoonsgegevens, or with the authority in the EU country where you live or work. We'd appreciate the chance to help first.

Changes

We update this policy when the service changes. For material changes we email everyone with an account at least 30 days in advance. The effective date at the top of this page shows the current version.