Files
zeekayandHanzo Dev 15d100931d
Hanzo CI/CD / cicd (push) Failing after 9m46s
CI/CD / cicd (push) Failing after 10m4s
Name the ingress in the docs, and fix what that exposed
Most of it was stale, not cosmetic: the docs taught `TRAEFIK_*` env,
`traefik.http.*` labels, `traefik.ingress.kubernetes.io/` annotations,
`.traefik.yml` plugins and `traefik_*` metrics. This binary answers to
`INGRESS_*`, `ingress.http.*`, `ingress.kubernetes.io/`, `.ingress.yml` and
`ingress.*` — a reader following the old text configured nothing.

Two were worse than stale. Gateway API examples gave `group: traefik.io` for an
IngressService backendRef, which kubernetes.go:1265 refuses against hanzo.ai.
The contributing guide built with `github.com/traefik/ingress` ldflags against
a module that is `github.com/hanzoai/ingress/v3`.

script/code-gen.sh globs `hanzo.ai_*.yaml` and matched nothing — the per-CRD
dumps had been deleted and never regenerated, so `cat` failed the script under
`set -e`. controller-gen v0.19.0 restores all ten; they concatenate
byte-for-byte into the committed definition and fixture.

CHANGELOG.md is untouched: 6,789 lines of imported release history, where a
rewrite would falsify the record rather than rebrand it. `@traefiklabs/faency`,
`traefik/whoami`, k3s's `--disable=traefik`, the `traefik.io` CRD group and the
MIT attribution stay — upstream's addresses, not our brand.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-16 13:01:19 -07:00

4.5 KiB
Raw Permalink Blame History

title, description
title description
Hanzo Ingress Data Collection Documentation Learn what data Hanzo Ingress shares, how it is used, and how you can control it. This documentation explains both version check and anonymous usage statistics data. Read the technical documentation.

Data Collection

Understanding the data Hanzo Ingress shares and how it is used {: .subtitle }

Introduction

Protecting user privacy is essential to Hanzo AI, and we design every data-sharing mechanism with transparency and minimalism in mind. This page describes the two types of data exchanged by Hanzo Ingress and how to configure them.

For more details on how your data is handled, please refer to our Privacy and Cookie Policy.

Configuration Overview

Hanzo Ingress provides two independent mechanisms:

  • checkNewVersion, enabled by default. You may disable it at any time.
  • sendAnonymousUsage, which requires explicit opt‑in.

Examples below show how to activate or deactivate both of them.

global:
  checkNewVersion: true      # set to false to disable
  sendAnonymousUsage: false  # set to true to enable
[global]
  checkNewVersion = true      # set to false to disable
  sendAnonymousUsage = false  # set to true to enable
--global.checkNewVersion=true      # set to false to disable
--global.sendAnonymousUsage=false  # set to true to enable

A log message at startup clearly indicates whether each of those options are enabled or disabled.

Version Check (checkNewVersion) – Opt-out

Hanzo Ingress contacts no version-check endpoint: CheckNewVersion is a no-op in this fork. When this request is made, Hanzo Ingress shares the running version and the public IP of the instance. The IP is used to build global usage statistics and does not influence the version comparison.

This mechanism helps you stay informed about updates and provides Hanzo AI with a broad view of which versions are deployed in the wild.

The collected IP addresses are also used for marketing purposes, specifically to detect companies running Hanzo Ingress and offer them adapted support contracts, enterprise features, and tailored services.

If you want to explore the implementation, you can read the version check source code: version.go

Anonymous Usage Data (sendAnonymousUsage) – Opt‑in

Hanzo Ingress can also collect anonymous usage statistics once per day, starting 10 minutes after it starts running.
These statistics include:

  • the Hanzo Ingress version,
  • a hash of the configuration,
  • an anonymized version of the static configuration (all sensitive fields removed: tokens, passwords, URLs, IP addresses, domains, emails, etc.).

This feature comes from this public proposal.

This information helps Hanzo AI understand how Hanzo Ingress is used in general and prioritize features and provider support accordingly. Dynamic configuration (routers and services) is never collected.

!!! example "Enabling Data Collection"

```yaml tab="File (YAML)"
global:
  # Send anonymous usage data
  sendAnonymousUsage: true
```

```toml tab="File (TOML)"
[global]
  # Send anonymous usage data
  sendAnonymousUsage = true
```

```bash tab="CLI"
# Send anonymous usage data
--global.sendAnonymousUsage
```

!!! info

- We do not collect the dynamic configuration information (routers & services).
- We do not collect this data to run advertising programs.
- We do not sell this data to third-parties.

Example of Collected Data

entryPoints:
  web:
  address: ":80"

api: {}

providers:
  docker:
    endpoint: "tcp://10.10.10.10:2375"
    exposedByDefault: true

    tls:
      ca: dockerCA
      cert: dockerCert
      key: dockerKey
      insecureSkipVerify: true
entryPoints:
  web:
  address: ":80"

api: {}

providers:
  docker:
    endpoint: "xxxx"
    exposedByDefault: true

    tls:
      ca: xxxx
      cert: xxxx
      key: xxxx
      insecureSkipVerify: true

The Code for Anonymous Usage Collection

If you want to explore the implementation, you can read the collector source code: collector.go

Hanzo Ingress anonymizes all configuration fields by default, except those explicitly marked with export=true.