بنقرة واحدة
openclaw-projects
Project management, memory storage, and communications backend for OpenClaw agents
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Project management, memory storage, and communications backend for OpenClaw agents
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Onboard a new external API, configure credentials, and verify endpoints
Build a comprehensive view of a contact with relationships, links, and memories
Generate a summary report for a completed dev session
Audit namespace content by searching across projects, memories, and items
Create meeting notes with attendees, action items, and linked references
Set up a new terminal connection with credentials and verification
| name | openclaw-projects |
| description | Project management, memory storage, and communications backend for OpenClaw agents |
| metadata | {"openclaw":{"emoji":"📋","requires":{"env":["OPENCLAW_PROJECTS_URL","OPENCLAW_API_TOKEN"]}}} |
A backend service for managing projects, tasks, memories, and communications. Designed as the persistent storage and coordination layer for OpenClaw agents.
| Variable | Description | Example |
|---|---|---|
OPENCLAW_PROJECTS_URL | Base URL of the openclaw-projects instance | https://projects.example.com |
OPENCLAW_API_TOKEN | Shared secret for API authentication | (from 1Password or file) |
All API requests require a Bearer token:
curl -H "Authorization: Bearer $OPENCLAW_API_TOKEN" \
"$OPENCLAW_PROJECTS_URL/work-items"
Alternative secret sources:
OPENCLAW_API_TOKEN_COMMAND - Execute command (e.g., op read 'op://Vault/secret')OPENCLAW_API_TOKEN_FILE - Read from filePOST $OPENCLAW_PROJECTS_URL/work-items
Content-Type: application/json
Authorization: Bearer $OPENCLAW_API_TOKEN
{
"title": "Asparagus",
"parent_work_item_id": "<shopping-list-uuid>",
"kind": "issue"
}
POST $OPENCLAW_PROJECTS_URL/work-items
Content-Type: application/json
{
"title": "Call the dentist",
"not_before": "2026-02-05T09:00:00Z",
"kind": "issue"
}
The not_before date triggers a hook to OpenClaw when the time arrives.
POST $OPENCLAW_PROJECTS_URL/memory
Content-Type: application/json
{
"memory_type": "preference",
"title": "Communication style",
"content": "User prefers async communication over meetings"
}
GET $OPENCLAW_PROJECTS_URL/memory?search=notification+preferences
# Create project
POST $OPENCLAW_PROJECTS_URL/work-items
{
"title": "Tiny Home Build",
"kind": "project",
"description": "Build a tiny home on wheels"
}
# Create epic under project
POST $OPENCLAW_PROJECTS_URL/work-items
{
"title": "Electrical System",
"kind": "epic",
"parent_work_item_id": "<project-uuid>"
}
# Create issue under epic
POST $OPENCLAW_PROJECTS_URL/work-items
{
"title": "Install solar panels",
"kind": "issue",
"parent_work_item_id": "<epic-uuid>"
}
Work items are the core data model - representing projects, epics, initiatives, issues, and tasks in a hierarchical structure.
POST /work-items
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Title of the work item |
kind | string | No | project, epic, initiative, issue (default: issue) |
description | string | No | Detailed description (markdown supported) |
parent_work_item_id | uuid | No | Parent item for hierarchy |
status | string | No | backlog, todo, in_progress, done, cancelled |
not_before | timestamp | No | Don't show/remind before this time |
not_after | timestamp | No | Deadline |
estimated_effort_minutes | integer | No | Effort estimate |
Response: Created work item with id, created_at, etc.
GET /work-items
Returns flat list of all work items.
GET /work-items/tree
Query params:
root_id - Start from specific itemmax_depth - Limit tree depthReturns hierarchical structure with children nested.
GET /work-items/:id
Returns full work item with all fields.
PUT /work-items/:id
All fields are optional - only include fields to update.
PATCH /work-items/:id/status
{ "status": "in_progress" }
PATCH /work-items/:id/dates
{
"not_before": "2026-02-10T09:00:00Z",
"not_after": "2026-02-15T17:00:00Z"
}
DELETE /work-items/:id
PATCH /work-items/:id/reparent
{ "new_parent_id": "<new-parent-uuid>" }
PATCH /work-items/:id/reorder
{ "after_id": "<sibling-uuid>" }
GET /work-items/:id/rollup
Returns aggregated data from children:
Store and retrieve contextual memories for agents.
POST /memory
| Field | Type | Required | Description |
|---|---|---|---|
memory_type | string | Yes | preference, fact, decision, context |
title | string | Yes | Short title |
content | string | Yes | Full content |
work_item_id | uuid | No | Link to work item |
contact_id | uuid | No | Link to contact |
GET /memory
Query params:
search - Text searchmemory_type - Filter by typework_item_id - Filter by linked work itemcontact_id - Filter by linked contactPUT /memory/:id
DELETE /memory/:id
GET /work-items/:id/memories
POST /work-items/:id/memories
Manage people and their communication endpoints.
POST /contacts
{
"displayName": "Jane Doe",
"notes": "Met at conference",
"contactKind": "person"
}
| Field | Type | Required | Description |
|---|---|---|---|
displayName | string | Yes | Contact display name |
notes | string | No | Free-text notes |
contactKind | string | No | person (default), organisation, group, or agent |
Contact Kinds:
person — Individual human contact (default)organisation — Company, business, or institutiongroup — Household, family, team, or collective (e.g., "The Kelly Household")agent — AI agent or automated systemGET /contacts
Query params:
search - Search by name/email/phonecontact_kind - Filter by kind: person, organisation, group, agent (comma-separated for multiple)limit - Results per page (default: 50, max: 100)offset - Pagination offsetGET /contacts/:id
Returns contact with all endpoints and contact_kind.
PATCH /contacts/:id
Supports updating contactKind along with other fields.
DELETE /contacts/:id
POST /contacts/:id/endpoints
{
"type": "telegram",
"value": "@janedoe"
}
Endpoint types: email, phone, telegram, whatsapp, slack, discord
GET /contacts/:id/work-items
POST /work-items/:id/contacts
{ "contact_id": "<contact-uuid>" }
Simple checklist items within work items.
GET /work-items/:id/todos
POST /work-items/:id/todos
{
"title": "Buy screws",
"completed": false
}
PATCH /work-items/:id/todos/:todoId
{ "completed": true }
DELETE /work-items/:id/todos/:todoId
Threaded comments on work items.
GET /work-items/:id/comments
POST /work-items/:id/comments
{
"content": "This looks good! @jane what do you think?",
"parent_id": "<optional-parent-comment-id>"
}
PUT /work-items/:id/comments/:commentId
DELETE /work-items/:id/comments/:commentId
POST /work-items/:id/comments/:commentId/reactions
{ "emoji": "👍" }
Track all changes across the system.
GET /activity
Query params:
limit - Number of items (default: 50)offset - Pagination offsetproject_id - Filter by projectaction_type - Filter by action (created, updated, deleted)since - ISO timestamp, only newer itemsGET /activity/stream
Real-time Server-Sent Events for live updates.
POST /activity/:id/read
POST /activity/read-all
User notifications from agent actions and system events.
GET /notifications
Query params:
unread_only - Booleanlimit, offset - PaginationGET /notifications/unread-count
POST /notifications/:id/read
POST /notifications/read-all
DELETE /notifications/:id
GET /notifications/preferences
PATCH /notifications/preferences
Global search across all entities.
GET /search
Query params:
q - Search querytypes - Comma-separated: work_item, contact, memoryVisual timeline of work items with dates.
GET /timeline
Query params:
start - Start dateend - End datekind - Filter by work item kindGET /work-items/:id/timeline
Timeline for specific item and descendants.
Project health and progress metrics.
GET /analytics/project-health
GET /analytics/velocity
GET /analytics/effort
GET /analytics/burndown/:id
GET /analytics/overdue
GET /analytics/blocked
GET /analytics/activity-summary
Track dependencies between work items.
GET /work-items/:id/dependencies
POST /work-items/:id/dependencies
{
"depends_on_id": "<other-work-item-uuid>",
"dependency_type": "blocks"
}
Types: blocks, relates_to, duplicates
GET /work-items/:id/dependency-graph
Returns full graph of connected items.
External links attached to work items.
GET /work-items/:id/links
POST /work-items/:id/links
{
"url": "https://github.com/org/repo/issues/123",
"title": "GitHub Issue #123",
"link_type": "github_issue"
}
Batch updates for efficiency.
PATCH /work-items/bulk
{
"ids": ["uuid1", "uuid2", "uuid3"],
"updates": {
"status": "done"
}
}
Ingest messages from external sources (SMS, email).
POST /ingest/external-message
{
"source": "twilio",
"from": "+1234567890",
"to": "+0987654321",
"body": "Message content",
"external_id": "SM123456"
}
GET /health # Basic health
GET /health/live # Kubernetes liveness
GET /health/ready # Kubernetes readiness (checks DB)
GET /health # Detailed status with components
Create a shopping list:
POST /work-items
{ "title": "Shopping List", "kind": "project" }
Add items:
POST /work-items
{ "title": "Milk", "parent_work_item_id": "<list-id>", "kind": "issue" }
Check off item:
PATCH /work-items/:id/status
{ "status": "done" }
Create reminder:
POST /work-items
{
"title": "Take medication",
"not_before": "2026-02-02T08:00:00Z",
"kind": "issue"
}
OpenClaw receives hook when time arrives (via pgcron)
Store preference:
POST /memory
{
"memory_type": "preference",
"title": "Timezone",
"content": "User is in Australia/Melbourne timezone"
}
Retrieve for context:
GET /memory?search=timezone
Create project structure:
Track effort:
estimated_effort_minutes on items/work-items/:project-id/rollup for totalsMonitor progress:
/analytics/velocity for throughput/analytics/burndown/:id for burndown| Kind | Description | Typical Use |
|---|---|---|
project | Top-level container | Major initiatives, life areas |
epic | Large feature/goal | Multi-week efforts |
initiative | Group of related work | Sprint or milestone |
issue | Specific task | Day-level work items |
| Status | Description |
|---|---|
backlog | Not yet scheduled |
todo | Ready to start |
in_progress | Currently being worked |
done | Completed |
cancelled | Won't be done |
| Type | Description | Example |
|---|---|---|
preference | User likes/dislikes | "Prefers morning meetings" |
fact | Known information | "Birthday is March 15" |
decision | Past decisions | "Chose React over Vue for frontend" |
context | Situational context | "Working on home renovation" |
clawhub install openclaw-projects
git clone https://github.com/troykelly/openclaw-projects ~/.openclaw/skills/openclaw-projects
Add to your shell profile or .env:
export OPENCLAW_PROJECTS_URL="https://your-instance.example.com"
export OPENCLAW_API_TOKEN_COMMAND="op read 'op://Vault/openclaw-projects/secret'"