[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BVY6V7MBC7K1A6TYK0XEMB":3,"skill-same:01M6BVY6V7MBC7K1A6TYK0XEMB":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":31,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":14,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6BVY6V7MBC7K1A6TYK0XEMB","agent-server-api",null,"How to create conversations via the agent-server REST API. Use when delegating coding tasks to agent-server or spawning new agent conversations.","rbren\u002Fdotfiles","rbren","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7611973?v=4","01M6BVY4STMZXQPSZ27TYQ01FV","Robert Brennan","01M6BVY4YMQH5QN2CN7C55KNH2",0,"MIT","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Fagent-server-api\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[32,33,34,35,36,37,38],"server","api","agent server api","tasks","create","REST","how","2026-11-10 10:12:30",false,"---\nname: agent-server-api\ndescription: How to create conversations via the agent-server REST API. Use when delegating coding tasks to agent-server or spawning new agent conversations.\nlicense: MIT\n---\n\n# Agent Server API — Creating Conversations\n\n## Server Locations\n- **Primary (conversations app):** `http:\u002F\u002Flocalhost:4004`\n- **Vibe app:** `http:\u002F\u002Flocalhost:4041`\n- Source code: `~\u002Fgit\u002Fsoftware-agent-sdk\u002Fopenhands-agent-server\u002F`\n\n## Authentication\n- Header: `X-Session-API-Key`\n- Value comes from env var `OH_SESSION_API_KEYS_0`\n\n## Create a Conversation\n\n**POST** `\u002Fapi\u002Fconversations`\n\n### Minimal Payload\n```json\n{\n  \"agent\": {\n    \"llm\": {\n      \"model\": \"anthropic\u002Fclaude-sonnet-4-20250514\",\n      \"api_key\": \"\u003CANTHROPIC_API_KEY>\"\n    },\n    \"tools\": [{\"name\": \"terminal\"}, {\"name\": \"file_editor\"}]\n  },\n  \"workspace\": {\n    \"type\": \"local\",\n    \"working_dir\": \"\u002Fpath\u002Fto\u002Fproject\"\n  },\n  \"initial_message\": {\n    \"role\": \"user\",\n    \"content\": [{\"type\": \"text\", \"text\": \"Your task description here\"}],\n    \"run\": true\n  }\n}\n```\n\n### Key Fields\n\n| Field | Required | Notes |\n|-------|----------|-------|\n| `agent.llm.model` | yes | Format: `provider\u002Fmodel-name` |\n| `agent.llm.api_key` | yes | Use `$ANTHROPIC_API_KEY` from env |\n| `agent.tools` | yes | Array of `{\"name\": \"...\"}` objects. Common: `terminal`, `file_editor`, `browser_tool_set`, `task_tracker`, `delegate` |\n| `workspace.type` | yes | Always `\"local\"` on this machine |\n| `workspace.working_dir` | yes | Absolute path to the project root |\n| `initial_message` | no | If provided with `\"run\": true`, agent starts immediately |\n| `initial_message.content` | — | Array of `{\"type\": \"text\", \"text\": \"...\"}` objects |\n| `max_iterations` | no | Default 500. Cap to prevent runaway agents |\n| `conversation_id` | no | UUID. Auto-generated if omitted |\n| `confirmation_policy` | no | Defaults to `NeverConfirm()` |\n| `secrets` | no | Dict of secret name → source |\n| `autotitle` | no | Default true. Auto-generates title from first message |\n\n### Example curl\n```bash\ncurl -s -X POST http:\u002F\u002Flocalhost:4004\u002Fapi\u002Fconversations \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H \"X-Session-API-Key: $AGENT_SERVER_API_KEY\" \\\n  -d '{\n    \"agent\": {\n      \"llm\": {\n        \"model\": \"anthropic\u002Fclaude-sonnet-4-20250514\",\n        \"api_key\": \"'\"$ANTHROPIC_API_KEY\"'\"\n      },\n      \"tools\": [{\"name\": \"terminal\"}, {\"name\": \"file_editor\"}]\n    },\n    \"workspace\": {\n      \"type\": \"local\",\n      \"working_dir\": \"\u002Froot\u002Fgit\u002Fmy-project\"\n    },\n    \"initial_message\": {\n      \"role\": \"user\",\n      \"content\": [{\"type\": \"text\", \"text\": \"Fix the bug in main.py\"}],\n      \"run\": true\n    },\n    \"max_iterations\": 100\n  }'\n```\n\n### Response\nReturns `ConversationInfo` with status 201 (new) or 200 (existing):\n```json\n{\n  \"id\": \"uuid-here\",\n  \"status\": \"running\",\n  \"workspace\": { \"type\": \"local\", \"working_dir\": \"...\" },\n  ...\n}\n```\n\n## Other Useful Endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | `\u002Fapi\u002Fconversations\u002Fsearch` | List\u002Fsearch conversations |\n| POST | `\u002Fapi\u002Fconversations\u002F{id}\u002Fmessage` | Send message to existing conversation |\n| POST | `\u002Fapi\u002Fconversations\u002F{id}\u002Fpause` | Pause a conversation |\n| POST | `\u002Fapi\u002Fconversations\u002F{id}\u002Fresume` | Resume a paused conversation |\n| DELETE | `\u002Fapi\u002Fconversations\u002F{id}` | Delete a conversation |\n| GET | `\u002Fapi\u002Fconversations\u002F{id}\u002Fevents` | Get conversation events |\n\n## Notes\n- The `working_dir` in workspace is where the agent's terminal starts and where file operations are rooted\n- `\"run\": true` on the initial message means the agent loop starts automatically after receiving the message\n- Conversations persist across agent-server restarts via `meta.json` files\n- Terminal sessions use tmux (`tmux -Lopenhands` socket) — these can leak if cleanup fails (see known bugs in the codebase)\n","# Agent Server API — Creating Conversations\n\n## Server Locations\n- **Primary (conversations app):** `http:\u002F\u002Flocalhost:4004`\n- **Vibe app:** `http:\u002F\u002Flocalhost:4041`\n- Source code: `~\u002Fgit\u002Fsoftware-agent-sdk\u002Fopenhands-agent-server\u002F`\n\n## Authentication\n- Header: `X-Session-API-Key`\n- Value comes from env var `OH_SESSION_API_KEYS_0`\n\n## Create a Conversation\n\n**POST** `\u002Fapi\u002Fconversations`\n\n### Minimal Payload\n```json\n{\n  \"agent\": {\n    \"llm\": {\n      \"model\": \"anthropic\u002Fclaude-sonnet-4-20250514\",\n      \"api_key\": \"\u003CANTHROPIC_API_KEY>\"\n    },\n    \"tools\": [{\"name\": \"terminal\"}, {\"name\": \"file_editor\"}]\n  },\n  \"workspace\": {\n    \"type\": \"local\",\n    \"working_dir\": \"\u002Fpath\u002Fto\u002Fproject\"\n  },\n  \"initial_message\": {\n    \"role\": \"user\",\n    \"content\": [{\"type\": \"text\", \"text\": \"Your task description here\"}],\n    \"run\": true\n  }\n}\n```\n\n### Key Fields\n\n| Field | Required | Notes |\n|-------|----------|-------|\n| `agent.llm.model` | yes | Format: `provider\u002Fmodel-name` |\n| `agent.llm.api_key` | yes | Use `$ANTHROPIC_API_KEY` from env |\n| `agent.tools` | yes | Array of `{\"name\": \"...\"}` objects. Common: `terminal`, `file_editor`, `browser_tool_set`, `task_tracker`, `delegate` |\n| `workspace.type` | yes | Always `\"local\"` on this machine |\n| `workspace.working_dir` | yes | Absolute path to the project root |\n| `initial_message` | no | If provided with `\"run\": true`, agent starts immediately |\n| `initial_message.content` | — | Array of `{\"type\": \"text\", \"text\": \"...\"}` objects |\n| `max_iterations` | no | Default 500. Cap to prevent runaway agents |\n| `conversation_id` | no | UUID. Auto-generated if omitted |\n| `confirmation_policy` | no | Defaults to `NeverConfirm()` |\n| `secrets` | no | Dict of secret name → source |\n| `autotitle` | no | Default true. Auto-generates title from first message |\n\n### Example curl\n```bash\ncurl -s -X POST http:\u002F\u002Flocalhost:4004\u002Fapi\u002Fconversations \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H \"X-Session-API-Key: $AGENT_SERVER_API_KEY\" \\\n  -d '{\n    \"agent\": {\n      \"llm\": {\n        \"model\": \"anthropic\u002Fclaude-sonnet-4-20250514\",\n        \"api_key\": \"'\"$ANTHROPIC_API_KEY\"'\"\n      },\n      \"tools\": [{\"name\": \"terminal\"}, {\"name\": \"file_editor\"}]\n    },\n    \"workspace\": {\n      \"type\": \"local\",\n      \"working_dir\": \"\u002Froot\u002Fgit\u002Fmy-project\"\n    },\n    \"initial_message\": {\n      \"role\": \"user\",\n      \"content\": [{\"type\": \"text\", \"text\": \"Fix the bug in main.py\"}],\n      \"run\": true\n    },\n    \"max_iterations\": 100\n  }'\n```\n\n### Response\nReturns `ConversationInfo` with status 201 (new) or 200 (existing):\n```json\n{\n  \"id\": \"uuid-here\",\n  \"status\": \"running\",\n  \"workspace\": { \"type\": \"local\", \"working_dir\": \"...\" },\n  ...\n}\n```\n\n## Other Useful Endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | `\u002Fapi\u002Fconversations\u002Fsearch` | List\u002Fsearch conversations |\n| POST | `\u002Fapi\u002Fconversations\u002F{id}\u002Fmessage` | Send message to existing conversation |\n| POST | `\u002Fapi\u002Fconversations\u002F{id}\u002Fpause` | Pause a conversation |\n| POST | `\u002Fapi\u002Fconversations\u002F{id}\u002Fresume` | Resume a paused conversation |\n| DELETE | `\u002Fapi\u002Fconversations\u002F{id}` | Delete a conversation |\n| GET | `\u002Fapi\u002Fconversations\u002F{id}\u002Fevents` | Get conversation events |\n\n## Notes\n- The `working_dir` in workspace is where the agent's terminal starts and where file operations are rooted\n- `\"run\": true` on the initial message means the agent loop starts automatically after receiving the message\n- Conversations persist across agent-server restarts via `meta.json` files\n- Terminal sessions use tmux (`tmux -Lopenhands` socket) — these can leak if cleanup fails (see known bugs in the codebase)\n",{"name":5,"license":15,"description":7},"master","290120dc514b6e7b6c945db7354fea3ea80c8c37","skills\u002Fagent-server-api","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Frbren","rbren.io","2026-05-08 00:12:29",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add rbren\u002Fdotfiles --skill agent-server-api",{"tool":57,"command":58},"bunx","bunx skills add rbren\u002Fdotfiles --skill agent-server-api",{"tool":60,"command":61},"pnpm","pnpm dlx skills add rbren\u002Fdotfiles --skill agent-server-api","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Fagent-server-api\u002FSKILL.md",true,[],[66,77,91,98,110,117],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":39},"01M6BVYXK6WJYT8JWSEXTBZWVZ","this-environment","Complete guide to this DigitalOcean droplet running openhands-remote at oh.rbren.io — hardware, networking, apps, auth, DNS, and how to add new things","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Fthis-environment\u002FSKILL.md",[],[73,38,74,75,76],"this environment","dns","networking","auth",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":81,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":85,"publishedAt":39},"01M6BVYVK3FQV4GCWKGQKJP9CM","skill-creator","Guide for creating effective skills that extend agent capabilities with specialized knowledge, workflows, or tool integrations. Use when the user wants to create or update a skill.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Fskill-creator\u002FSKILL.md",[84],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[86,36,87,88,89,90],"skill creator","knowledge","capabilities","update","workflows",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":39},"01M6BVYTGN4ZG2G4EJ8B45H97H","rethink","When I tell you to rethink, use this skill","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Frethink\u002FSKILL.md",[],[93],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":39},"01M6BVYRR991NQ2M73JGKA978R","rbren-snippets","The #rbren-snippets Slack channel (ID: C0APBQYQTFV) is Robert's personal scratchpad for thoughts, observations, bug notes, and dev environment updates.","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Frbren-snippets\u002FSKILL.md",[],[105,106,107,108,109],"rbren snippets","dev","notes","slack","personal",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":39},"01M6BVYQJRAZPTQHJDHHYWFVKM","nginx","How nginx is configured and managed for openhands-remote","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Fnginx\u002FSKILL.md",[],[112,38],{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":39},"01M6BVYMRW49R1W71X986J01GW","local-projects","local projects are stored in ~\u002Fgit\u002F","https:\u002F\u002Fgithub.com\u002Frbren\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fskills\u002Flocal-projects\u002FSKILL.md",[],[124,125,126],"projects","local projects","git"]