Advanced Configuration
Kova は、設定ファイルを通じて動作をカスタマイズできます。デフォルトウォレットの設定、カスタムRPCエンドポイント、ポリシーによる送金制限、API鍵管理など、本番環境での運用に必要な設定をこのガイドで解説します。
設定ファイルの概要
Kova の設定は ~/.kova/config.json に保存されます。
# 設定ファイルの場所
~/.kova/config.json
# 設定を一覧表示(個別キー確認もこちら。i18n 対応の整形表示 + JSON)
kova config list設定は kova config set コマンドで変更するか、直接ファイルを編集して適用できます。
デフォルト設定
よく使うウォレットをデフォルトに設定しておくと、コマンドが簡潔になります。
# デフォルトウォレットを設定
kova config set defaultWallet my-walletconfig.json の例:
{
"defaultWallet": "my-wallet",
"rpcUrls": {},
"policies": {}
}デフォルト設定後は、send などのコマンドで --chain や --name オプションを省略できます:
# 残高確認(引数なし)
kova balance
# 送金(デフォルトウォレット使用)
kova send --name my-wallet --to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb --amount 10 --token USDCカスタムRPC URL設定
デフォルトでは、Kova はパブリックRPCエンドポイントを使用します。本番環境では、専用のRPCプロバイダーを利用することで信頼性とパフォーマンスが向上します。
推奨プロバイダー
| プロバイダー | 特徴 | URL |
|---|---|---|
| Alchemy | 高い信頼性・充実したAPI | https://www.alchemy.com |
| Infura | 老舗・Consensys提供 | https://www.infura.io |
| QuickNode | 高速・多チェーン対応 | https://www.quicknode.com |
| Ankr | コスト効率が高い | https://www.ankr.com |
RPC URLの設定方法
# EthereumのカスタムRPCを設定
kova config set rpcUrls.ethereum "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
# BaseのカスタムRPCを設定
kova config set rpcUrls.base "https://base-mainnet.g.alchemy.com/v2/YOUR_API_KEY"または、config.json を直接編集します:
{
"defaultWallet": "my-wallet",
"rpcUrls": {
"ethereum": "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY",
"base": "https://base-mainnet.g.alchemy.com/v2/YOUR_API_KEY",
"polygon": "https://polygon-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
}
}ポリシーによる送金制限
ポリシーを設定することで、ウォレットの操作に制約を設けられます。AIエージェントに使わせる場合は、必ずポリシーを設定してください。
ポリシールール一覧
ポリシーは rules[] 配列で定義します。主なルール type は snake_case です。
| ルール type | 説明 |
|---|---|
allowed_chains | 使用を許可するチェーン ID(CAIP-2、例: ["eip155:8453"]) |
spending_limit | chain × token ごとの日次/月次累積上限(例: Base 上の USDC 100/日) |
expires_at | ポリシーの有効期限(ISO 8601 timestamp) |
sign_allowlist | 署名許可リスト(message / typed-data 等) |
allowedChains/allowedTokens/maxAmount/requireApprovalといった camelCase のフラット形式は kova では使えません。詳細は policy リファレンス を参照してください。
ポリシーの作成
policy.json を作成:
{
"id": "policy_agent",
"name": "AIエージェント用ポリシー",
"version": 1,
"created_at": "2026-07-07T12:00:00.000Z",
"action": "deny",
"rules": [
{ "type": "allowed_chains", "chain_ids": ["eip155:8453"] },
{ "type": "spending_limit", "chain": "eip155:8453", "token": "USDC", "daily_limit": "100" },
{ "type": "expires_at", "timestamp": "2027-01-01T00:00:00Z" }
]
}# ポリシーを作成
kova policy create --file policy.json
# 作成されたポリシーIDを確認
kova policy list出力例:
{
"ok": true,
"data": {
"policy": {
"id": "policy_agent",
"name": "AIエージェント用ポリシー",
"executable": false,
"registered": true
}
}
}ポリシー違反の送金はエラーになります:
{
"ok": false,
"error": {
"code": "POLICY_DENIED",
"message": "spending_limit (daily) exceeded for eip155:8453:USDC: already spent 50 + this tx 60 = 110 exceeds limit 100. Resets at 2026-07-08T00:00:00.000Z (UTC)."
}
}API鍵管理
API鍵を使うと、ポリシー付きでウォレットへのアクセスを安全に委譲できます。AIエージェントやバックエンドサービスに使わせる際に活用してください。
API鍵の作成・管理
# API鍵のローテーション(初回は kova init で自動発行される)
kova key rotate --name agent-key
# API鍵の一覧表示
kova key list作成時の出力例:
{
"ok": true,
"data": {
"key": {
"id": "key_xyz789",
"name": "agent-key",
"apiKey": "kova_xxxxxxxxxxxxxxxxxxxxxxxx",
"wallet": "my-wallet",
"policyId": "pol_abc123"
}
}
}重要:
apiKeyの値はこのタイミングのみ表示されます。必ず安全な場所に保存してください。
AIエージェントへの組み込み例(TypeScript)
import { execSync } from 'child_process';
// 環境変数からAPI鍵を読み込む
const apiKey = process.env.KOVA_API_KEY;
if (!apiKey) {
throw new Error('KOVA_API_KEY environment variable is required');
}
interface SendResult {
ok: boolean;
data?: {
dryRun: boolean;
txHash?: string;
explorerUrl?: string;
};
error?: {
code: string;
message: string;
};
}
async function sendWithPolicy(
to: string,
amount: string,
token: string
): Promise<SendResult> {
const env = { ...process.env, KOVA_API_KEY: apiKey };
const result = execSync(
`kova send --name my-wallet --to ${to} --amount ${amount} --token ${token} --broadcast`,
{ encoding: 'utf-8', env }
);
return JSON.parse(result);
}
// 使用例
async function main() {
const result = await sendWithPolicy(
'0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
'10',
'USDC'
);
if (result.ok) {
console.log(`送金成功: ${result.data.explorerUrl}`);
} else {
console.error(`エラー: ${result.error.code} - ${result.error.message}`);
}
}
main();KOVA_API_KEY 環境変数が設定されている場合、CLIは自動的にポリシー評価を行います。
設定のバックアップと復元
設定ファイルとウォレットデータは定期的にバックアップしてください。
# 設定ファイルのバックアップ
cp ~/.kova/config.json ~/backup/kova-config-$(date +%Y%m%d).json
# ウォレットデータのバックアップ(暗号化ファイルとして保存)
cp -r ~/.kova/wallets/ ~/backup/kova-wallets-$(date +%Y%m%d)/
# バックアップからの復元
cp ~/backup/kova-config-20240101.json ~/.kova/config.json注意: ウォレットデータには秘密鍵が含まれます。バックアップファイルは暗号化ストレージやパスワードマネージャーで保護してください。
本番環境のベストプラクティス
-
API鍵を環境変数で管理する - APIキーをコードやファイルにハードコードしないでください。
.envファイルや環境変数管理サービス(AWS Secrets Manager、HashiCorp Vaultなど)を活用しましょう。 -
最小権限のポリシーを設定する - AIエージェントや自動化スクリプトに与えるポリシーは、必要最小限の権限に絞ってください。
allowed_chainsでチェーンを制限し、spending_limitで許可トークンと累積上限を明示することを推奨します。 -
専用のRPCエンドポイントを使用する - 本番環境ではパブリックRPCではなく、Alchemy・Infura・QuickNodeなどの専用プロバイダーを利用して信頼性を確保しましょう。
-
設定ファイルをバージョン管理から除外する -
~/.kova/ディレクトリはリポジトリにコミットしないでください。APIキーや秘密鍵が含まれる場合があります。 -
定期的にAPI鍵をローテーションする - 定期的に
kova key rotate --name <key-name>で鍵を更新することでセキュリティリスクを低減できます。
関連項目
- Multi-Chain Operations - マルチチェーン運用ガイド
- AI Agent Integration - AIエージェント統合とポリシー設定
- Core Concepts: Security - セキュリティのベストプラクティス
- CLI Commands: config - configコマンドの詳細