Solana上で自律エージェントを動かす開発者にとって、オンチェーン操作の実装コストが一段下がりました。

2026年7月4日、CovenantがTypeScript向けSDK @covenant-org/sdk の0.2.0を公開しました。公式X(旧Twitter)の告知では、ひとつの CovenantClient でPDA(Program Derived Address、プログラムが決定的に導出するSolana上のアドレス)の導出、署名、送信、確認、デコード済みオンチェーン状態の読み取りまでを扱えると説明されています(参考)。

この記事では、0.2.0で何が変わったのか、どんな開発者に向くのか、実際の使い方の要点を整理します。

この記事でわかること

  • Covenant SDK 0.2.0の主な変更点と位置づけ
  • CovenantClient が担う操作の範囲
  • Nodeとブラウザで同じコードが動く理由
  • エージェント登録・$CVNTステーキング・タスク作成の入口

Covenantとは何のための基盤か

Covenantは、AIエージェントがコード実行やファイル操作、決済などの特権操作を安全に行うためのオープンなオペレーティングレイヤーです。ローカルで動くデーモン covenantd が、意図(intent)、ランタイム、メモリ、ID、権限、通信、コンポジタ、決済(settlement)の8つのプリミティブをホスト上の共通サービスとして提供します(参考)。

エージェントは常時アクセス権を持つのではなく、ed25519署名付きのケイパビリティ(能力トークン)ごとに許可された操作だけを実行します。あわせて、ハッシュチェーンで改ざん検知できる監査ログに記録が残る設計です(参考)。

Solana連携の面では、エージェント登録、$CVNTトークンのステーキング、タスクのエスクロー、クレジット購入、レシートのアンカーなど、決済プログラムとステーキングプログラムの操作をTypeScriptから扱う必要があります。0.2.0以前は低レベルの命令ビルダーを組み合わせる形が中心でしたが、開発者が毎回PDA導出とトランザクション組み立てを自前で揃える負担が残っていました。

0.2.0で変わったこと

npmの公開情報によると、0.2.0は2026年7月4日にリリースされています。0.1系(0.1.0〜0.1.3)は同年7月2日から順次公開されており、0.2.0はその直後のメジャーな機能追加です(参考)。

今回の中心は CovenantClient という高レベルクライアントの提供です。公式READMEでは、クライアントがすべてのPDAを導出し、operator・owner・clientアカウントとして署名者を埋め込み、オンチェーン設定から$CVNTミントを解決したうえで、各呼び出しのビルド・署名・送信・確認まで実行すると説明されています。読み取り系(getConfiggetAgent など)は署名不要で、取得したアカウントデータをデコード済みの型付きオブジェクトとして返します。

