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
← Docs

Observe your AI coding agents

Claude Code reports its own cost, tokens, model calls and tool results over OpenTelemetry. Send them to your Poet and you see every session and every subagent beside the systems they work on.

1. Point Claude Code at your Poet

Add this to your user settings, ~/.claude/settings.json (or $CLAUDE_CONFIG_DIR/settings.json if you set that variable). A repository’s .claude/settings.json cannot set the exporter:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://127.0.0.1:4318",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer <intake token>"
  }
}
  • The endpoint is your Poet’s intake, and its port depends on how you installed it:

    InstallEndpointIntake token
    Mac or Linux, install.shhttp://127.0.0.1:14318macOS: ~/Library/Application Support/InfiniteHaiku/secrets/intake.token; Linux: /etc/infinitehaiku/secrets/intake.token (root only)
    NixOS modulehttp://127.0.0.1:4318the file you gave as intakeTokenFile

    From another machine, use the Poet’s HTTPS intake.

  • The token is your intake token. Write a plain space after Bearer: Claude Code sends the header as written, so %20 is refused.

  • The protocol must be http/protobuf. The Poet takes no gRPC.

On a Mac installed with install.sh, this sets the endpoint and the token in your settings without printing the token (quote the path: it has a space):

python3 - <<'EOF'
import json, os
p = os.path.join(os.environ.get("CLAUDE_CONFIG_DIR", os.path.expanduser("~/.claude")), "settings.json")
d = json.load(open(p)) if os.path.exists(p) else {}
tok = open(os.path.expanduser("~/Library/Application Support/InfiniteHaiku/secrets/intake.token")).read().strip()
d.setdefault("env", {}).update({
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "OTEL_METRICS_EXPORTER": "otlp", "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf", "OTEL_EXPORTER_OTLP_ENDPOINT": "http://127.0.0.1:14318",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer " + tok})
json.dump(d, open(p, "w"), indent=2)
print("updated", p)
EOF

Claude Code reads its settings when it starts: restart your sessions (in VS Code, reload the window).

To try it for one run first, set the same variables on the command line only:

CLAUDE_CODE_ENABLE_TELEMETRY=1 OTEL_METRICS_EXPORTER=otlp OTEL_LOGS_EXPORTER=otlp \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 \
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer $(cat ~/.config/ih/intake-token)" \
claude -p "say hello"

2. See your subscription quota

On a claude.ai Pro or Max plan you pay a fixed price against a quota: a 5-hour and a 7-day share. Claude Code’s telemetry does not carry it; its status line does. ih-mcp (from Connect your AI agent) has a status-line command that shows the quota and sends it to your Poet. Add to ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "ih-mcp statusline"
  }
}
  • It sends to the same endpoint and token as the env block above (OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS), or reads the token from ~/.config/ih/intake-token.
  • The line shows the model, the context used and each window, for example Opus 5.5 · ctx 8% · 5h 41% (resets in 2h10m) · 7d 12% (resets in 4d15h).
  • Already have a status line? Keep it: "command": "ih-mcp statusline --then '<your command>'" runs yours with the same input and shows its output.
  • It sends at most once a minute per window, in the background with a short timeout. It never slows the line or prints an error into it.

Claude Code gives the quota only on a subscription, after the session’s first answer, and only where it draws a status line: in the terminal. Sessions in the VS Code extension send usage and cost but no quota. With an API key there is none, and this block stays hidden.

3. What stays private

  • Prompts are not sent. Claude Code replaces the prompt text with <REDACTED> unless you set OTEL_LOG_USER_PROMPTS=1. Leave it unset.
  • Claude Code does attach your account’s user id and email to every record. They stay on your Poet, like all your data.

4. What you see

Under Dashboards, the source claude-code opens its AI coding agents dashboard.

Subscription quota: the 5-hour and 7-day share used, the time to each reset, and the spending rate in percentage points per hour, from how the share rose over the window. At that rate it also shows when the share would reach 100 %, and the share at the reset (under 100 %: the window resets first). These are observations of your own pace, not limits.

Usage and API-equivalent cost: sessions, tokens and active time; tokens by model and by token type; the cost by model, by subagent type and by session; lines of code; and the latest events (model calls, tool results, API errors).

Tokens are Claude Code’s own counts per model call; in our runs the totals per session matched Claude Code’s own report to the last token. The cost is Claude Code’s estimate at API prices. On a subscription it is not your bill: it tells you which work is heavy, and the quota tells you how fast you spend what you pay for.

Your AI agent can ask too. Through ih-mcp, ask “how fast is my quota going, and which sessions and models burn it?”: per quarter hour, the points the quota rose beside each session’s and model’s tokens. Or ask “which session or agent cost most yesterday, on what model and which tools?”. It answers with one row per session and agent: who started it, its models, model calls, cost, tokens, tools, tool failures and tool time.

Connect your AI agent