From 7852bd73957514a8ccaf52536ee904eca4388ae5 Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Wed, 15 Oct 2025 12:48:59 +0200 Subject: [PATCH 1/3] chore(docs): move `/privacy` page to docs dir --- alchemy-web/src/content/docs/privacy.md | 83 +++++++++++++++++ alchemy-web/src/pages/privacy.astro | 113 ------------------------ 2 files changed, 83 insertions(+), 113 deletions(-) create mode 100644 alchemy-web/src/content/docs/privacy.md delete mode 100644 alchemy-web/src/pages/privacy.astro diff --git a/alchemy-web/src/content/docs/privacy.md b/alchemy-web/src/content/docs/privacy.md new file mode 100644 index 000000000..78e704de1 --- /dev/null +++ b/alchemy-web/src/content/docs/privacy.md @@ -0,0 +1,83 @@ +--- +title: Privacy Policy +lastUpdated: 2025-08-02 +--- + +## 1. Introduction + +Thank you for using **Alchemy**. We respect your privacy and are committed to being transparent about the data we collect, why we collect it, and how you can control it. This Privacy Policy explains how the Alchemy CLI, runtime libraries, and associated websites (collectively, "Alchemy") collect and process information when you install, run, or otherwise use Alchemy. + +## 2. Information We Collect + +Alchemy is designed to collect *anonymous* usage analytics that help us understand how our tools are used and improve their reliability and performance. We do **not** collect names, email addresses, source code, or any directly identifying personal information. Specifically, the telemetry system built into the Alchemy CLI gathers the following data: + +### 2.1. Identifiers + +- **User ID (UUID)** - generated once per machine and stored locally on your system. *Not collected when running in Continuous Integration (CI) environments.* +- **Session ID (UUID)** - generated for each invocation of Alchemy to correlate events within a single run. +- **Project ID** - the root Git commit hash of the repository in which you run Alchemy. This provides a stable, anonymous identifier for a project without exposing its contents. + +### 2.2. System Information + +- Operating system platform and version (e.g. "darwin 24.1.0"). +- CPU architecture (e.g. `x64`) and logical CPU count. +- Total system memory (in MB). +- Runtime name and version (`bun`, `node`, `deno`, or `workerd`). +- Environment provider (e.g. "GitHub Actions", "Vercel") and whether the process is executing in a CI environment. + +### 2.3. Usage Events + +For each session, Alchemy records a series of timestamped events including, but not limited to: + +- Application lifecycle events +- Resource operations together with the resource type, status (creating / updating / deleting / etc.), elapsed time, and whether an existing resource was replaced. +- State-store operations including class name, operation performed, and elapsed time. +- Error information: error name, message, and stack trace. Prior to transmission we automatically redact any absolute paths that include your home directory by replacing them with `~`. + +## 3. How We Use the Information + +We use the collected information to: + +- Monitor stability and diagnose crashes or failures. +- Measure feature adoption and prioritize future development. +- Analyse performance characteristics (e.g., average resource-creation time) to improve speed and reliability. + +## 4. Legal Basis for Processing + +Our processing of the aforementioned information is based on our legitimate interest in improving our products and services (per Art. 6 (1) f GDPR) while minimising privacy impact by collecting only anonymous and aggregated data. + +## 5. Where the Data Is Sent & Stored + +Telemetry events are batched and sent over HTTPS to [PostHog's cloud service](https://posthog.com/). PostHog is a trusted third-party analytics provider that stores data on their secure cloud infrastructure. Access to our PostHog project is restricted to authorised Alchemy maintainers and is protected with industry-standard security practices. + +## 6. Retention + +We retain telemetry data in accordance with our legitimate business needs and legal requirements. Data is stored in PostHog's cloud service according to their data retention policies. We periodically review and delete data that is no longer necessary for the purposes outlined in this policy. + +## 7. Opt-Out + +You can disable telemetry at any time by setting one of the following environment variables before running Alchemy: + +```sh +export ALCHEMY_TELEMETRY_DISABLED=1 +# or +export DO_NOT_TRACK=1 +``` + +If telemetry is disabled, the Alchemy CLI will not transmit any analytics data for that session. + +## 8. Data Sharing + +We do **not** sell or rent telemetry data. Data may be shared with service providers strictly for the purposes outlined in this policy (e.g., PostHog for analytics processing or cloud infrastructure providers hosting our telemetry servers). We may also disclose data if required by law. + +## 9. Security + +We implement appropriate technical and organisational measures to protect telemetry data against unauthorised access, alteration, disclosure, or destruction. + +## 10. Changes to This Policy + +We may update this Privacy Policy from time to time. Any changes will be posted on this page with an updated "Last updated" date. Continued use of Alchemy after such changes constitutes acceptance of the revised policy. + +## 11. Contact Us + +If you have questions about this Privacy Policy or our data practices, please contact us at [privacy@alchemy.run](mailto:privacy@alchemy.run). diff --git a/alchemy-web/src/pages/privacy.astro b/alchemy-web/src/pages/privacy.astro deleted file mode 100644 index aa4aae0a2..000000000 --- a/alchemy-web/src/pages/privacy.astro +++ /dev/null @@ -1,113 +0,0 @@ ---- -/** - * Alchemy Privacy Policy - * Generated automatically from repository inspection of telemetry implementation. - * This page describes how the Alchemy CLI and related tools collect and use data. - */ -export const prerender = true; // generate at build time - -/** - * If your site has a global layout you can wrap this page. - * We keep this file standalone to avoid coupling to layouts that may not exist. - */ ---- - - - -
-

