HomeDocumentation

Introduction

Sillan lets you deploy autonomous AI agents with streaming chat, tool execution, and a live activity dashboard. Bring your own Anthropic API key, pick from 4 built-in agent templates, and start chatting in under a minute.

Your API key is stored in your browser's localStorage and sent directly to the Anthropic API. It never touches Sillan's servers.

Quickstart

Get a working AI agent running in three steps:

1

Enter your API key

Navigate to the deploy page and paste your Anthropic API key. Click Verify to validate it.

2

Choose a template

Select one of four agent templates — each comes with specialized tools and instructions.

3

Deploy & chat

Hit Deploy Agent. You'll be redirected to the dashboard where you can chat in real-time.

Terminal
$ open http://localhost:4100/deploy
# 1. Paste your sk-ant-... key
# 2. Select "Oracle"
# 3. Click Deploy Agent
# → Redirects to /dashboard?agent=oracle

API Key Setup

Sillan uses a bring-your-own-key model. You need an Anthropic API key with access to Claude Sonnet.

How it works
// On deploy, the key is validated:
POST https://api.anthropic.com/v1/messages
Headers: { "x-api-key": YOUR_KEY }
 
// On every chat message, the key is sent:
POST /api/agent/chat
Body: { agentId, messages, apiKey }
 
// The server creates a fresh model instance per-request
const anthropic = createAnthropic({ apiKey })
streamText({ model: anthropic("claude-sonnet-4-20250514"), ... })
Never share your API key publicly. Sillan stores it only in your browser's localStorage — clearing your browser data will remove it.

Agent Templates

Each template configures a Claude model with a specialized system prompt and one or more tools. All templates support streaming and multi-step tool execution.

Oracle

Fetches real-time cryptocurrency prices from the CoinGecko free API. Understands common token name mappings (BTC → bitcoin, SOL → solana, ETH → ethereum).

Tool: fetchTokenPrice
// Parameters
{ tokenId: string } // CoinGecko ID, e.g. "bitcoin"
 
// Returns
{ tokenId: "solana", priceUsd: 148.32 }
 
// Example conversation
User: "What's the price of SOL?"
→ fetchTokenPrice({ tokenId: "solana" })
← { tokenId: "solana", priceUsd: 148.32 }
Agent: "SOL is currently trading at $148.32 USD."

Scout

Searches the web using the DuckDuckGo instant answer API. Returns summaries and related topics with source URLs.

Tool: searchWeb
// Parameters
{ query: string }
 
// Returns
{ results: [{ title, snippet, url }] }

Sentinel

Checks Solana wallet balances via the public mainnet RPC endpoint. Converts lamports to SOL automatically.

Tool: checkSolanaBalance
// Parameters
{ address: string } // Base58 public key
 
// Returns
{ address: "7xK9...", balanceSol: 12.4 }

Herald

Generates structured content prompts for tweets, threads, blog outlines, and announcements. Supports tone control.

Tool: generateContent
// Parameters
{
topic: string,
format: "tweet" | "thread" | "blog_outline" | "announcement",
tone: "professional" | "casual" | "hype" | "technical"
}
 
// Returns
{ content: string, format: string, wordCount: number }

Architecture Overview

Sillan is a Next.js application with three layers: a React frontend using the Vercel AI SDK, API routes that handle agent orchestration, and the Anthropic Claude API for inference and tool execution.

CLIENT

  • Next.js 16 App Router
  • @ai-sdk/react useChat()
  • DefaultChatTransport → SSE
  • localStorage for API key

SERVER

  • POST /api/agent/chat
  • POST /api/agent/deploy
  • GET /api/agent/status
  • API key validation

AI

  • Anthropic Claude Sonnet
  • streamText() from ai SDK
  • Zod-validated tools
  • maxSteps: 5 (multi-step)
BrowserNext.js APIClaude + ToolsSSE Stream

Streaming

Chat responses stream token-by-token using Server-Sent Events (SSE). The server calls streamText() from the AI SDK, which returns a uiMessageStream converted to a streaming Response via createUIMessageStreamResponse().

app/api/agent/chat/route.ts
const result = streamAgent(agentId, apiKey, messages)
 
return createUIMessageStreamResponse({
stream: result.uiMessageStream,
})

On the client, the useChat() hook from @ai-sdk/react receives the stream via a DefaultChatTransport and updates messages reactively.

Tool System

Tools are defined using the AI SDK's tool() function with Zod schemas for parameter validation. Each agent template maps to a specific set of tools.

lib/mastra/tools.ts
import { tool } from "ai"
import { z } from "zod"
 
export const fetchTokenPrice = tool({
description: "Fetches crypto prices from CoinGecko",
parameters: z.object({
tokenId: z.string().describe("CoinGecko token ID"),
}),
execute: async ({ tokenId }) => {
const res = await fetch(
`https://api.coingecko.com/api/v3/simple/price?ids=${tokenId}&vs_currencies=usd`
)
const data = await res.json()
return { tokenId, priceUsd: data[tokenId]?.usd ?? null }
},
})

With maxSteps: 5, agents can chain multiple tool calls in a single conversation turn — for example, looking up multiple token prices in sequence.

POST /api/agent/chat

Streams a chat response from the selected agent. Returns an SSE stream of UI message chunks.

Request
POST /api/agent/chat
Content-Type: application/json
 
{
"agentId": "oracle",
"apiKey": "sk-ant-api03-...",
"messages": [
{ "role": "user", "content": "Price of ETH?" }
]
}
Response
Content-Type: text/event-stream
 
// Streams UIMessageChunk events
// Includes text deltas, tool calls, and tool results

POST /api/agent/deploy

Validates the API key and registers the agent. The key is tested by making a minimal call to the Anthropic API.

Request / Response
POST /api/agent/deploy
{ "templateId": "oracle", "apiKey": "sk-ant-..." }
 
// 200 OK
{
"agentId": "oracle",
"status": "running",
"name": "Oracle",
"tools": ["fetchTokenPrice"],
"deployedAt": "2025-01-15T..."
}
 
// 401 Unauthorized
{ "error": "Invalid API key" }

GET /api/agent/status

Returns metadata about an agent template.

Request / Response
GET /api/agent/status?agentId=oracle
 
// 200 OK
{
"agentId": "oracle",
"name": "Oracle",
"description": "Crypto price feed agent...",
"tools": ["fetch-token-price"],
"status": "running",
"icon": "◉"
}

Sillan© — Deploy autonomous AI agents with one command.