メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.kodus.io/llms.txt

Use this file to discover all available pages before exploring further.

各セルフホストの Kodus インスタンスは、https://telemetry.kodus.io1日1回、匿名のハートビートを送信します。ペイロードには集計された カウンタとランタイムメタデータのみが含まれ、コード、識別情報、または あなたやユーザーを追跡できる情報は一切含まれません。 このページでは、何が送信されるか、なぜ送信するか、どこに保管されるか、 どのように無効化するかを正確に文書化します。

送信する内容

UTC で1日1回の POST /v1/heartbeat、約700バイト。ペイロードの例 (明確化のために UUID を編集):
{
  "schema_version": 1,
  "instance_id": "0188f5c5-5b8f-4f45-92d4-b20c25df0b5a",
  "sent_at": "2026-05-04T03:17:00.000Z",
  "kodus": {
    "version": "0.4.15",
    "deployment": "docker",
    "uptime_hours": 124
  },
  "runtime": {
    "node_version": "v20.11.1",
    "os": "linux",
    "arch": "x64",
    "cpu_count": 8,
    "db_type": "postgres",
    "db_version": "PostgreSQL 15.4"
  },
  "usage_7d": {
    "active_users": 12,
    "organizations": 1,
    "teams": 2,
    "repos_connected": 9,
    "prs_reviewed": 184,
    "suggestions_generated": 0,
    "suggestions_applied": 0
  },
  "config": {
    "kody_rules_enabled": true,
    "agent_review_repos_pct": 0,
    "integrations": ["github", "slack"]
  }
}
完全なスキーマは kodus-beacon リポジトリ にあります — 不明なフィールドを 400 で拒否する厳格なバリデーター によりサーバー側で強制されます。

決して送信しないもの

設計上、スキーマには以下を含めることができません:
  • ユーザーのメールアドレス、名前、OAuth トークン、API キー
  • リポジトリ名、ブランチ名、PR のタイトル、コミットメッセージ、コードの内容
  • 顧客を識別する文字列(組織のスラッグ、ワークスペース名、カスタム ドメイン)
  • IP アドレス(receiver は不正検知のためだけに、毎日ローテーションする salt で送信元 IP をハッシュ化し、生の IP は決して保持しません)
  • 自由記述のテキストフィールド
receiver はボディに 5 KB の制限を設けており、文書化されたスキーマ外の フィールドはすべて拒否します。そのため、誤って設定されたクライアントが データを漏洩することはありません。

なぜこれを収集するか

匿名のハートビートにより、セルフホストユーザーについて他の方法では 答えられない質問に答えることができます:
  • どのバージョンの Kodus がまだ使用されているか、新しいリリースが どれだけ早く採用されているか
  • オペレーターがどのようにデプロイしているか(Docker / Kubernetes / bare metal)— 実際に使われているプラットフォームを優先するため
  • Kody Rules のような機能がセルフホストユーザーに届いているか
  • ボリュームシグナル(フリート全体でレビューされた PR、接続された リポジトリ)— キャパシティ判断のサイジング用
これにより、特定のインスタンス、顧客、ユーザーを識別することは できません。テレメトリに基づいて連絡することもありません。データを 共有または販売することもありません。

インスタンスが送信する内容を確認する

ハートビートがインスタンスから出る前に、毎日の cron が構築する正確な ペイロードを出力できます:
yarn telemetry:preview
このコマンドは最小限の Kodus コンテキストを起動し、cron が使用するのと 同じコレクターを実行し、JSON を stdout に出力します — 送信は しません。jq にパイプして探索できます:
yarn telemetry:preview | jq '.usage_7d'

テレメトリを無効化する

環境で KODUS_TELEMETRY_DISABLED=true を設定します。cron は静かに スキップされ、元に戻すまでハートビートは送信されません。
# .env
KODUS_TELEMETRY_DISABLED=true
許容される真の値(大文字小文字を区別しない):1trueyeson。それ以外の値(空を含む)はテレメトリを有効のままにします。

データの保管場所

  • Receiver: telemetry.kodus.io にデプロイされた小さな Node.js サービス(Fastify)。ソースコードは公開されています: kodustech/kodus-beacon
  • ストレージ: Neon Postgres、US リージョン、保存時に暗号化、TLS のみ。2つのテーブル — telemetry_instances(インスタンスごとに 1行、last seen + version)と telemetry_heartbeats(インスタンス ごと、UTC 日ごとに 1 行、ペイロードは JSONB)。
  • 保持期間: 個別のハートビート行は 12ヶ月 保持されます。その後、 カウンタを履歴統計に集約し(例:「2026年1月の活動インスタンス数 X」)、 日ごとの行を削除します。インスタンス行は残ります — 時系列データは 持たず、最新バージョンと last seen のタイムスタンプのみです。
  • アクセス: 製品エンジニアリングチームのみ、監査付きの Neon の個別 認証情報経由。データは第三者と共有されることはなく、AI モデルの トレーニングに使用されることもありません。

監査可能なソースコード

両端ともオープンで、最初から最後まで読むのに十分小さいです:

ご質問

ここで不明な点がある場合や、フィールドの追加、削除、より詳細な文書化を 希望する場合は、kodustech/kodus-beacon に issue を開くか、Discord でご連絡ください。