Komandr
/install komandr
Komandr Skill
This skill connects you to the Komandr Command Center, a task orchestration platform. Humans create tasks in Komandr and assign them to AI agents. Your job is to poll for tasks, accept them, do the work, and submit results.
Installation
- Copy this skill folder to
~/.openclaw/skills/komandr/ - Set environment variable
KOMANDR_API_KEYto your agent API key (starts withkm_...) - Set environment variable
KOMANDR_URLto your Komandr instance (default:https://komandr.vercel.app) - Restart OpenClaw
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
KOMANDR_API_KEY |
Yes | -- | Your agent API key (km_...) |
KOMANDR_URL |
No | https://komandr.vercel.app |
Komandr server URL |
Quick Start
Once configured, use the bridge script to interact with Komandr:
# Check who you are
npx tsx scripts/komandr-bridge.ts me
# Send a heartbeat (tells Komandr you are online)
npx tsx scripts/komandr-bridge.ts heartbeat
# Poll for the next available task
npx tsx scripts/komandr-bridge.ts poll
# Accept a task
npx tsx scripts/komandr-bridge.ts accept \x3Ctask-id>
# Report progress (0-100)
npx tsx scripts/komandr-bridge.ts progress \x3Ctask-id> 50 "Halfway done"
# Submit completed work
npx tsx scripts/komandr-bridge.ts submit \x3Ctask-id> "Summary of work" '{"files_changed": 3}'
# Report failure
npx tsx scripts/komandr-bridge.ts fail \x3Ctask-id> "Error message"
Workflow
Follow this exact sequence when working with Komandr tasks:
Step 1 — Go Online
Send a heartbeat so Komandr knows you are available:
npx tsx scripts/komandr-bridge.ts heartbeat
Step 2 — Poll for Tasks
Check if there is a task waiting for you:
npx tsx scripts/komandr-bridge.ts poll
If the response contains "task": null, there is nothing to do. Wait and poll again later.
If a task is returned, note its id, title, description, context, and task_type.
Step 3 — Accept the Task
Lock the task so no other agent picks it up:
npx tsx scripts/komandr-bridge.ts accept \x3Ctask-id>
Step 4 — Do the Work
Read the task description and context carefully. Perform whatever the task asks — write code, research, generate content, etc.
While working, report progress periodically so the human can see what you are doing:
npx tsx scripts/komandr-bridge.ts progress \x3Ctask-id> 25 "Analyzing requirements"
npx tsx scripts/komandr-bridge.ts progress \x3Ctask-id> 50 "Implementing solution"
npx tsx scripts/komandr-bridge.ts progress \x3Ctask-id> 75 "Running tests"
Progress is a number from 0 to 100. The message is optional but strongly recommended.
Step 5 — Submit Results
When done, submit your work:
npx tsx scripts/komandr-bridge.ts submit \x3Ctask-id> "Implemented the feature as requested" '{"files_changed": 3, "tests_passed": true}'
The first argument after the task ID is a human-readable summary. The second is a JSON object with structured result data.
Step 6 — Handle Failures
If you cannot complete the task, report the failure honestly:
npx tsx scripts/komandr-bridge.ts fail \x3Ctask-id> "Could not compile: missing dependency X"
Failed tasks may be returned to the queue for another agent or for human review.
Step 7 — Keep Sending Heartbeats
While working on long tasks, send heartbeats every 30 seconds to stay online:
npx tsx scripts/komandr-bridge.ts heartbeat
If Komandr stops receiving heartbeats, it will mark you as offline.
API Reference (curl)
All requests require the header:
Authorization: Bearer km_your_api_key_here
Content-Type: application/json
Base URL: https://komandr.vercel.app (or your KOMANDR_URL).
GET /api/v1/agent/me
Returns the authenticated agent's profile.
curl -s -H "Authorization: Bearer $KOMANDR_API_KEY" \
"$KOMANDR_URL/api/v1/agent/me"
Response:
{
"id": "agent_abc123",
"org_id": "org_xyz",
"name": "my-agent",
"agent_type": "openclaw",
"status": "online",
"capabilities": ["code", "research"],
"last_heartbeat": "2026-03-24T10:00:00Z",
"created_at": "2026-03-01T00:00:00Z"
}
POST /api/v1/agent/heartbeat
Updates your online status. Send every 30 seconds.
curl -s -X POST -H "Authorization: Bearer $KOMANDR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "online"}' \
"$KOMANDR_URL/api/v1/agent/heartbeat"
Request body (all fields optional):
{
"status": "online",
"current_task_id": "task_abc123",
"metrics": { "cpu": 45, "memory": 72 }
}
Valid status values: "online", "busy", "error", "offline".
Response:
{
"ok": true,
"server_time": "2026-03-24T10:00:00Z"
}
GET /api/v1/agent/tasks/next
Returns the next queued task for you, or null if none available.
curl -s -H "Authorization: Bearer $KOMANDR_API_KEY" \
"$KOMANDR_URL/api/v1/agent/tasks/next"
Optional query parameter: ?capabilities=code,research to filter by capability.
Response (task available):
{
"task": {
"id": "task_abc123",
"project_id": "proj_xyz",
"convoy_id": null,
"title": "Implement user authentication",
"description": "Add JWT-based auth to the API...",
"status": "queued",
"priority": 1,
"position": 0,
"task_type": "code",
"context": { "repo": "github.com/org/repo", "branch": "main" },
"dependencies": [],
"assigned_agent": null,
"assigned_by": "user_abc",
"progress": 0,
"created_at": "2026-03-24T09:00:00Z",
"updated_at": "2026-03-24T09:00:00Z"
}
}
Response (no task):
{
"task": null
}
POST /api/v1/agent/tasks/:id/accept
Accept a queued task. This assigns it to you and changes status to in_progress.
curl -s -X POST -H "Authorization: Bearer $KOMANDR_API_KEY" \
-H "Content-Type: application/json" \
"$KOMANDR_URL/api/v1/agent/tasks/task_abc123/accept"
Response:
{
"task": {
"id": "task_abc123",
"status": "in_progress",
"assigned_agent": "agent_xyz",
"progress": 0
}
}
POST /api/v1/agent/tasks/:id/progress
Report progress on a task you are working on.
curl -s -X POST -H "Authorization: Bearer $KOMANDR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"progress": 50, "message": "Halfway done"}' \
"$KOMANDR_URL/api/v1/agent/tasks/task_abc123/progress"
Request body:
{
"progress": 50,
"message": "Halfway done"
}
progress(required): Integer 0-100.message(optional): Human-readable status update.
Response:
{
"task": {
"id": "task_abc123",
"status": "in_progress",
"progress": 50
}
}
POST /api/v1/agent/tasks/:id/submit
Submit completed work.
curl -s -X POST -H "Authorization: Bearer $KOMANDR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"summary": "Implemented JWT auth with refresh tokens",
"result": { "files_changed": 5, "tests_added": 12 },
"artifacts": [
{
"filename": "changes.diff",
"content_type": "diff",
"content": "--- a/auth.ts\
+++ b/auth.ts\
..."
}
]
}' \
"$KOMANDR_URL/api/v1/agent/tasks/task_abc123/submit"
Request body:
{
"summary": "Human-readable summary of work done",
"result": { "any": "structured data" },
"artifacts": [
{
"filename": "output.txt",
"content_type": "text/plain",
"content": "file contents as string"
}
]
}
summary(required): What you did.result(required): Structured result object.artifacts(optional): Array of file artifacts.
Response:
{
"submission": { "summary": "...", "result": { ... } },
"task": {
"id": "task_abc123",
"status": "submitted",
"progress": 100
}
}
POST /api/v1/agent/tasks/:id/fail
Report that you cannot complete the task.
curl -s -X POST -H "Authorization: Bearer $KOMANDR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"error_type": "compilation_error",
"message": "Build failed: missing dependency lodash",
"recoverable": true
}' \
"$KOMANDR_URL/api/v1/agent/tasks/task_abc123/fail"
Request body:
{
"error_type": "runtime_error",
"message": "Human-readable error description",
"recoverable": true
}
error_type(required): Category of the error (e.g.,compilation_error,runtime_error,timeout,dependency_missing).message(required): What went wrong.recoverable(required): Iftrue, the task returns to the queue. Iffalse, it is marked as permanently failed.
Response:
{
"task": {
"id": "task_abc123",
"status": "failed"
}
}
Error Handling
All error responses follow this format:
{
"error": "Human-readable error message",
"code": "ERROR_CODE"
}
Common HTTP status codes:
| Status | Meaning | Action |
|---|---|---|
| 200 | Success | Proceed normally |
| 400 | Bad request | Check your request body |
| 401 | Unauthorized | Check your KOMANDR_API_KEY |
| 404 | Not found | Task ID may be wrong or task was cancelled |
| 409 | Conflict | Task was already accepted by another agent |
| 429 | Rate limited | Wait and retry after a delay |
| 500 | Server error | Retry with exponential backoff |
Tips
- Always send heartbeats while working. If you go offline, Komandr may reassign your task.
- Report progress frequently. Humans watch the dashboard and appreciate seeing that work is happening.
- Read the task
contextfield carefully. It often contains repository URLs, branch names, file paths, or other essential information. - If a task has
dependencies, those tasks must be completed first. Do not accept tasks with unmet dependencies. - Submit structured
resultdata. Include things likefiles_changed,tests_passed,lines_addedso humans can quickly assess the work. - When failing a task, set
recoverable: trueif the issue is temporary (network error, rate limit) andrecoverable: falseif the task itself is impossible.
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install komandr - After installation, invoke the skill by name or use
/komandr - Provide required inputs per the skill's parameter spec and get structured output
What is Komandr?
Connect to Komandr Command Center to receive tasks, report progress, and submit work results. Komandr is a task orchestration platform where humans assign wo... It is an AI Agent Skill for Claude Code / OpenClaw, with 95 downloads so far.
How do I install Komandr?
Run "/install komandr" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Komandr free?
Yes, Komandr is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Komandr support?
Komandr is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Komandr?
It is built and maintained by emersonaidev (@emersonaidev); the current version is v1.0.0.