Documentation Index
Fetch the complete documentation index at: https://docs.ag-kit.dev/llms.txt
Use this file to discover all available pages before exploring further.
ag-kit.server
Provide a FastAPI service as adapters for serving AG-Kit agents. This package offers an API class and an Function:
-Create a FastAPI server with mountable agent routes
-Create FastAPI routes mountable to an existing FastAPI app
-Expose an agent handler as a standard FastAPI route interface
All responses stream over Server‑Sent Events (SSE).
Installation
What you get
- FastAPI helpers:
AgentServiceApp, create_server_adapter
- HTTP adapter:
create_server_adapter for streaming responses
- Health endpoint:
/healthz route
Quick start
run (recommended)
from ag_kit_py.server import AgentServiceApp
app = AgentServiceApp()
app.run(agent=myAgent);
Endpoints
When using Express helpers:
POST /send-message — accepts a JSON SendMessageInput and streams events as SSE
GET /healthz — returns OK
Request and events
Request body schema (validated via Pydantic):
from typing import Any, List, Literal, Optional, Union
from pydantic import BaseModel, Field
class ToolFunction(BaseModel):
name: str
arguments: str
class ToolCall(BaseModel):
id: str
type: Literal["function"] = "function"
function: ToolFunction
class Tool(BaseModel):
name: str
description: str
parameters: Any
class SystemMessage(BaseModel):
role: Literal["system"] = "system"
content: str
class UserMessage(BaseModel):
role: Literal["user"] = "user"
content: str
class ToolMessage(BaseModel):
role: Literal["tool"] = "tool"
content: str
tool_call_id: str = Field(..., alias="toolCallId")
class AssistantMessage(BaseModel):
id: str
role: Literal["assistant"] = "assistant"
content: Optional[str] = None
tool_calls: Optional[List[ToolCall]] = Field(None, alias="toolCalls")
ClientMessage = Union[SystemMessage, UserMessage, ToolMessage, AssistantMessage]
class ResumeMessage(BaseModel):
interruptId: str
payload: str
class SendMessageInput(BaseModel):
messages: Optional[List[ClientMessage]] = []
tools: Optional[List[Tool]] = []
resume: Optional[ResumeMessage] = None
conversationId: str
SSE event payloads:
class ErrorEvent(BaseModel):
type: Literal["error"] = "error"
error: str
class TextEvent(BaseModel):
type: Literal["text"] = "text"
content: str
class ToolCallStartEvent(BaseModel):
type: Literal["tool-call-start"] = "tool-call-start"
tool_call_id: str = Field(..., alias="toolCallId")
tool_call_name: str = Field(..., alias="toolCallName")
class ToolCallArgsEvent(BaseModel):
type: Literal["tool-call-args"] = "tool-call-args"
tool_call_id: str = Field(..., alias="toolCallId")
delta: str
class ToolCallEndEvent(BaseModel):
type: Literal["tool-call-end"] = "tool-call-end"
tool_call_id: str = Field(..., alias="toolCallId")
class ToolCallResultEvent(BaseModel):
type: Literal["tool-result"] = "tool-result"
tool_call_id: str = Field(..., alias="toolCallId")
result: str
class InterruptEvent(BaseModel):
type: Literal["interrupt"] = "interrupt"
id: str
reason: Optional[str] = None
payload: Any
SendMessageEvent = Union[
ErrorEvent, InterruptEvent, TextEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, ToolCallStartEvent
]
See the detailed API and Events pages for full reference.
Next steps