Snak について
Snak は Starknet 上で AI エージェントを構築するためのエージェントエンジンで、NPM パッケージとしても、すぐに実行できるバックエンドとしても提供されています。Starknet に接続したエージェントを開発したい開発者を対象とし、プロンプトモードとサーバーモードで動作します。
主な機能
- 01Starknet 向けのエージェントエンジン
- 02NPM パッケージとして利用可能
- 03すぐに実行できるバックエンドサービス
- 04プロンプトモードとサーバーモード
- 05JSON ファイルによるエージェントとモデルの設定
活用シーン
- 01Starknet 上での自律型または対話型エージェントの構築
- 02既存の TypeScript プロジェクトへのエージェント機能の組み込み
- 03サーバーモードによるエージェントの外部提供
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/KasarLabs/brand/blob/main/projects/snak/snak-full-white-alpha.png?raw=true">
<img src="https://github.com/KasarLabs/brand/blob/main/projects/snak/snak-full-black-alpha.png?raw=true" width="200" alt="Snak ロゴ">
Starknet を活用した、強力で安全な AI エージェントを作成するためのエージェントエンジンです。NPM パッケージと、すぐに使えるバックエンドの両方を提供しています。
クイックスタート
前提条件
- Starknet ウォレット(推奨:Argent X)
- AI プロバイダーの API キー(Anthropic/OpenAI/Google Gemini/Ollama)
- Docker と Docker compose がインストールされていること
- Node.js と pnpm がインストールされていること
インストール
git clone https://github.com/kasarlabs/snak.git
cd snak
pnpm install
設定
.env.exampleをコピーして.envファイルを作成します。
cp .env.example .env
次に、.env ファイルに必要な値を入力します。
# --- Starknet configuration (mandatory) ---
STARKNET_PUBLIC_ADDRESS="YOUR_STARKNET_PUBLIC_ADDRESS"
STARKNET_PRIVATE_KEY="YOUR_STARKNET_PRIVATE_KEY"
STARKNET_RPC_URL="YOUR_STARKNET_RPC_URL"
# --- AI Model API Keys (mandatory) ---
# Add the API keys for the specific AI providers you use in config/models/default.models.json
# The agent will automatically load the correct key based on the provider name.
# Example for OpenAI:
OPENAI_API_KEY="YOUR_OPENAI_API_KEY" # (e.g., sk-...)
# Example for Anthropic:
ANTHROPIC_API_KEY="YOUR_ANTHROPIC_API_KEY" # (e.g., sk-ant-...)
# Example for Google Gemini:
GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
# Example for DeepSeek:
DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"
# Note: You do not need an API key if using a local Ollama model.
# --- General Agent Configuration (mandatory) ---
SERVER_API_KEY="YOUR_SERVER_API_KEY" # A secret key for your agent server API
SERVER_PORT="3001"
# --- PostgreSQL Database Configuration (mandatory) ---
POSTGRES_USER=admin
POSTGRES_HOST=localhost
POSTGRES_DB=postgres
POSTGRES_PASSWORD=admin
POSTGRES_PORT=5432
# --- LangSmith Tracing (Optional) ---
# Set LANGSMITH_TRACING=true to enable tracing
LANGSMITH_TRACING=false
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY="YOUR_LANGSMITH_API_KEY" # (Only needed if LANGSMITH_TRACING=true)
LANGSMITH_PROJECT="Snak" # (Optional project name for LangSmith)
# --- Node Environment ---
NODE_ENV="development" # "development" or "production"
-
AI モデルを設定します(任意)。
config/models/default.models.jsonファイルでは、さまざまなタスク(fast、smart、cheap)で使用するデフォルトの AI モデルを定義します。このファイルをカスタマイズするか、新しいモデル設定(例:my_models.json)を作成し、エージェントの実行時に指定できます。構造についてはconfig/models/example.models.jsonを参照してください。エージェントはモデル設定の
providerフィールドを使って、.envファイルから読み込む API キーを判断します(例:providerがopenaiの場合、OPENAI_API_KEYを読み込みます)。 -
config/agents/ディレクトリに、エージェント設定ファイル(例:default.agent.jsonまたはmy_agent.json)を作成します。
{
"name": "Your Agent name",
"group": "Your Agent group",
"description": "Your AI Agent Description",
"lore": ["Some lore of your AI Agent 1", "Some lore of your AI Agent 1"],
"objectives": [
"first objective that your AI Agent need to follow",
"second objective that your AI Agent need to follow"
],
"knowledge": [
"first knowledge of your AI Agent",
"second knowledge of your AI Agent"
],
"interval": "Your agent interval beetween each transaction of the Agent in ms,",
"chatId": "Your Agent Chat-id for isolating memory",
"max_iterations": "The number of iterations your agent will execute before stopping",
"mode": "The mode of your agent, can be interactive, autonomous or hybrid",
"memory": {
"enabled": "true or false to enable or disable memory",
"shortTermMemorySize": "The number of messages your agent will remember"
},
"plugins": ["Your first plugin", "Your second plugin"],
"mcp_servers": {
"nxp_server_example": {
"command": "npx",
"args": ["-y", "@npm_package_example/npx_server_example"],
"env": {
"API_KEY": "YOUR_API_KEY"
}
},
"local_server_example": {
"command": "node",
"args": ["node /path/to/local_server/dist/index.js"]
}
}
}
snakagent のツールを使えば、独自のエージェント設定を簡単に作成できます。
使用方法
プロンプトモード
プロンプトを実行します。
# start with the default.agent.json
pnpm run start
# start with your custom configuration
pnpm run start --agent="name_of_your_config.json" --models="name_of_your_config.json"
サーバーモード
サーバーを実行します。
# start with the default.agent.json
pnpm run start:server
# start with your custom configuration
pnpm run start:server --agent="name_of_your_config.json" --models="name_of_your_config.json"
利用可能なモード
| 対話モード | 自律モード | |
|---|---|---|
| プロンプトモード | ✅ | ✅ |
| サーバーモード | ✅ | ✅ |
プロジェクトに Snak を実装する
- snak パッケージをインストールします。
#using npm
npm install @snakagent
# using pnpm
pnpm add @snakagent
- エージェントのインスタンスを作成します。
import { SnakAgent } from 'starknet-agent-kit';
const agent = new SnakAgent({
provider: new RpcProvider({ nodeUrl: process.env.STARKNET_RPC_URL }),
accountPrivateKey: process.env.STARKNET_PRIVATE_KEY,
accountPublicKey: process.env.STARKNET_PUBLIC_ADDRESS,
aiModel: process.env.AI_MODEL,
aiProvider: process.env.AI_PROVIDER,
aiProviderApiKey: process.env.AI_PROVIDER_API_KEY,
signature: 'key',
agentMode: 'interactive',
agentconfig: y,
});
const response = await agent.execute("What's my ETH balance?");
アクション
アクションの詳細については、こちらのドキュメントをご覧ください。 Kit の包括的なインターフェースでは、利用可能なすべてのプラグインとそのアクションを、見つけやすく操作しやすいカタログで提供します。
エージェントにアクションを追加するには、こちらの手順ガイドに従ってください。
コントリビューション
コントリビューションを歓迎します。お気軽にプルリクエストを送信してください。
ライセンス
MIT ライセンスです。詳細は LICENSE ファイルをご覧ください。
詳細なドキュメントについては、docs.kasar.ioをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。