Privacy Policy

-

Last updated: 2025-08-02

- -

1. Introduction

-

- Thank you for using Alchemy. We respect your privacy and are committed to being transparent - about the data we collect, why we collect it, and how you can control it. This Privacy Policy explains how the Alchemy CLI, - runtime libraries, and associated websites (collectively, "Alchemy") collect and process information - when you install, run, or otherwise use Alchemy. -

- -

2. Information We Collect

-

Alchemy is designed to collect anonymous usage analytics that help us understand how our tools are used and improve their reliability and performance. We do not collect names, email addresses, source code, or any directly identifying personal information. Specifically, the telemetry system built into the Alchemy CLI gathers the following data:

- -

2.1. Identifiers

- - -

2.2. System Information

- - -

2.3. Usage Events

-

For each session Alchemy records a series of timestamped events including, but not limited to:

- - -

3. How We Use the Information

-

We use the collected information to:

- - -

4. Legal Basis for Processing

-

Our processing of the aforementioned information is based on our legitimate interest in improving our products and services (per Art. 6 (1) f GDPR) while minimising privacy impact by collecting only anonymous and aggregated data.

- -

5. Where the Data Is Sent & Stored

-

Telemetry events are batched and sent over HTTPS to PostHog's cloud service. PostHog is a trusted third-party analytics provider that stores data on their secure cloud infrastructure. Access to our PostHog project is restricted to authorised Alchemy maintainers and is protected with industry-standard security practices.

- -

6. Retention

-

We retain telemetry data in accordance with our legitimate business needs and legal requirements. Data is stored in PostHog's cloud service according to their data retention policies. We periodically review and delete data that is no longer necessary for the purposes outlined in this policy.

- -

7. Opt-Out

-

You can disable telemetry at any time by setting one of the following environment variables before running Alchemy:

-
export ALCHEMY_TELEMETRY_DISABLED=1
-# or
-export DO_NOT_TRACK=1
-

If telemetry is disabled, the Alchemy CLI will not transmit any analytics data for that session.

- -

8. Data Sharing

-

We do not sell or rent telemetry data. Data may be shared with service providers strictly for the purposes outlined in this policy (e.g., PostHog for analytics processing or cloud infrastructure providers hosting our telemetry servers). We may also disclose data if required by law.

- -

9. Security

-

We implement appropriate technical and organisational measures to protect telemetry data against unauthorised access, alteration, disclosure, or destruction.

- -

10. Changes to This Policy

-

We may update this Privacy Policy from time to time. Any changes will be posted on this page with an updated "Last updated" date. Continued use of Alchemy after such changes constitutes acceptance of the revised policy.

- -

11. Contact Us

-

If you have questions about this Privacy Policy or our data practices, please contact us at privacy@alchemy.run.

-
From f5b91db53e30e18f6052ce0b90fa8bb13767e913 Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Wed, 15 Oct 2025 14:03:30 +0200 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20add=20logs=20to=20figure=20out=20w?= =?UTF-8?q?hat's=20wrong=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- alchemy-web/alchemy.run.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/alchemy-web/alchemy.run.ts b/alchemy-web/alchemy.run.ts index 05d1342eb..8b842d604 100644 --- a/alchemy-web/alchemy.run.ts +++ b/alchemy-web/alchemy.run.ts @@ -65,6 +65,7 @@ export const router = await Worker("router", { const url = domain ? `https://${domain}` : router.url; console.log(url); +console.log({ stage, domain, website: website.url, router: router.url }); if (process.env.PULL_REQUEST) { await GitHubComment("comment", { From 84f664735e12b6202504ab152a5c26c731986b25 Mon Sep 17 00:00:00 2001 From: Nestor Vera Date: Wed, 15 Oct 2025 23:47:21 +0200 Subject: [PATCH 3/3] chore: remove testing logs --- alchemy-web/alchemy.run.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/alchemy-web/alchemy.run.ts b/alchemy-web/alchemy.run.ts index 8b842d604..05d1342eb 100644 --- a/alchemy-web/alchemy.run.ts +++ b/alchemy-web/alchemy.run.ts @@ -65,7 +65,6 @@ export const router = await Worker("router", { const url = domain ? `https://${domain}` : router.url; console.log(url); -console.log({ stage, domain, website: website.url, router: router.url }); if (process.env.PULL_REQUEST) { await GitHubComment("comment", {