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 with plain YAML

Helm only runs on your machine, once, to render the manifests. Your cluster gets plain YAML that your team can read, review and apply like any other.

1. Render

Take the values from Access › Clusters on our site (connect the cluster there first: it issues the token). Same flags as the Helm install, with helm template instead of helm install:

 umask 077; printf '%s' '<token>' > "$HOME/ih-token-prod-eu-1"
helm template infinite-haiku \
  oci://ghcr.io/infinitehaiku/charts/infinite-haiku --version <version> \
  -n infinite-haiku \
  --set-string organisation=<your organisation id> \
  --set-string poetClusterId=prod-eu-1 \
  --set-string clusterName=prod-eu-1 \
  --set-file shibuyaToken="$HOME/ih-token-prod-eu-1" > infinite-haiku.yaml
rm "$HOME/ih-token-prod-eu-1"

The token is inside infinite-haiku.yaml. Keep the file out of Git and delete it once applied. A chart value to use a Secret you create yourself (so the rendered file holds no token) is coming; until then, render for review with --set shibuyaToken=review in place of --set-file and render again with the real token to apply.

2. Review

What to look for (abridged; your rendered file is the reference):

kind: Secret                      # ih-client: the Shibuya token, plus two random values
metadata: { name: ih-client }     # generated at render (the Muse's intake token, the cluster credential)
---
kind: ClusterRole                 # <namespace>:infinite-haiku:ih-k8s-muse: read-only
rules:
  - apiGroups: ["", "apps"]
    resources: [pods, nodes, namespaces, events, deployments, statefulsets, replicasets]
    verbs: [get, list, watch]     # never secrets, never a write
  - apiGroups: [metrics.k8s.io]
    resources: [pods, nodes]
    verbs: [get, list]
  - apiGroups: [""]
    resources: [namespaces]
    resourceNames: [kube-system]
    verbs: [get]                  # your cluster's identity (its UID)
---
kind: StatefulSet                 # ih-poet: one pod, ih-poet-0
spec:
  replicas: 1
  template:
    spec:
      initContainers: [{ name: cluster-uid }]   # reads kube-system's UID
      containers:
        - name: poet              # image ghcr.io/infinitehaiku/poet@sha256:...
        - name: k8s-muse          # image ghcr.io/infinitehaiku/muse-k8s@sha256:...
      # every container: runAsNonRoot (uid 10001), readOnlyRootFilesystem,
      # allowPrivilegeEscalation: false, capabilities drop ALL
  volumeClaimTemplates: [{ metadata: { name: state } }]   # 10Gi, your default StorageClass

Also in the file: the ConfigMap ih-client-settings (your three settings), the ServiceAccount and ClusterRoleBinding, and the NetworkPolicies (no ingress; egress as in What you need). No Service, Ingress or LoadBalancer. Images are pinned by digest.

3. Apply and check

kubectl create namespace infinite-haiku && kubectl apply -n infinite-haiku -f infinite-haiku.yaml
kubectl -n infinite-haiku rollout status statefulset/ih-poet --timeout=300s

The cluster turns Connected in Access › Clusters as soon as the Poet starts.

Uninstall

kubectl delete -n infinite-haiku -f infinite-haiku.yaml && kubectl delete namespace infinite-haiku

Your data was only in your own volume, so that is all it takes to leave. During the pilot there is nothing to cancel; later, uninstalling and cancelling stay separate (leaving).

Deleted the file? Render it again with --set shibuyaToken=review in place of --set-file: the same objects, no real token.

Then revoke the cluster’s token in Access › Tokens.

Rendering again (for an upgrade) creates new random values in the Secret; applying them is harmless, the pod restarts once.