Liate Framework

liate.json — The 5-Pillar Spec

Complete reference for the liate.json sovereign agent specification format. One file defines your entire agent.

liate.json is the universal declarative specification for a Liate sovereign AI agent. It uses 5 top-level keys — one per pillar — to describe everything an agent needs to run: its model, identity, tools, memory, and environment.

The same liate.json runs identically locally via npx liate run and on the Liate Cloud (Cloudflare / Vercel Edge). Write once. Execute anywhere.

Complete Example

{
  "L": "sarvam/sarvam-105b-conversations",
  "I": {
    "memory": "sessions/time-agent-india-v4"
  },
  "A": {
    "name": "time-agent",
    "version": "1.0.0",
    "intent": "You are a time analyst. When asked about time in India or IST, you MUST pass timezone='Asia/Kolkata' to get_current_time.",
    "skills": "./skills.md"
  },
  "T": {
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time"],
      "tools": ["get_current_time"]
    },
    "search": {
      "command": "websearch.exe",
      "tools": ["*"]
    }
  },
  "E": {
    "SARVAM_API_KEY": "$SARVAM_API_KEY",
    "MAX_TURNS": "5",
    "REQUIRE_APPROVAL": "false"
  }
}

L — Language Model

Specifies which AI model and provider to use. Format is always "provider/model-id".

{ "L": "sarvam/sarvam-105b-conversations" }
{ "L": "openai/gpt-4o" }
{ "L": "anthropic/claude-sonnet-4-5" }
{ "L": "google/gemini-2.5-pro" }
{ "L": "groq/llama-3.3-70b-versatile" }
{ "L": "deepseek/deepseek-chat" }
{ "L": "openrouter/meta-llama/llama-3.1-405b" }

I — Intelligence (Memory)

Configures the agent's persistent memory and session continuity. Memory is stored as a JSON file in ~/.liate/sessions/.

{
  "I": {
    "memory": "sessions/my-agent-memory"
  }
}
FieldTypeDescription
memorystringSession ID. Stored at ~/.liate/sessions/<id>.json. Conversation history persists across runs.

A — Agent Identity

Defines the agent's name, system prompt (intent), and procedural skills loaded from Markdown files.

{
  "A": {
    "name": "researcher",
    "version": "2.1.0",
    "intent": "You are a deep research analyst. You search the web, extract facts, and produce structured reports.",
    "skills": "./skills.md"
  }
}
FieldTypeDescription
namestringAgent identifier — used in logs, UI, and MCP client metadata.
versionstringOptional semantic version of this agent.
intentstringSystem prompt injected at the start of every LLM call.
skillsstringPath to a skills.md Markdown file with procedural rules. Comma-separated for multiple skill files.

T — Tools (MCP Servers)

Connects external MCP tool servers. Each key in T is an arbitrary server name. Liate supports 3 transport types.

{
  "T": {
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time"],
      "tools": ["get_current_time"]
    },
    "email": {
      "command": "sse",
      "url": "https://mcp.agentmail.to/sse?apiKey=your_key",
      "tools": ["*"]
    },
    "search": {
      "url": "https://mcp.search-engine.com/mcp",
      "tools": ["web_search", "news_search"]
    }
  }
}
FieldTypeDescription
commandstringBinary to execute: uvx, npx, node, python, an .exe path, sse, or http.
urlstringFor remote MCP servers (SSE or Streamable HTTP).
argsstring[]Arguments passed to the command (e.g. ["mcp-server-time"]).
toolsstring[]Whitelist of tool names to expose to the LLM. Use ["*"] for all tools.

Transport Resolution Logic:

  • command="uvx" or any binary path → StdioClientTransport (spawns child process)
  • command="sse" or URL contains /sseSSEClientTransport (HTTP event stream)
  • HTTPS URL without /sseStreamableHttpClientTransport (JSON-RPC over HTTP)

E — Environment

Injects API keys and runtime control flags into the agent's execution environment. Values starting with $ are resolved from the system environment or ~/.liate/.env.

{
  "E": {
    "SARVAM_API_KEY": "$SARVAM_API_KEY",
    "OPENAI_API_KEY": "sk-hardcoded-key",
    "MAX_TURNS": "5",
    "REQUIRE_APPROVAL": "false",
    "AUTO_APPROVE_TOOLS": "get_current_time,web_search"
  }
}
KeyValuesDescription
SARVAM_API_KEY / OPENAI_API_KEY etc."$VAR" or literalAPI key for the provider specified in L-pillar.
MAX_TURNS"1""20"Maximum ReAct loop iterations. Default: 5.
REQUIRE_APPROVAL"true" / "false"If true, every tool call requires user approval via WebSocket before executing.
AUTO_APPROVE_TOOLSComma-separated tool namesTools listed here are auto-approved. All others require approval.

skills.md — Procedural Instructions

A skills.md file is a plain Markdown document containing procedural rules for your agent. It is injected verbatim into the system prompt as a [PROCEDURAL SKILL] block before every agent run.

# time-agent skills

- When user asks for time, ALWAYS call `get_current_time` with `timezone="Asia/Kolkata"` for India.
- Include a time-of-day greeting: "Good Morning" (5am–12pm), "Good Afternoon" (12pm–5pm), "Good Evening" (5pm–9pm), "Good Night" (9pm–5am).
- Always end your response with an inspiring daily quote.
Open Source·MIT License·Self Host