-
Notifications
You must be signed in to change notification settings - Fork 1
API Reference
Complete reference for OpenCode Memory tool and REST API.
The memory tool provides access to all memory operations from within AI conversations.
memory({ mode: string, ...args })Store a new project memory.
Parameters:
-
content(string, required): Memory content -
type(string, optional): Memory type (e.g., "preference", "architecture", "bug-fix")
Example:
memory({
mode: "add",
content: "Project uses microservices architecture with Docker",
type: "architecture"
})Response:
{
"success": true,
"message": "Memory added to project",
"id": "mem_1234567890_abc",
"type": "architecture"
}Search for relevant memories using vector similarity.
Parameters:
-
query(string, required): Search query
Example:
memory({
mode: "search",
query: "architecture decisions"
})Response:
{
"success": true,
"query": "architecture decisions",
"count": 3,
"results": [
{
"id": "mem_1234567890_abc",
"content": "Project uses microservices architecture",
"similarity": 87
}
]
}List recent memories.
Parameters:
-
limit(number, optional): Maximum number of results (default: 20)
Example:
memory({
mode: "list",
limit: 10
})Response:
{
"success": true,
"count": 10,
"memories": [
{
"id": "mem_1234567890_abc",
"content": "Project uses microservices architecture",
"createdAt": "2026-01-12T10:30:00.000Z",
"metadata": { "type": "architecture" }
}
]
}View user profile with preferences, patterns, workflows, and skill assessment.
Parameters: None
Example:
memory({ mode: "profile" })Response:
{
"success": true,
"profile": {
"preferences": [
{
"category": "code-style",
"description": "Prefers functional programming",
"confidence": 0.85,
"evidence": ["Consistently uses pure functions", "Avoids mutations"]
}
],
"patterns": [
{
"category": "problem-domain",
"description": "Frequently works on API design",
"frequency": 15
}
],
"workflows": [
{
"description": "Writes tests before implementation",
"frequency": 8
}
],
"skillLevel": {
"overall": "advanced",
"domains": {
"typescript": "expert",
"react": "advanced"
}
},
"version": 3,
"lastAnalyzed": "2026-01-12T10:00:00.000Z",
"totalPromptsAnalyzed": 150
}
}Delete a memory by ID.
Parameters:
-
memoryId(string, required): Memory ID to delete
Example:
memory({
mode: "forget",
memoryId: "mem_1234567890_abc"
})Response:
{
"success": true,
"message": "Memory mem_1234567890_abc removed"
}Manually trigger memory capture for the current session.
Parameters: None
Example:
memory({ mode: "capture-now" })Response:
{
"success": true,
"message": "Manual capture triggered"
}Display usage guide.
Parameters: None
Example:
memory({ mode: "help" })The web server provides a REST API for memory management.
Base URL: http://127.0.0.1:4747
List memories with optional filters.
Query Parameters:
-
page(number): Page number (default: 1) -
pageSize(number): Items per page (default: 20) -
tag(string): Filter by tag -
includePrompts(boolean): Include linked prompts (default: true)
Example:
curl http://127.0.0.1:4747/api/memories?page=1&pageSize=20&includePrompts=trueResponse:
{
"success": true,
"data": {
"items": [...],
"total": 50,
"page": 1,
"pageSize": 20,
"totalPages": 3
}
}Create a new memory.
Body:
{
"content": "Memory content",
"containerTag": "opencode_project_abc123",
"type": "architecture"
}Response:
{
"success": true,
"data": {
"id": "mem_1234567890_abc"
}
}Update a memory.
Body:
{
"content": "Updated content",
"type": "architecture"
}Response:
{
"success": true,
"data": {
"id": "mem_1234567890_abc"
}
}Delete a memory.
Query Parameters:
-
cascade(boolean): Also delete linked prompt (default: false)
Example:
curl -X DELETE http://127.0.0.1:4747/api/memories/mem_1234567890_abc?cascade=trueResponse:
{
"success": true,
"data": {
"deletedPrompt": true
}
}Search memories using vector similarity.
Body:
{
"query": "architecture decisions",
"page": 1,
"pageSize": 10
}Response:
{
"success": true,
"data": {
"items": [...],
"total": 5,
"page": 1,
"pageSize": 10,
"totalPages": 1
}
}Delete a prompt.
Query Parameters:
-
cascade(boolean): Also delete linked memory (default: false)
Example:
curl -X DELETE http://127.0.0.1:4747/api/prompts/prompt_1234567890_abc?cascade=trueGet user profile.
Response:
{
"success": true,
"profile": {
"preferences": [...],
"patterns": [...],
"workflows": [...],
"skillLevel": {...},
"version": 3,
"lastAnalyzed": "2026-01-12T10:00:00.000Z"
}
}Get profile changelog.
Query Parameters:
-
limit(number): Maximum entries (default: 10)
Response:
{
"success": true,
"changelog": [
{
"id": 1,
"version": 3,
"changedAt": "2026-01-12T10:00:00.000Z",
"changes": "Added 2 new preferences, updated 1 pattern"
}
]
}Get profile snapshot from changelog.
Response:
{
"success": true,
"snapshot": {
"preferences": [...],
"patterns": [...],
"workflows": [...],
"skillLevel": {...}
}
}Force profile refresh/analysis.
Response:
{
"success": true,
"message": "Profile refresh triggered"
}List all tags.
Response:
{
"success": true,
"data": {
"project": [
{
"tag": "opencode_project_abc123",
"displayName": "my-project",
"projectPath": "/home/user/projects/my-project"
}
]
}
}Get memory statistics.
Response:
{
"success": true,
"data": {
"total": 150
}
}Run memory cleanup (delete old memories).
Response:
{
"success": true,
"data": {
"deletedCount": 10
}
}Run deduplication (remove similar memories).
Response:
{
"success": true,
"data": {
"duplicatesFound": 5,
"duplicatesRemoved": 5
}
}All endpoints return errors in this format:
{
"success": false,
"error": "Error message"
}Common HTTP status codes:
-
200: Success -
400: Bad request (invalid parameters) -
404: Not found -
500: Internal server error
- All memories are project-scoped by default
- User preferences are managed through the automatic profile system
- Memory IDs are unique and persistent
- Timestamps are in ISO 8601 format
- Similarity scores are percentages (0-100)