対応する主な操作は次のとおりです。

  • エージェント登録(registerAgent
  • $CVNTステーキング(stake
  • クレジット購入(buyCredits
  • タスク作成(createTask
  • タスク解放(releaseTask
  • レシートバッチのアンカー(anchorReceiptBatch

低レベルAPIも引き続き公開されています。prepareRegisterAgentInstruction のような命令ビルダー、deriveAgentPda などのPDAヘルパー、fetchAgentdecode* 系の直接読み取り関数は、細かい制御が必要な場合に使えます。命令データはオンチェーンIDL(決済プログラム cov9UDyp...、ステーキングプログラム CstkpU2q...)からエンコードされるため、ワイヤ形式がプログラム実装とずれにくい点もREADMEで強調されています(参考)。

ステータスはアルファ段階です。compatibility/exports.v1.jsoncompatibility/instructions.v1.json で公開面と命令仕様を固定していますが、セマンティックバージョニングの互換保証はまだなく、READMEはバージョンのピン留めを推奨しています。

Nodeもブラウザも同じコードで動く理由

従来、Solana向けSDKはサーバー側のKeypairとブラウザのウォレットアダプターで署名フローが分かれがちです。0.2.0は keypairSignerwalletAdapterSigner という2つの署名アダプターを用意し、どちらも同じ CovenantClient コンストラクタに渡すだけで動作を切り替えられます。

サーバー側では @solana/web3.jsKeypairkeypairSigner で包みます。ブラウザでは Phantom などのウォレットアダプターを walletAdapterSigner に渡します。公式クイックスタートのコード例は、接続先と署名者の指定以外は同一です(参考)。

この設計により、バックエンドのエージェントオーケストレーターとフロントエンドのオペレーターコンソールで、登録・ステーキング・タスク操作のロジックを共有しやすくなります。対象読者は、自律エージェントをSolanaメインネット上で動かすTypeScript開発者から、ウォレット連携付きのWebダッシュボードを作るフロントエンド開発者まで広がります。

インストールと基本的な使い方

https://www.npmjs.com/package/@covenant-org/sdk

インストールは次の1行です。

npm add @covenant-org/sdk @solana/web3.js

@solana/web3.js v1系はピア依存関係のため、プロジェクト側で明示的に入れる必要があります。ライセンスはApache-2.0、リポジトリは open-covenant/covenant です。

高レベルAPIの流れは次のとおりです。接続先にSolana RPCを渡し、署名者を設定して CovenantClient を生成します。読み取りは getConfiggetAgent で即座に試せます。書き込みは registerAgent のようにメソッドを呼ぶだけで、内部でPDA導出から確認待ちまで進みます。

エージェントキーやメタデータは hash32FromText で32バイトハッシュに変換して渡します。メタデータURLやケイパビリティ一覧を文字列からハッシュ化する方式なので、オンチェーンに長い文字列を載せずにエージェント定義を参照できます。

ネットワーク設定は resolveSolanaNetwork でまとめて解決します。クラスター、RPC URL、プロトコルプログラムID、$CVNTミントは引数または環境変数(COVENANT_SOLANA_CLUSTERCOVENANT_SOLANA_RPC_URLCOVENANT_PROTOCOL_PROGRAM_IDCOVNT_MINT)で上書きできます。ブラウザ向けビルドでは NEXT_PUBLIC_ 接頭辞付きの変数も読み込まれます。デフォルトクラスターはdevnetですが、公式告知はメインネット対応を明示しており、本番利用時は { cluster: 'mainnet' } を指定する想定です(参考)。

$CVNTステーキングとタスク操作の位置づけ

$CVNTはCovenantのSolana上のトークンで、固定供給かつミント権限放棄済みと公式サイトで説明されています。プロトコル利用に伴う収益の一部はステーカーにSOLで分配され、ステーキングプログラムでは7・30・90・180日の固定ロック期間が用意されています(参考)。

SDKの stakeprepareStakeInstruction は、このステーキングプログラム向けの命令を組み立てます。$CVNTを動かす操作では、オーナーのトークンアカウント(deriveAssociatedTokenAddress で導出)とステーク金庫アドレスが必要です。ミントアドレスはオンチェーン設定から取得するか、環境変数 COVNT_MINT で指定します。

タスク作成(createTask)と解放(releaseTask)は、エージェント間の仕事のエスクローと決済に関わる入口です。クレジット購入(buyCredits)やレシートバッチのアンカー(anchorReceiptBatch)とあわせ、ローカルデーモンが記録する監査ログとオンチェーン状態を接続するためのAPI群として位置づけられます。

低レベルAPIを選ぶべき場面

CovenantClient で足りない場合は、命令ビルダーと toTransactionInstructions を使います。複数命令を1トランザクションにまとめたい、カスタムの確認戦略を入れたい、特定アカウントだけ差し替えたいときに有効です。

PDAヘルパーは deriveConfigPdaderiveAgentPdaderiveTaskPdaderiveCreditsPdaderiveStakePositionPdaderiveReceiptBatchPda などが揃っています。低レベルビルダーのアカウント引数はbase58文字列なので、PDAオブジェクトは .address.toBase58() で渡します。

読み取りだけなら fetchConfigfetchTask を直接呼べます。クライアントを生成せず状態監視やインデクサを書く用途に向きます。

注意点

0.2.0はアルファ版です。本番投入時はバージョンを固定し、IDLや命令仕様の変更に備えてテストネットでの動作確認を先に行ってください。

$CVNTを扱う操作では、トークンアカウントの準備とステーク金庫アドレスの設定が欠かせません。READMEの例では stakeVault をデプロイ時に決めた定数として渡しており、環境ごとに値が異なります。

Covenant本体のローカル制御プレーン(デーモン、CLI、権限、監査など)はすでに実装が進んでいますが、分散型決済やSDK公開の一部はロードマップ上の項目としてドキュメントに記載されています(参考)。SDK 0.2.0はSolanaプロトコル面のTypeScriptクライアントとして独立して使えますが、ローカルデーモンと組み合わせることで、権限付きエージェント実行とオンチェーン決済を一連の流れにできます。

Solana上で自律エージェントを扱うプロジェクトにとって、0.2.0は「PDA導出から状態読み取りまでを1クライアントに集約した」実用的な一歩です。NodeのKeypairでもブラウザのウォレットでも同じAPIが使えるため、バックエンドとフロントエンドの実装差分を抑えながら、エージェント登録・$CVNTステーキング・タスク操作に着手できます。