Infinite Haiku

Observability that stays in your network.

Metrics, logs and traces on one timeline, stored in your own cluster and read by your browser directly. Your telemetry never passes through our servers.

OpenTelemetry in · Kubernetes · read-only MCP for your agents
Our own Poet, live

drag to zoom · double-click back

Reading our own Poet…

Your data stays home.

The datastore runs in your Kubernetes cluster or on your Linux machines. We sign you in and introduce your browser to it; the data goes straight to you over an encrypted channel. No egress bill to ship telemetry out, and nothing at our end to leak.

Walk into the timeline.

Every series of a service at once, drawn on your GPU. Zoom in and the detail follows; open a request and see its log lines and the change behind it. Missing data is shown as missing, never as zero.

Your agents investigate.

A read-only door (MCP) lets the coding agent you already use search, follow a request and read the same numbers as your charts. No vendor AI, no per-investigation fee.

How it works

  1. 1A Poet in your cluster. Our datastore runs where your services run and takes their OpenTelemetry. Read-only, one namespace.
  2. 2You sign in at infinitehaiku.com. Our web service checks who you are and introduces your browser to your Poet. That is all it sees.
  3. 3Your browser talks to your Poet directly. An encrypted peer-to-peer channel (WebRTC). The numbers never pass through our servers.
Your browser signs in at infinitehaiku.com, which introduces it to the Poet in your network; the data then goes directly between the Poet and your browser. Your network Your services OpenTelemetry Poet your datastore Your browser dashboards, AGS infinitehaiku.com sign-in, introduction your telemetry, encrypted, direct never through our servers
Infinite Haiku in one minute · plays from YouTube (youtube-nocookie.com)

Proof, not promises

Measured: 500,000 tasks from 200 workers over five hours, drawn at 1.1 ms of CPU per frame.

This site's own requests, live: the same public view you can give your customers.

This site's own requests, live · open it full size

Who is behind it

An independent team. You talk to the people who build it.

No sales layer between your questions and the answers.

Built since April 2024. Bootstrapped: no venture capital, no board, no hyperscaler lock-in. About us

  • Alerts in your network. Evaluated inside your own Poets.
  • Public status pages. Share a live dashboard without sharing access.
  • Kernel faults on the timeline. Memory errors, silent out-of-memory kills and disk errors, per node.
  • Flat CHF 5 per user account and month. Nothing per gigabyte, host or event.
  • Don't trust us: watch it yourself. Your Poet shows every connection and its bytes, peer to peer or to us. See how

Join the free pilot.

Expert help on your systems. Leave anytime: delete the Poet, one command. Once we open to the public: two months free, then a flat CHF 5 per user account and month. How the pilot works · Security

Write to us
← Install

Install examples

Each recipe adds to the command Access › Clusters gives you. <org> is your organisation id and prod-eu-1 your cluster’s name, both shown on that screen. Pass ids with --set-string (and quote them in YAML), so an id made of digits stays text.

Relay only

When your cluster may not send UDP to any address, every session goes through our TURN relay instead:

helm install ... --set relayOnly=true

A mirror registry

When your nodes cannot pull from ghcr.io, copy both images with their digests, then point the chart at your registry’s host (the paths stay infinitehaiku/poet and infinitehaiku/muse-k8s):

helm template x oci://ghcr.io/infinitehaiku/charts/infinite-haiku --version <version> --set-string organisation=x,poetClusterId=x,clusterName=x,shibuyaToken=x |
  grep -o 'ghcr.io/[^" ]*@sha256:[0-9a-f]*' | sort -u | while read -r ref; do
  name=${ref#ghcr.io/}; skopeo copy --all --preserve-digests "docker://$ref" "docker://registry.acme.internal/${name%@*}:<version>"; done
helm install ... --set image.registry=registry.acme.internal

A private mirror that needs credentials: create a pull Secret in the namespace and name it (a list of Secret names):

helm install ... --set image.registry=registry.acme.internal --set 'image.pullSecrets={regcred}'

A StorageClass

The Poet’s volume uses your default StorageClass; name another one:

helm install ... --set storageClass=fast-ssd

The volume is fixed at 10Gi for now.

Delete the data on uninstall

By default the Poet’s volume stays after helm uninstall (deleting the namespace removes it). To have helm uninstall delete it too (Kubernetes 1.27 or later):

helm install ... --set deleteDataOnUninstall=true

Argo CD (coming)

Argo CD renders charts with helm template, where the chart cannot read back the two values it generates at install, so they would change on every sync. A chart value for a Secret you create yourself (existingSecret) is coming and makes Argo CD work; until then, use Helm or Flux.

Flux

Flux reads the token from a Secret you create once, out of band; nothing secret goes in Git:

kubectl create namespace infinite-haiku
kubectl -n infinite-haiku create secret generic ih-shibuya-token --from-file=shibuyaToken="$HOME/ih-token-prod-eu-1"
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata: { name: infinite-haiku, namespace: infinite-haiku }
spec: { type: oci, url: oci://ghcr.io/infinitehaiku/charts, interval: 1h }
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata: { name: infinite-haiku, namespace: infinite-haiku }
spec:
  interval: 1h
  chart:
    spec: { chart: infinite-haiku, version: <version>, sourceRef: { kind: HelmRepository, name: infinite-haiku } }
  values: { organisation: "<org>", poetClusterId: "prod-eu-1", clusterName: "prod-eu-1" }
  valuesFrom:
    - { kind: Secret, name: ih-shibuya-token, valuesKey: shibuyaToken, targetPath: shibuyaToken }

Upgrade or change a setting

Your settings and the token stay; pass only what changes:

helm upgrade infinite-haiku oci://ghcr.io/infinitehaiku/charts/infinite-haiku --version <new version> -n infinite-haiku --reuse-values
helm upgrade infinite-haiku oci://ghcr.io/infinitehaiku/charts/infinite-haiku --version <version> -n infinite-haiku --reuse-values --set relayOnly=true   # one setting

OpenTelemetry Collector to the Poet

A Collector in a labelled namespace (OpenTelemetry) forwards what your applications send it:

exporters:
  otlphttp/infinite-haiku:
    endpoint: http://ih-poet-intake.infinite-haiku:4318
    headers:
      Authorization: "Bearer ${env:IH_INTAKE_TOKEN}"
service:
  pipelines:
    traces: {receivers: [otlp], exporters: [otlphttp/infinite-haiku]}
    metrics: {receivers: [otlp], exporters: [otlphttp/infinite-haiku]}
    logs: {receivers: [otlp], exporters: [otlphttp/infinite-haiku]}

Several clusters

Connect each cluster on its own in Access › Clusters: each gets its own name, token and command, and shows up on its own on our site. One cluster’s token never serves another; revoking it removes only that cluster.

Clusters that need no datastore of their own send to an existing Poet: one Poet keeps the data of all of them.