Iインストール

最初の証明。

クリーンな環境から、ハッシュ付きで再生可能な答えまで一分以内。アカウント不要、キー不要、サーバー不要。どちらの言語でも同じ四ステップを実行すれば、証明は同じハッシュになる。

TypeScriptNode ≥ 20

  1. 01インストール

  2. 02ソースを接続する

    import { createSQAI } from "@thyn-ai/sqai";
    
    const sqai = createSQAI();
    await sqai.connect("./sales.csv",
      { name: "sales" });
  3. 03クエリを実行する

    const a = await sqai.ask({
      metric: "revenue",
      aggregation: "sum",
      group_by: "region",
      source_name: "sales",
    });
    // east 2130.5 · west 1519 · north 1000
    // plan_hash f87610d8afeb…
  4. 04値を計算する

    const r = await sqai.compute({
      module: "finance", function: "npv",
      args: [0.1, [-1000, 300, 420, 560, 680]],
    });
    r.value505.020148896933
    r.computation_hashb74f67d0…d91bc8

PythonPython ≥ 3.10 が必要

  1. 01インストール

  2. 02ソースを接続する

    from sqai import SQAI
    
    sqai = SQAI()
    sqai.connect("./sales.csv",
      name="sales")
  3. 03クエリを実行する

    a = sqai.ask({
      "metric": "revenue",
      "aggregation": "sum",
      "group_by": "region",
      "source_name": "sales",
    })
    # east 2130.5 · west 1519 · north 1000
    # plan_hash f87610d8afeb…
  4. 04値を計算する

    r = sqai.compute(
      module="finance", function="npv",
      args=[0.1, [-1000, 300, 420, 560, 680]],
    )
    r["value"]505.020148896933
    r["computation_hash"]b74f67d0…d91bc8
計算ハッシュ · TypeScript ≡ Python

b74f67d0d7a594aa7ac91f6291612452aa8ccdf603351ebc8d801a6fddd91bc8

完全一致。バイト単位で。

両 SDK は同じ結果を同じバイト列に正規化するため、ハッシュは言語をまたいで一致する — 偶然ではなく、設計による。どこでこの呼び出しを再生しても、この行が出力されなければならない。

II初回セットアップ

一度プロビジョニングすれば、あとは即時。

クエリプレーンはインストール完了と同時にインプロセスで起動 — デーモン不要、キー不要。コンピュートプレーンは初回の compute() 時に署名済みランタイムを一度プロビジョニングし、以降は常駐させる。

await sqai.compute(…)  // first call, ever約 110 秒 · マシンごとに一度

  1. 01プラットフォームバンドルをダウンロード
  2. 02RS256 署名とアーティファクトごとの sha256 を検証
  3. 03アトミックに展開・インストール
  4. 04常駐エンジンを起動

await sqai.compute(…)  // every call after0.83〜0.93 ms · 実測値

ランタイムはすでに常駐している — ダウンロードなし、コールドスタートなし、クエリごとのセットアップなし。

バンドルはユーザー単位でキャッシュされるため、プロビジョニングはマシンごとに一度 — プロセスごとではない。

III検証

一つのコマンドでマシン全体を確認。

✓ node: v20.11.0
✓ sdk: @thyn-ai/sqai 0.1.4 imports cleanly
✓ contract: 4778 capabilities
  sha256:79f1c5a6c7164e7e9e1750e70a5c03292fa87eb52d8148a740c06695924be9a1
• tested-pair: skipped (not in the repo)
• runtime: unavailable (checks skipped)
✓ doctor: ok

doctor は Node バージョン、SDK インポート、埋め込みコントラクト、ライブランタイムプローブを確認する。クリーンな環境ではランタイム行が unavailable と表示されるが、これはスキップであり失敗ではない。クエリプレーンにランタイムは不要だ。

  • ハッシュ固定コントラクトには 4,778 のケイパビリティが含まれ、そのうち 4,574 が SDK に公開されている — 読み取り専用かつ決定論的。
  • `--parity` を追加すると、その不変条件をアサートし、コントラクトモジュールと実行中エンジンの差分を確認できる。
  • `--json` を追加すると、JSON オブジェクトを一つだけ出力 — CI 向けに設計されている。

IV要件

一分間に必要なもの。

Node
npmパッケージには20以上が必要です — doctor が強制します。
Python
PyPIパッケージには3.10以上が必要です。
コンピュートプレーン
darwin-arm64 または linux-x64 — 署名済みランタイムは初回の compute() 時にプロビジョニングされます。
クエリプレーン
Node または Python が動作する環境であればどこでも。
Windows・その他
クエリプレーンは完全に動作します。compute() はクラッシュせず、構造化された unsupported_platform エラーを返します。

サポート対象外のホストでは、SQAI_ENGINE_URL または SQAI_API_KEY でリモートエンジンにコンピュートを向けてください — クエリとディスパッチは引き続き機能し、ローカルプロビジョニングのみスキップされます。

Vオペレーターの作業帯

SDK を支える3つのコマンド。

接続・問い合わせ・コンピュートはすべて SDK を通じてインプロセスで行われます。CLI はその周囲で使うツールです — デバイスのサインイン、環境の確認、ランタイムの管理を担います。

  1. $sqai login [--no-browser]

    accounts.thyn.ai 経由のオプションのデバイスサインイン(RFC 8628)。署名済みトークンのみを転送し、データは一切送信しません。1台まで無料。

  2. $sqai doctor [--parity] [--json]

    Node、SDKインポート、組み込みコントラクト、ライブランタイムプローブを確認します。--parity は読み取り専用・決定論的な不変条件をアサートします。

  3. $sqai runtime <status|install|verify|stop>

    常駐コンピュートランタイム: 状態の報告、事前インストール、固定 sha256 の検証、停止。

すべてのコマンドは --json を受け付け、JSONオブジェクトを1つだけ出力します。終了コードはスクリプト対応です: 0 成功 · 1 チェック失敗 · 2 使用法エラー。