Snak

Un motor de agentes para crear Agentes de IA potentes y seguros impulsados por Starknet.

Documentación

Un motor de agentes para crear agentes de IA potentes y seguros impulsados por Starknet. Disponible tanto como paquete NPM como backend listo para usar.

Inicio rápido

Requisitos previos

  • Billetera Starknet (recomendada: Argent X)
  • Clave API del proveedor de IA (Anthropic/OpenAI/Google Gemini/Ollama)
  • Docker y Docker compose instalados
  • Node.js y pnpm instalados

Instalación

git clone https://github.com/kasarlabs/snak.git
cd snak
pnpm install

Configuración

  1. Crea un archivo .env copiando .env.example:
cp .env.example .env

Luego, completa los valores necesarios en tu archivo .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"
  1. Configura los modelos de IA (opcional): El archivo config/models/default.models.json define los modelos de IA predeterminados utilizados para diferentes tareas (fast, smart, cheap). Puedes personalizar este archivo o crear nuevas configuraciones de modelos (por ejemplo, my_models.json) y especificarlas al ejecutar el agente. Consulta config/models/example.models.json para conocer la estructura.

    El agente utiliza el campo provider en la configuración del modelo para determinar qué clave API cargar desde el archivo .env (por ejemplo, si provider es openai, carga OPENAI_API_KEY).

  2. Crea tu archivo de configuración del agente (por ejemplo, default.agent.json o my_agent.json) en el directorio config/agents/:

{
  "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"]
    }
  }
}

Puedes crear fácilmente tu propia configuración de agente usando nuestra herramienta en snakagent

Uso

Modo de aviso

Ejecuta el aviso:

# 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"

Modo servidor

Ejecuta el servidor:

# 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"

Modos disponibles

Modo interactivoModo autónomo
Modo de aviso✅✅
Modo servidor✅✅

Implementa Snak en tu proyecto

  1. Instala el paquete snak
#using npm
npm install @snakagent

# using pnpm
pnpm add @snakagent
  1. Crea tu instancia de agente
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?");

Acciones

Para obtener más información sobre las acciones, puedes leer esta sección de la documentación. Una interfaz integral en el Kit proporcionará un catálogo fácil de navegar con todos los complementos disponibles y sus acciones, lo que simplificará el descubrimiento y el uso.

Para agregar acciones a tu agente, puedes seguir fácilmente la guía paso a paso aquí

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar una solicitud de extracción.

Licencia

Licencia MIT: consulta el archivo LICENSE para obtener más detalles.


Para documentación detallada, visita docs.kasar.io