Version: v0.2.0-alpha
English | Deutsch | 中文 | 繁體中文 | Español | 日本語 | 한국어 | Čeština | Русский
Base URL: http://localhost:8080
Most endpoints require authentication via session cookies managed through the Web UI. Before system initialization, all requests except the help page will be redirected to the initialization page.
GET /api/dashboard/stats
Returns system overview data (number of beings, running status, etc.).
GET /api/dashboard/metrics
Returns real-time performance metric data.
GET /chat
Returns the chat interface page.
GET /api/chat/stream
Streaming chat via Server-Sent Events (SSE).
Response: Server-Sent Event stream
data: {"type": "chunk", "content": "I"}
data: {"type": "chunk", "content": "'m"}
data: {"type": "chunk", "content": " thinking..."}
data: {"type": "complete", "sessionId": "uuid"}
GET /api/chat/conversations
Returns a list of all active Chat Sessions.
Response Example:
{
"conversations": [
{
"sessionId": "85ccff8e-7497-1991-7a38-ffa1b7d9c50d",
"beingId": "being-uuid",
"type": "single",
"displayName": "与小游聊天",
"lastMessage": "最后消息内容",
"lastTime": "2026-05-20T10:30:00Z"
}
]
}GET /api/chat/messages
Query parameter: channelId — Channel/Session ID
Returns the message history for the specified session.
GET /api/chat/history
Returns global chat history records.
POST /api/chat/send
Request Body:
{
"channelId": "85ccff8e-7497-1991-7a38-ffa1b7d9c50d",
"content": "测试消息内容"
}Response:
{
"success": true,
"messageId": "50156b26-f3b9-4735-be3d-51e547bd3a4a"
}POST /api/chat/stop
Stops the currently ongoing AI response generation.
Request Body:
{
"channelId": "85ccff8e-7497-1991-7a38-ffa1b7d9c50d"
}POST /api/chat/upload
Uploads a file to the Chat Session (supports multipart/form-data).
GET /beings
Returns the Silicon Being management interface page.
GET /api/beings or GET /api/beings/list
Returns a list of all registered Silicon Beings.
Response Example:
{
"beings": [
{
"id": "being-uuid",
"name": "Assistant",
"status": "running",
"soulPath": "path/to/soul.md"
}
]
}Status values: idle | running | waiting_permission | stopped
GET /api/beings/detail
Query parameter: beingId — Silicon Being ID
Returns detailed information about the specified Silicon Being.
GET /api/beings/activity
Returns activity status information for each Silicon Being.
GET /beings/soul
Returns the Soul File editor interface.
POST /api/beings/soul/save
Request Body:
{
"beingId": "being-uuid",
"soulContent": "# Personality\nYou are helpful..."
}GET /beings/ai-config
Returns the AI configuration editor interface.
POST /api/beings/ai-config/save
Request Body:
{
"beingId": "being-uuid",
"aiClientType": "DashScope",
"config": {
"apiKey": "...",
"region": "beijing",
"model": "qwen3.6-plus"
}
}GET /api/beings/ai-config/models
Query parameters: clientType, apiKey, region
Returns the list of available models for the specified AI client.
GET /chat-history
Returns the chat history main page.
GET /chat-history-detail
Returns the chat history detail page for the specified session.
GET /group-chat-history-detail
Returns the history detail page for Group Chat Sessions.
GET /broadcast-history-detail
Returns the history detail page for Broadcast Channels.
GET /api/chat-history/conversations
Returns a list of all historical conversations.
GET /api/chat-history/messages
Query parameter: sessionId — Session ID
Returns the message records for the specified historical session.
GET /timers
Returns the Timer management interface page.
GET /api/timers/list
Returns a list of all timers.
GET /timer-cycles/{timerId}
Returns the execution cycle detail page for the specified timer.
GET /api/timer-cycles/list
Query parameter: timerId — Timer ID
Returns a list of all execution cycles for the specified timer.
GET /timer-cycle/{cycleIndex}
Returns the detail page for a single execution.
GET /api/timer-cycle/messages
Query parameter: cycleIndex — Cycle index
Returns the related messages for the specified execution cycle.
GET /tasks
Returns the Task management interface page.
GET /api/tasks/list
Returns a list of all tasks.
GET /task-cycles/{taskId}
Returns the execution cycle detail page for the specified task.
GET /api/task-cycles/list
Query parameter: taskId — Task ID
Returns a list of all execution cycles for the specified task.
GET /task-cycle/{cycleIndex}
Returns the detail page for a single task execution.
GET /api/task-cycle/messages
Query parameter: cycleIndex — Cycle index
Returns the related messages for the specified task execution cycle.
GET /permissions
Returns the Permission Manager interface page.
GET /api/permissions/list
Returns all currently configured permission rules.
Response Example:
{
"rules": [
{
"permissionType": "NetworkAccess",
"resourcePrefix": "api.github.com",
"result": "Allowed",
"description": "Allow GitHub API access"
}
]
}POST /api/permissions/save
Request Body:
{
"permissionType": "FileAccess",
"resourcePrefix": "C:\\Projects",
"result": "Allowed",
"description": "Allow project directory access"
}GET /permission/request
Displays the permission request page, allowing users to approve or deny permission requests from Silicon Beings.
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
userId |
Guid |
The Silicon Being ID requesting permission |
type |
string |
Permission Type |
resource |
string |
Requested resource path |
allowCode |
string |
Code identifier for the allow action |
denyCode |
string |
Code identifier for the deny action |
GET /permission/check
Query parameter: userId — Silicon Being ID
Response:
{
"pending": true
}GET /permission/respond
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
userId |
Guid |
Silicon Being ID |
allowed |
bool |
Whether to allow |
addToCache |
bool |
Whether to cache the decision |
cacheDuration |
double |
Cache duration (hours) |
Response:
{
"success": true
}GET /logs
Returns the log viewer interface page.
GET /api/logs/list
Query parameters support filtering by level and time range.
Response Example:
{
"logs": [
{
"timestamp": "2026-04-20T10:30:00Z",
"level": "error",
"message": "Failed to connect to AI service",
"source": "OllamaClient"
}
]
}GET /api/logs/beings
Returns log statistics grouped by Silicon Being.
GET /api/logs/levels
Returns the list of available Log Levels in the system.
GET /usage
Returns the usage statistics interface page.
GET /api/usage/summary
Returns a Token usage and cost summary.
GET /api/usage/trend
Query parameters: startDate, endDate
Returns usage trend data for the specified time period.
GET /api/usage/export
Exports usage data in a downloadable format.
GET /audit
Returns the audit trail interface page.
GET /api/audit/list
Returns a list of audit log entries.
GET /api/audit/summary
Returns summary statistics of audit data.
GET /api/audit/beings
Returns audit statistics grouped by Silicon Being.
GET /config
Returns the system configuration interface page.
POST /config/save
Request Body:
{
"language": "ZhCN",
"port": 8080,
"aiClients": {
"Ollama": {
"baseUrl": "http://localhost:11434",
"model": "qwen2.5:7b"
},
"DashScope": {
"apiKey": "...",
"region": "beijing",
"model": "qwen3.6-plus"
},
"VolcengineArk": {
"apiKey": "...",
"endpoint": "...",
"model": "..."
},
"Herdsman": {
"endpoint": "http://localhost:8000",
"model": "..."
},
"LongCat": {
"apiKey": "...",
"endpoint": "...",
"model": "..."
},
"QiniuAI": {
"apiKey": "...",
"endpoint": "...",
"model": "..."
}
}
}GET /config/aioptions
Returns available AI client types and their dynamic options (available models, regions, etc.).
GET /memory
Returns the memory management interface page.
GET /api/memory/list
Returns a list of memory entries for Silicon Beings.
GET /api/memory/detail/{id}
Path parameter: id — Memory entry ID
Returns the full content of the specified memory entry.
GET /api/memory/stats
Returns statistics for the memory system.
GET /api/memory/search
Query parameter: keyword — Search keyword
Searches for matching memory entries.
GET /api/memory/beings
Returns memory statistics grouped by Silicon Being.
GET /api/memory/trace/{id}
Path parameter: id — Memory entry ID
Returns the source trace chain for the specified memory entry.
GET /api/memory/timeline-html
Returns an HTML view of the memory timeline.
GET /work-notes
Returns the Work Note System interface page.
GET /api/work-notes/list
Returns a list of work notes.
GET /api/work-notes/read
Query parameter: noteId — Note ID
Returns the content of the specified note.
GET /api/work-notes/directory
Returns the note directory structure.
GET /api/work-notes/search
Query parameter: keyword — Search keyword
Searches for matching work notes.
POST /api/work-notes/create
Request Body:
{
"title": "笔记标题",
"content": "笔记内容",
"keywords": ["关键词1", "关键词2"]
}POST /api/work-notes/update
Request Body:
{
"noteId": "note-uuid",
"title": "更新后的标题",
"content": "更新后的内容"
}POST /api/work-notes/delete
Request Body:
{
"noteId": "note-uuid"
}GET /knowledge
Returns the Knowledge Network management interface page.
GET /api/knowledge/graph
Returns knowledge triple graph data (subject-relation-object).
GET /project
Returns the Project System interface page.
GET /project/{id}/work-notes
Path parameter: id — Project ID
Returns the work notes page for the specified project.
GET /project/{id}/tasks
Path parameter: id — Project ID
Returns the task management page for the specified project.
GET /project/{id}/tool-permissions
Path parameter: id — Project ID
Returns the tool permission management page for the specified project.
GET /project/{id}/workflow
Path parameter: id — Project ID
Returns the workflow management page for the specified project.
GET /api/projects/workflow-detail
Query parameter: projectId — Project ID
Returns the workflow details associated with the project.
POST /api/projects/assign-role
Request Body:
{
"projectId": "project-uuid",
"beingId": "being-uuid",
"roleName": "developer"
}POST /api/projects/remove-role
Request Body:
{
"projectId": "project-uuid",
"beingId": "being-uuid",
"roleName": "developer"
}GET /api/projects/list
Returns a list of all projects.
GET /api/projects/list-workflow-templates
Returns a list of available workflow templates.
POST /api/projects/create
Request Body:
{
"name": "My Project",
"description": "Project description"
}POST /api/projects/{id}/archive
Path parameter: id — Project ID
Archives the specified project.
POST /api/projects/{id}/restore
Path parameter: id — Project ID
Restores an archived project.
POST /api/projects/{id}/destroy
Path parameter: id — Project ID
Permanently deletes the specified project (irreversible).
GET /api/projects/detail
Query parameter: projectId — Project ID
Returns detailed information about the project.
POST /api/projects/update
Request Body:
{
"projectId": "project-uuid",
"name": "Updated Name",
"description": "Updated description"
}POST /api/projects/assign
Request Body:
{
"projectId": "project-uuid",
"beingId": "being-uuid"
}POST /api/projects/remove
Request Body:
{
"projectId": "project-uuid",
"beingId": "being-uuid"
}GET /api/projects/{id}/work-notes/list
Path parameter: id — Project ID
Returns a list of work notes for the specified project.
GET /api/projects/{id}/work-notes/read
Path parameter: id — Project ID
Returns the content of a work note in the specified project.
POST /api/projects/{id}/work-notes/create
Path parameter: id — Project ID
Creates a new work note in the specified project.
POST /api/projects/{id}/work-notes/update
Path parameter: id — Project ID
Updates a work note in the specified project.
POST /api/projects/{id}/work-notes/delete
Path parameter: id — Project ID
Deletes a work note in the specified project.
GET /api/projects/{id}/tasks/list
Path parameter: id — Project ID
Returns a list of tasks for the specified project.
POST /api/projects/{id}/tasks/create
Path parameter: id — Project ID
Creates a new task in the specified project.
POST /api/projects/{id}/tasks/update
Path parameter: id — Project ID
Updates a task in the specified project.
POST /api/projects/{id}/tasks/delete
Path parameter: id — Project ID
Deletes a task in the specified project.
POST /api/projects/{id}/tasks/assign
Path parameter: id — Project ID
Assigns an assignee to a project task.
POST /api/projects/{id}/tasks/remove-assignee
Path parameter: id — Project ID
Removes the assignee from a project task.
POST /api/projects/{id}/tasks/complete
Path parameter: id — Project ID
Marks a project task as completed.
POST /api/projects/{id}/tasks/fail
Path parameter: id — Project ID
Marks a project task as failed.
POST /api/projects/{id}/tasks/cancel
Path parameter: id — Project ID
Cancels a project task.
GET /api/beings/tool-permissions
Query parameter: beingId — Silicon Being ID
Returns the tool permission configuration for the specified Silicon Being.
PUT /api/beings/tool-permissions
Request Body:
{
"beingId": "being-uuid",
"permissions": {
"network": "allowed",
"disk_read": "allowed",
"disk_write": "denied"
}
}GET /api/beings/tool-permissions/templates
Returns a list of available tool permission templates.
POST /api/beings/tool-permissions/apply-template
Request Body:
{
"beingId": "being-uuid",
"templateName": "readonly"
}GET /api/projects/{id}/tool-permissions
Path parameter: id — Project ID
Returns the tool permission configuration for the specified project.
PUT /api/projects/{id}/tool-permissions
Path parameter: id — Project ID
Request Body:
{
"permissions": {
"network": "allowed",
"disk_read": "allowed",
"disk_write": "denied"
}
}GET /executor
Returns the Executor management interface page.
GET /api/executors/status
Returns the running status of each Executor (Disk, Network, CommandLine).
GET /code
Returns the code browser interface page.
GET /api/code/types
Returns the list of supported code types/languages.
GET /api/code/detail
Query parameters: filePath, lineNumber
Returns code details for the specified file.
GET /api/code/hover
POST /api/code/hover
Gets hover tip information for a code position (similar to IDE IntelliSense).
POST /api/code/register
Registers a code position to monitor.
POST /api/code/update
Updates a registered code position.
POST /api/code/unregister
Unregisters a code position that no longer needs monitoring.
GET /help or GET /help/index
Returns the help documentation main page.
GET /help/{topic}
Path parameter: topic — Topic identifier
Returns the help documentation page for the specified topic.
GET /api/help/search
Query parameter: keyword — Search keyword
Searches for matching help documentation topics.
GET /init
Returns the first-run initialization wizard page.
POST /init
Submits the first-run initialization configuration.
GET /init/browse
Opens a directory browser to select the data storage location.
GET /init/ai-config-metadata
Returns available AI client types and their configuration field metadata.
POST /api/system/shutdown
Note: Only requests from localhost are allowed
Triggers the application's graceful shutdown process:
- Stops the Main Loop
- Saves the current configuration
- Closes the HTTP listener
Response:
{
"status": "shutting_down",
"message": "Application is shutting down gracefully"
}GET /about
Returns the about page, containing system information and a list of loaded plugins.
Plugin List Data:
{
"plugins": {
"plugin-id": {
"name": "My Plugin",
"version": "1.0.0",
"description": "Plugin description",
"author": "Author Name"
}
}
}All endpoints return standardized error responses:
{
"error": {
"code": "PERMISSION_DENIED",
"message": "You don't have permission to access this resource",
"details": "Required: FileAccess, Denied by GlobalACL"
}
}| Code | HTTP Status | Description |
|---|---|---|
PERMISSION_DENIED |
403 | Insufficient permissions |
NOT_FOUND |
404 | Resource not found |
VALIDATION_ERROR |
400 | Invalid request parameters |
INTERNAL_ERROR |
500 | Internal server error |
SERVICE_UNAVAILABLE |
503 | AI service unavailable |
Server-Sent Events are used for real-time updates:
const eventSource = new EventSource('/api/chat/stream');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
switch(data.type) {
case 'chunk':
console.log('Streaming:', data.content);
break;
case 'tool_call':
console.log('Tool executing:', data.tool);
break;
case 'complete':
console.log('Chat complete, session:', data.sessionId);
break;
case 'error':
console.error('Error:', data.message);
break;
}
};public interface IAIClient
{
string Name { get; }
Task<AIResponse> ChatAsync(AIRequest request);
IAsyncEnumerable<string> StreamChatAsync(AIRequest request);
}public class AIRequest
{
public List<Message> Messages { get; set; }
public List<ToolDefinition> Tools { get; set; }
public double Temperature { get; set; } = 0.7;
public int MaxTokens { get; set; } = 2000;
public string Model { get; set; }
}public class AIResponse
{
public string Content { get; set; }
public List<ToolCall> ToolCalls { get; set; }
public TokenUsage Usage { get; set; }
public string Model { get; set; }
}public interface ITool
{
string Name { get; }
string Description { get; }
ToolDefinition Definition { get; }
Task<ToolResult> ExecuteAsync(ToolCall call);
}public class ToolCall
{
public string Id { get; set; }
public string Name { get; set; }
public Dictionary<string, object> Parameters { get; set; }
}public class ToolResult
{
public bool Success { get; set; }
public string Output { get; set; }
public string Error { get; set; }
}- 🚀 Check out the Getting Started Guide
- 🛠️ Read the Development Guide
- 📚 View the Architecture Documentation
- 🔒 Learn about the Security Model