ローカルAPI
ローカルエンドポイントは 127.0.0.1:LOCAL_PORT(既定 3001)で待ち受けます。公開エンドポイントと同じプロセスで動きますが、ループバックのみにバインドされます — 同じマシン上の所有者のアプリ、CLI、ツール向け(あるいはTailscaleやVPNなどのトンネル経由で到達)です。
まだ認証なし
ローカルエンドポイントは現在 認証がありません。分離は完全に 127.0.0.1 バインドに依存します。このポートをインターネットへポートフォワードやリバースプロキシしないでください。所有者のチャレンジ・レスポンス認証は計画中です — 下記を参照。
ベースURL
http://127.0.0.1:3001ルート
ローカルエンドポイントは 公開API と 同じルート を公開します。構造的な違いは1つ: どのデータベースにアクセスするかです。
| ルート | 公開エンドポイント | ローカルエンドポイント |
|---|---|---|
GET /health | — | 同一 |
POST /v1/devices | raiznet_public.db に書き込み | raiznet_private.db に書き込み |
GET /v1/devices, GET /v1/devices/:id | raiznet_public.db を読み取り | raiznet_private.db を読み取り |
GET /v1/devices/:id/telemetry | raiznet_public.db を読み取り | raiznet_private.db を読み取り |
POST /v1/telemetry | 取り込み先 public | 取り込み先 local |
この非対称は意図的です。ローカルエンドポイントでデバイスを登録すると、プライベートデータベースに ローカルデバイス として作成され、公開側からは不可視です。
取り込み先
ローカルエンドポイントの POST /v1/telemetry は、デバイスの publishTo が 0(local_only)または 2(both)のとき、読み取りを raiznet_private.db に保存します。publishTo: 1(公開のみ)のデバイスがここにポストすると、検証され受理されますが何も保存されません。
both のデバイスは、各エンドポイントへ 別々のリクエスト を送ります — 1つは公開、1つはローカル — それぞれその宛先のフィールド処分に従って組み立てられます。
リモートアクセス
LAN外からローカルデータを読むには、プライベートオーバーレイネットワーク(Tailscale、WireGuard)でサーバーの 127.0.0.1:3001 に到達するか、フィールドを公開ネットワーク向けに encrypted とマークしてアプリで復号してください(プライバシーモデル を参照)。
計画中: 所有者認証
所有者のユーザー鍵によるチャレンジ・レスポンス認証は設計済みですが まだ未実装 です。
- クライアントが
GET /v1/auth/challengeを呼ぶ → 32バイトの乱数を受け取る。 - クライアントがチャレンジをユーザー秘密鍵で署名する。
- クライアントが署名を
POST /v1/auth/verifyに送る → セッショントークンを受け取る。
計画中: 統合ビュー
ローカルエンドポイントは最終的に raiznet_public.db + raiznet_private.db を (device_pubkey, seq) で統合し、所有者がデバイスごとに1つの連続シリーズを見られるようにします。暗号化フィールドはローカル復号のため cipher + nonce として返されます。今日、各エンドポイントは自身のデータベースのみを返します。