Privacy policy

Last updated: 26 October 2026

This policy covers the KIT Apps desktop app and the halison.io website. The controller is Metanoia AS, org.nr. 928 285 898, Kvednanesvegen 49, 4120 Tau, Norway. Halison is Metanoia's product brand. Contact: [email protected].

Part 1: The KIT Apps app

KIT Apps is a local-first Windows desktop app with no account system and no backend. Your canvases, code and files stay on your device. This policy explains the exceptions: anonymous product usage analytics, the licence check that runs only if you have bought the paid tier (described under Purchases), feedback you choose to send from the app, and the open-source code KIT Apps downloads from public CDNs to run your apps.

Summary

  • No personal data in analytics: we do not collect your name, email, IP address or any of your content (code, canvases, file names).
  • Anonymous, aggregate analytics only: a small set of named product events, such as "app launched" or "canvas saved", with non-identifying properties.
  • No cookies, no cross-site tracking, no ads and no session recording in the app.
  • Processed by PostHog on EU infrastructure (eu.i.posthog.com).
  • Code from public CDNs. To run apps, KIT Apps downloads open-source code from unpkg and esm.sh (and from jsdelivr and cdnjs for a packaged or shared copy of the welcome app). The CDN sees your IP address and which file was requested, never your code.

What the app sends

When analytics are enabled, the app sends named events so we can see how it is used and where people get stuck. Properties are limited to booleans, counts and short categories. They never contain your code, file names, paths or free text. Examples are launching the app, saving, loading, rendering, renaming, duplicating, deleting and exporting a canvas, opening packaging, starting, finishing or failing an installer build (with duration and an error category, never error text), and completing onboarding.

What the app does not collect

  • No personal data in analytics (name, email, account, device ID).
  • No IP address: the app nulls the IP before sending, and the analytics project is set to discard client IP data. No geolocation.
  • No persistent identifier: analytics use in-memory storage only, so nothing is written to your device for analytics and there is no ID that lasts across sessions.
  • No autocapture, page views, clicks, session replay or surveys.
  • None of your content.

Diagnostic reports

The app sends a diagnostic report only when you choose Help, then Submit log to diagnose a problem. It contains a reference you can quote to us, the app version, desktop or web, your WebView user agent, the end of the packaging build log (up to 8,000 characters) and the last 15 canvas renders with their result and any error message. Before it is sent, the app replaces project, canvas and app names and the file names made from them with placeholders, replaces your user name in file paths with a placeholder, and removes source lines that a compile error quotes. An error message can still contain text your own app produced. If analytics are off, nothing is sent.

In-app feedback

KIT Apps includes an optional feedback widget. Feedback is only sent when you explicitly click the submit button; nothing is collected automatically. When you submit feedback, your message and the current app version are transmitted to Supabase (acting as a sub-processor), which stores them on EU infrastructure for Metanoia AS to review.

Feedback submissions may contain personal information you choose to include in your message. The lawful basis is legitimate interest (GDPR Art 6(1)(f)): reviewing direct user input to improve the product. Submissions are not linked to your analytics data; the two systems are independent.

To request deletion of a specific submission, write to [email protected]. Because submissions include your message text, we can locate and delete them on request.

Code and media downloaded from public CDNs

To run your apps, KIT Apps downloads open-source code from public content delivery networks (CDNs). These downloads fetch files; they do not send your code, your canvases or your file names, and they carry no analytics.

WhatFromWhen
The JSX compiler (Babel) and common libraries (Recharts, lucide-react, prop-types)unpkg.comWhen an app that needs them runs
Other libraries your app's code imports, and the PNG/PDF export helpersesm.shWhen an app imports a library KIT Apps does not ship, or when you export
The welcome animation's player and runtime (HyperFrames) and its animation library (GSAP)cdn.jsdelivr.net, cdnjs.cloudflare.comOnly when a copy of the welcome app runs outside KIT Apps, as a packaged app or a share link. KIT Apps itself ships these files.

What a CDN can see is what any web server sees for a download: your IP address, the time, your browser or WebView user agent, and which file was requested. For libraries your app imports, the file name tells the CDN the name of the library, not your code. Each CDN handles this under its own privacy policy. We receive none of it.

Offline, nothing is downloaded: an app that needs a library it cannot fetch shows an error that says so.

Legal basis and your choices

Because the analytics are cookieless, carry no IP and no identifier, and strip your content, we treat the data as anonymous. To the extent GDPR applies, our basis is legitimate interest (Art. 6(1)(f)) in improving the product. We do not use the data for advertising, profiling or automated decisions.

  • Everyone, free: if Do Not Track or Global Privacy Control is enabled in your browser or system, analytics are switched off automatically.
  • Pro: turn off Usage analytics at any time under Settings in the app. It takes effect immediately and persists. On Personal the switch is shown locked, and the browser signal remains available.
  • Because the data is anonymous and carries no identifier, we cannot link any event to you, so we cannot answer individual access or erasure requests about it.

Part 2: The halison.io website

Analytics and error tracking (PostHog)

The website uses PostHog (EU region) for page views, page leaves, error capture and session recordings. It does not start until you click Accept in the cookie banner. If you decline or do not answer, PostHog does not run on your visit. When accepted, it stores an identifier in your browser using local storage and a cookie. Recordings mask everything you type in form fields. You can withdraw consent by clearing this site's data in your browser. Our basis is your consent (GDPR Art. 6(1)(a)).

Forms

If you send a contact message, join the waitlist or subscribe to the newsletter, we receive what you enter: your name and email, and for the contact form also phone number (if given), topic and message. We store it in our database (Supabase) and pass it to HubSpot, our CRM and email tool, so we can reply and keep in touch. Our basis is your request and, for newsletters, your consent. You can unsubscribe at any time or ask us to delete your details.

Accounts

Parts of the website offer sign-in, handled by Supabase. If you sign in, we store your sign-in details with Supabase. KIT Apps itself needs no account.

Fonts

The site loads fonts from Google Fonts, so your browser contacts Google's servers when a page loads.

Part 3: Purchases

KIT Apps Pro is sold through Lemon Squeezy, which acts as merchant of record and reseller. Lemon Squeezy processes your name, email, billing address and payment data, charges and remits VAT or sales tax, and issues receipts, under its own privacy policy: lemonsqueezy.com/privacy. We never see your card details.

Free users make none of these calls. If you activate a Pro licence key, the app talks to Lemon Squeezy's licence API (api.lemonsqueezy.com) in three cases. On activation it sends the key and a machine name, "KIT Apps (<random id>)". The random id is generated on your device, has no link to your hardware or user account, and only identifies this install as one of the licence's seats. At each launch it sends the key and the seat id Lemon Squeezy returned, so the app can notice a refunded or deactivated licence. If the check cannot reach the server, nothing changes, and paid features keep working offline for up to 30 days after the last successful check. On deactivation from Settings it sends the key and the seat id, so the seat is freed. The key, the seat id and the email Lemon Squeezy returns for the licence are stored only on your device, so Settings can show which licence is active. They are never added to the analytics events, and no content, code or file names are sent.

Your rights

Under GDPR you have the right to access the personal data we hold about you, have it corrected or deleted, restrict or object to processing, receive it in a portable format, and withdraw consent at any time. To use these rights, email [email protected]. You also have the right to complain to the Norwegian Data Protection Authority, Datatilsynet: datatilsynet.no.

Children

KIT Apps and this website are not directed at children and we do not knowingly collect data from them.

Changes

We update this policy if our practices change. The date at the top shows the latest revision. See also our Terms of service and Refund policy.