{"id":"7a07863f-4b72-49ac-9317-da52cbed958e","entityType":"agent","slug":"clawhub-genortg-openclaw-comfyui-api-runner","name":"Openclaw Comfyui Api Runner","canonicalUrl":"https://www.xpersona.co/agent/clawhub-genortg-openclaw-comfyui-api-runner","canonicalPath":"/agent/clawhub-genortg-openclaw-comfyui-api-runner","generatedAt":"2026-10-15T02:24:32.769Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:32:52.953Z","emptyReason":null},"description":"Safe ComfyUI image generation. Use saved or ad-hoc server profiles, paste/upload raw workflow JSON, submit, poll, and serve downloaded outputs locally.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 954 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s172yhaxa2mvn5n0h9mgjxszyd83r09e:openclaw-comfyui-api-runner","sourceUrl":"https://clawhub.ai/genortg/openclaw-comfyui-api-runner","homepage":"https://clawhub.ai/genortg/skills/openclaw-comfyui-api-runner","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/genortg/openclaw-comfyui-api-runner","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/genortg/skills/openclaw-comfyui-api-runner","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Openclaw Comfyui Api Runner technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:32:52.953Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:32:52.953Z","emptyReason":null},"stars":null,"forks":null,"downloads":954,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.0","tractionLabel":"954 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:32:52.888Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T02:32:52.953Z","lastCrawledAt":"2026-10-12T02:32:52.888Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T02:32:52.888Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.0","createdAt":"2026-04-23T09:33:36.721Z","changelog":"Initial release of comfyui-safe-connector, a safe ComfyUI image generation runner. - Supports saving and managing multiple ComfyUI server profiles. - Accepts workflows as pasted JSON, uploaded files, stdin, or built-in templates. - Submits and polls workflow jobs, downloading all output images to a local directory. - Provides output file paths and browser view URLs in the result JSON. - Prioritizes safe handling by parsing JSON only and not interpolating shell input.","fileCount":17,"zipByteSize":24254}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s172yhaxa2mvn5n0h9mgjxszyd83r09e:openclaw-comfyui-api-runner","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s172yhaxa2mvn5n0h9mgjxszyd83r09e:openclaw-comfyui-api-runner` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/genortg/openclaw-comfyui-api-runner before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-15T02:24:32.769Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-genortg-openclaw-comfyui-api-runner/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:32:52.953Z","emptyReason":null},"readme":"Skill: Openclaw Comfyui Api Runner\n\nOwner: genortg\n\nSummary: Safe ComfyUI image generation. Use saved or ad-hoc server profiles, paste/upload raw workflow JSON, submit, poll, and serve downloaded outputs locally.\n\nTags: latest:1.0.0\n\nVersion history:\n\nv1.0.0 | 2026-04-23T09:33:36.721Z | auto\n\nInitial release of comfyui-safe-connector, a safe ComfyUI image generation runner.\n\n- Supports saving and managing multiple ComfyUI server profiles.\n- Accepts workflows as pasted JSON, uploaded files, stdin, or built-in templates.\n- Submits and polls workflow jobs, downloading all output images to a local directory.\n- Provides output file paths and browser view URLs in the result JSON.\n- Prioritizes safe handling by parsing JSON only and not interpolating shell input.\n\nArchive index:\n\nArchive v1.0.0: 17 files, 24254 bytes\n\nFiles: comfy.sh (271b), references/CONFIG.md (986b), references/ENDPOINTS.md (886b), scripts/comfy_client.py (12560b), scripts/parse_workflow.py (6210b), scripts/run.py (21618b), scripts/serve_generated.py (10032b), scripts/serve_status.py (1364b), skill-card.md (2181b), SKILL.md (3104b), workflows/api-zturbo.json (2082b), workflows/api-zturbo.meta.json (451b), workflows/IL-Ikastrious.json (6411b), workflows/IL-Ikastrious.meta.json (923b), workflows/sdxl-simple.json (1381b), workflows/sdxl-simple.meta.json (433b), _meta.json (146b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: comfyui-safe-connector\ndescription: Safe ComfyUI image generation. Use saved or ad-hoc server profiles, paste/upload raw workflow JSON, submit, poll, and serve downloaded outputs locally.\nmetadata: {\"openclaw\":{\"emoji\":\"🖼️\",\"requires\":{\"anyBins\":[\"python3\"]},\"primaryEnv\":\"COMFYUI_API_KEY\",\"skillKey\":\"comfyui-safe-connector\"}}\nuser-invocable: true\nallowed-tools: exec read\n---\n\n# ComfyUI Safe Connector\n\nSmall safe runner for ComfyUI.\n\n## What it does\n- Connects to a remembered server profile or ad-hoc connection settings\n- Accepts a workflow as a pasted JSON string, uploaded file, stdin, or built-in template\n- Submits the workflow to ComfyUI\n- Polls until done and downloads **all** output images\n- Saves images under `generated/`\n- Returns downloaded file paths and browser view URLs for each output\n\n## Workflow keywords\nSaved workflows can include keywords in their `.meta.json`. Use the keyword, not the prompt, to pick the right template.\n\nExamples:\n- `IL-Ikastrious` → `anime`, `cartoon`, `illustration`, `ikastrious`\n- use for anime/cartoon image requests\n\n## Main command\nRun from the skill root:\n\n```bash\n./comfy.sh --health\n./comfy.sh --list-profiles\n./comfy.sh --save-profile home --base-url http://127.0.0.1 --port 8188\n./comfy.sh --gen --workflow-file /path/to/workflow.json\n./comfy.sh --gen --workflow-stdin < workflow.json\n./comfy.sh --gen --workflow-json '{...json...}'\n./comfy.sh --poll <prompt_id>\n./comfy.sh --watch <prompt_id>\n```\n\n`comfy.sh` is the supported entrypoint (instead of calling the Python runner directly).\n\n## Server profiles\nProfiles live in:\n\n`~/.config/openclaw/comfyui-runner.json`\n\nSupported fields:\n- `servers` (list of server entries)\n- `base_url`\n- `port`\n- `api_key`\n- `username`\n- `password`\n- `default_server`\n- `default_workflow`\n\nUse:\n- `--profile NAME` to use one for this run\n- `--save-profile NAME` to remember the current connection\n- `--set-profile NAME` to make a saved profile active\n- `--set-default-server NAME` to set the default server\n- `--set-default-workflow NAME` to set the default workflow\n- `--delete-profile NAME` to remove one\n\nEnv vars override saved profiles:\n- `COMFYUI_PROFILE`\n- `COMFYUI_BASE_URL`\n- `COMFYUI_PORT`\n- `COMFYUI_API_KEY`\n- `COMFYUI_USERNAME`\n- `COMFYUI_PASSWORD`\n\n## Workflow input\nPreferred for this skill:\n- `--workflow-file` for uploaded JSON files\n- `--workflow-stdin` for pasted JSON\n- `--workflow-json` for direct JSON strings\n\nBuilt-in templates still work via the positional template id, but raw JSON is the default safe path.\nIf a keyword matches exactly one saved workflow, you can pass the keyword instead of the template id.\n\n## Output\n- `poll` / `watch` write downloaded files to `generated/`\n- return JSON includes `view_url`, `local_path`, and `outputs[]`\n- image files can be sent directly into Discord or another channel if you want delivery there\n- server profiles are remembered in `~/.config/openclaw/comfyui-runner.json`\n\n## Safety\n- No shell interpolation of workflow contents\n- JSON is parsed, not executed\n- API key support is optional\n- Use only trusted ComfyUI servers\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7268msn49z4pk9k7vt791rqx82aza9\",\n  \"slug\": \"openclaw-comfyui-api-runner\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776936816721\n}\n\nFile v1.0.0:references/CONFIG.md\n\n# ComfyUI Safe Connector - Configuration\n\nConnection settings are stored in a small user config file:\n\n`~/.config/openclaw/comfyui-runner.json`\n\n## Schema\n\n```json\n{\n  \"active_profile\": \"home\",\n  \"profiles\": {\n    \"home\": {\n      \"base_url\": \"http://127.0.0.1\",\n      \"port\": 8188,\n      \"api_key\": \"optional\",\n      \"username\": \"optional\",\n      \"password\": \"optional\"\n    }\n  }\n}\n```\n\n## Env overrides\n\n- `COMFYUI_PROFILE`\n- `COMFYUI_BASE_URL`\n- `COMFYUI_PORT`\n- `COMFYUI_API_KEY`\n- `COMFYUI_USERNAME`\n- `COMFYUI_PASSWORD`\n\n## CLI\n\n```bash\n./comfy.sh --list-profiles\n./comfy.sh --save-profile home --base-url http://127.0.0.1 --port 8188\n./comfy.sh --profile home --health\n```\n\n## Notes\n\n- `base_url` can include the scheme, for example `http://127.0.0.1` or `https://host`.\n- If `base_url` already contains a port, `port` is ignored.\n- API key is optional.\n- Basic auth is optional.\n- No local viewer is required. The runner returns downloadable files and browser view URLs instead.\n\nFile v1.0.0:references/ENDPOINTS.md\n\n# ComfyUI Safe Connector - Endpoints\n\nThe runner uses these ComfyUI endpoints:\n\n| Method | Path | Purpose |\n|--------|------|---------|\n| GET | `/queue` | Health check and queue status |\n| POST | `/prompt` | Submit workflow |\n| GET | `/history/{prompt_id}` | Fetch execution result |\n| GET | `/view` | Download rendered image |\n| POST | `/queue` | Clear queue |\n| POST | `/interrupt` | Stop current run |\n\n## Workflow input\n\nThe runner accepts raw workflow JSON from:\n- `--workflow-file`\n- `--workflow-stdin`\n- `--workflow-json`\n\nIt also still supports built-in template JSON files in `workflows/`.\n\n## Output handling\n\nWhen a run finishes, the script:\n- fetches every image in the result history\n- saves them in `generated/`\n- returns `view_url` plus `local_path` for each output\n\nUse `python3 scripts/serve_generated.py` if you want a temporary local browser server for `generated/`.\n\nFile v1.0.0:skill-card.md\n\n## Description:\n\nSafe ComfyUI image generation. Use saved or ad-hoc server profiles, paste/upload raw workflow JSON, submit, poll, and serve downloaded outputs locally.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[genortg](https://clawhub.ai/user/genortg)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to run ComfyUI image-generation workflows from saved or ad-hoc server profiles, submit workflow JSON, poll jobs, and retrieve generated output paths and view URLs.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Saved server profiles can contain API keys, usernames, or passwords.\n\nMitigation: Prefer environment-only credentials, avoid saving API keys or passwords in profiles, and delete saved profiles that are no longer needed.\n\nRisk: Generated media can be served by a temporary local viewer without authentication.\n\nMitigation: Do not run the generated-media viewer on an untrusted network unless it is changed to bind only to localhost and require authentication.\n\nRisk: ComfyUI requests may send prompts and credentials to a configured server.\n\nMitigation: Use only trusted ComfyUI servers and prefer HTTPS for any non-local server.\n\n## Reference(s):\n\n- [ComfyUI Safe Connector Configuration](artifact/references/CONFIG.md)\n- [ComfyUI Safe Connector Endpoints](artifact/references/ENDPOINTS.md)\n- [ClawHub skill page](https://clawhub.ai/genortg/skills/openclaw-comfyui-api-runner)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Files, Shell commands, Configuration]\n\n**Output Format:** [JSON responses with local file paths, view URLs, and command-oriented guidance.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Downloads generated media under generated/ and can expose temporary local browser view URLs.]\n\n## Skill Version(s):\n\n1.0.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.0:workflows/api-zturbo.json\n\n{\n  \"1\": {\n    \"inputs\": {\n      \"model_name\": \"ZImageTurbo/realistic/intorealism_zitV10.safetensors\",\n      \"weight_dtype\": \"default\",\n      \"compute_dtype\": \"default\",\n      \"patch_cublaslinear\": true,\n      \"sage_attention\": \"auto\",\n      \"enable_fp16_accumulation\": true\n    },\n    \"class_type\": \"DiffusionModelLoaderKJ\",\n    \"_meta\": {\"title\": \"Diffusion Model Loader KJ\"}\n  },\n  \"2\": {\n    \"inputs\": {\n      \"clip_name\": \"mlabonne_Qwen3-4B-abliterated-Q4_K_M.gguf\",\n      \"type\": \"lumina2\",\n      \"device\": \"default\"\n    },\n    \"class_type\": \"ClipLoaderGGUF\",\n    \"_meta\": {\"title\": \"GGUF CLIP Loader\"}\n  },\n  \"3\": {\n    \"inputs\": {\n      \"vae_name\": \"ae.sft\"\n    },\n    \"class_type\": \"VAELoader\",\n    \"_meta\": {\"title\": \"Load VAE\"}\n  },\n  \"4\": {\n    \"inputs\": {\n      \"width\": 720,\n      \"height\": 1248,\n      \"batch_size\": 1\n    },\n    \"class_type\": \"EmptySD3LatentImage\",\n    \"_meta\": {\"title\": \"EmptySD3LatentImage\"}\n  },\n  \"6\": {\n    \"inputs\": {\n      \"text\": \"test prompt\",\n      \"clip\": [\"2\", 0]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\"title\": \"CLIP Text Encode (Prompt)\"}\n  },\n  \"7\": {\n    \"inputs\": {\n      \"seed\": -1,\n      \"steps\": 9,\n      \"cfg\": 1,\n      \"sampler_name\": \"res_multistep\",\n      \"scheduler\": \"simple\",\n      \"denoise\": 1,\n      \"model\": [\"10\", 0],\n      \"positive\": [\"6\", 0],\n      \"negative\": [\"11\", 0],\n      \"latent_image\": [\"4\", 0]\n    },\n    \"class_type\": \"KSampler\",\n    \"_meta\": {\"title\": \"KSampler\"}\n  },\n  \"8\": {\n    \"inputs\": {\n      \"samples\": [\"7\", 0],\n      \"vae\": [\"3\", 0]\n    },\n    \"class_type\": \"VAEDecode\",\n    \"_meta\": {\"title\": \"VAE Decode\"}\n  },\n  \"9\": {\n    \"inputs\": {\n      \"images\": [\"8\", 0]\n    },\n    \"class_type\": \"PreviewImage\",\n    \"_meta\": {\"title\": \"Preview Image\"}\n  },\n  \"10\": {\n    \"inputs\": {\n      \"shift\": 3,\n      \"model\": [\"1\", 0]\n    },\n    \"class_type\": \"ModelSamplingAuraFlow\",\n    \"_meta\": {\"title\": \"ModelSamplingAuraFlow\"}\n  },\n  \"11\": {\n    \"inputs\": {\n      \"conditioning\": [\"6\", 0]\n    },\n    \"class_type\": \"ConditioningZeroOut\",\n    \"_meta\": {\"title\": \"ConditioningZeroOut\"}\n  }\n}\n\nFile v1.0.0:workflows/api-zturbo.meta.json\n\n{\n  \"positive_prompt_node\": \"6\",\n  \"positive_prompt_input\": \"text\",\n  \"seed_node\": \"7\",\n  \"negative_prompt_node\": null,\n  \"model\": { \"node\": \"1\", \"input\": \"model_name\" },\n  \"extra\": {\n    \"steps\": { \"node\": \"7\", \"input\": \"steps\" },\n    \"cfg\": { \"node\": \"7\", \"input\": \"cfg\" },\n    \"sampler_name\": { \"node\": \"7\", \"input\": \"sampler_name\" },\n    \"scheduler\": { \"node\": \"7\", \"input\": \"scheduler\" },\n    \"denoise\": { \"node\": \"7\", \"input\": \"denoise\" }\n  }\n}\n\nFile v1.0.0:workflows/IL-Ikastrious.json\n\n{\n  \"14\": {\n    \"inputs\": {\n      \"ckpt_name\": \"Illustrious/anime/ikastrious_v200.safetensors\",\n      \"weight_dtype\": \"default\",\n      \"compute_dtype\": \"default\",\n      \"patch_cublaslinear\": true,\n      \"sage_attention\": \"auto\",\n      \"enable_fp16_accumulation\": true\n    },\n    \"class_type\": \"CheckpointLoaderKJ\",\n    \"_meta\": {\n      \"title\": \"CheckpointLoaderKJ\"\n    }\n  },\n  \"15\": {\n    \"inputs\": {\n      \"seed\": [\"28\", 3],\n      \"steps\": [\"33\", 0],\n      \"cfg\": [\"32\", 0],\n      \"sampler_name\": \"res_multistep\",\n      \"scheduler\": \"karras\",\n      \"denoise\": 1,\n      \"model\": [\"14\", 0],\n      \"positive\": [\"17\", 0],\n      \"negative\": [\"18\", 0],\n      \"latent_image\": [\"16\", 0]\n    },\n    \"class_type\": \"KSampler\",\n    \"_meta\": {\n      \"title\": \"KSampler\"\n    }\n  },\n  \"16\": {\n    \"inputs\": {\n      \"ratio_selected\": \"3:4 [896x1152 portrait]\",\n      \"batch_size\": 1\n    },\n    \"class_type\": \"Empty Latent Ratio Select SDXL\",\n    \"_meta\": {\n      \"title\": \"Empty Latent Ratio Select SDXL (Mikey)\"\n    }\n  },\n  \"17\": {\n    \"inputs\": {\n      \"text\": \"\",\n      \"clip\": [\"14\", 1]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\n      \"title\": \"Positive Prompt\"\n    }\n  },\n  \"18\": {\n    \"inputs\": {\n      \"text\": \"bad quality, worst quality, bad anatomy, low quality,\",\n      \"clip\": [\"14\", 1]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\n      \"title\": \"Negative Prompt\"\n    }\n  },\n  \"19\": {\n    \"inputs\": {\n      \"samples\": [\"15\", 0],\n      \"vae\": [\"14\", 2]\n    },\n    \"class_type\": \"VAEDecode\",\n    \"_meta\": {\n      \"title\": \"VAEDecode\"\n    }\n  },\n  \"20\": {\n    \"inputs\": {\n      \"filename_prefix\": \"ComfyUI\",\n      \"with_workflow\": false,\n      \"metadata_extra\": [\"21\", 0],\n      \"image\": [\"30\", 0]\n    },\n    \"class_type\": \"Save image with extra metadata [Crystools]\",\n    \"_meta\": {\n      \"title\": \"🪛 Save image with extra metadata\"\n    }\n  },\n  \"21\": {\n    \"inputs\": {\n      \"text\": \"\\n \\\"Title\\\": \\\"\\\",\\n \\\"Description\\\": \\\"\\\",\\n \\\"Author\\\": \\\"CmfRMT\\\",\\n \\\"Software\\\": \\\"ComfyUI\\\",\\n \\\"Category\\\": \\\"StableDiffusion\\\",\\n \\\"Keywords\\\": [\\n \\\"\\\"\\n ],\\n \\\"Copyrights\\\": \\\"\\\"\\n\"\n    },\n    \"class_type\": \"Text Multiline\",\n    \"_meta\": {\n      \"title\": \"Text Multiline\"\n    }\n  },\n  \"22\": {\n    \"inputs\": {\n      \"upscale_by\": [\"27\", 0],\n      \"seed\": [\"28\", 3],\n      \"steps\": [\"33\", 0],\n      \"cfg\": [\"32\", 0],\n      \"sampler_name\": \"res_multistep\",\n      \"scheduler\": \"karras\",\n      \"denoise\": 0.5,\n      \"mode_type\": \"Linear\",\n      \"tile_width\": [\"25\", 0],\n      \"tile_height\": [\"26\", 0],\n      \"mask_blur\": 8,\n      \"tile_padding\": 32,\n      \"seam_fix_mode\": \"None\",\n      \"seam_fix_denoise\": 1,\n      \"seam_fix_width\": 64,\n      \"seam_fix_mask_blur\": 8,\n      \"seam_fix_padding\": 16,\n      \"force_uniform_tiles\": false,\n      \"tiled_decode\": false,\n      \"batch_size\": 1,\n      \"image\": [\"19\", 0],\n      \"model\": [\"14\", 0],\n      \"positive\": [\"17\", 0],\n      \"negative\": [\"18\", 0],\n      \"vae\": [\"14\", 2],\n      \"upscale_model\": [\"23\", 0]\n    },\n    \"class_type\": \"UltimateSDUpscale\",\n    \"_meta\": {\n      \"title\": \"Ultimate SD Upscale\"\n    }\n  },\n  \"23\": {\n    \"inputs\": {\n      \"model_name\": \"4x-AnimeSharp.pth\"\n    },\n    \"class_type\": \"UpscaleModelLoader\",\n    \"_meta\": {\n      \"title\": \"Load Upscale Model\"\n    }\n  },\n  \"24\": {\n    \"inputs\": {\n      \"image\": [\"19\", 0]\n    },\n    \"class_type\": \"GetImageSize\",\n    \"_meta\": {\n      \"title\": \"Get Image Size\"\n    }\n  },\n  \"25\": {\n    \"inputs\": {\n      \"expression\": \"a*b\",\n      \"a\": [\"24\", 0],\n      \"b\": [\"27\", 0]\n    },\n    \"class_type\": \"MathExpression|pysssss\",\n    \"_meta\": {\n      \"title\": \"Math Expression 🐍\"\n    }\n  },\n  \"26\": {\n    \"inputs\": {\n      \"expression\": \"a*b\",\n      \"a\": [\"24\", 1],\n      \"b\": [\"27\", 0]\n    },\n    \"class_type\": \"MathExpression|pysssss\",\n    \"_meta\": {\n      \"title\": \"Math Expression 🐍\"\n    }\n  },\n  \"27\": {\n    \"inputs\": {\n      \"value\": 1.5\n    },\n    \"class_type\": \"FloatConstant\",\n    \"_meta\": {\n      \"title\": \"UPSCALE By\"\n    }\n  },\n  \"28\": {\n    \"inputs\": {\n      \"seed\": 984559063235368\n    },\n    \"class_type\": \"Seed\",\n    \"_meta\": {\n      \"title\": \"Seed\"\n    }\n  },\n  \"29\": {\n    \"inputs\": {\n      \"rgthree_comparer\": {\n        \"images\": [\n          {\n            \"name\": \"A\",\n            \"selected\": true,\n            \"url\": \"/api/view?filename=rgthree.compare._temp_vvkek_00031_.png&type=temp&subfolder=&rand=0.9181522617139417\"\n          },\n          {\n            \"name\": \"B\",\n            \"selected\": true,\n            \"url\": \"/api/view?filename=rgthree.compare._temp_vvkek_00032_.png&type=temp&subfolder=&rand=0.9513444099792554\"\n          }\n        ]\n      },\n      \"image_a\": [\"30\", 0],\n      \"image_b\": [\"19\", 0]\n    },\n    \"class_type\": \"Image Comparer (rgthree)\",\n    \"_meta\": {\n      \"title\": \"Image Comparer (rgthree)\"\n    }\n  },\n  \"30\": {\n    \"inputs\": {\n      \"guide_size\": 2048,\n      \"guide_size_for\": true,\n      \"max_size\": 2048,\n      \"seed\": [\"28\", 3],\n      \"steps\": [\"33\", 0],\n      \"cfg\": [\"32\", 0],\n      \"sampler_name\": \"res_multistep\",\n      \"scheduler\": \"karras\",\n      \"denoise\": 0.5,\n      \"feather\": 5,\n      \"noise_mask\": true,\n      \"force_inpaint\": true,\n      \"bbox_threshold\": 0.5,\n      \"bbox_dilation\": 10,\n      \"bbox_crop_factor\": 3,\n      \"sam_detection_hint\": \"center-1\",\n      \"sam_dilation\": 0,\n      \"sam_threshold\": 0.93,\n      \"sam_bbox_expansion\": 0,\n      \"sam_mask_hint_threshold\": 0.7,\n      \"sam_mask_hint_use_negative\": \"False\",\n      \"drop_size\": 10,\n      \"wildcard\": \"\",\n      \"cycle\": 1,\n      \"inpaint_model\": false,\n      \"noise_mask_feather\": 20,\n      \"tiled_encode\": false,\n      \"tiled_decode\": false,\n      \"image\": [\"22\", 0],\n      \"model\": [\"14\", 0],\n      \"clip\": [\"14\", 1],\n      \"vae\": [\"14\", 2],\n      \"positive\": [\"17\", 0],\n      \"negative\": [\"18\", 0],\n      \"bbox_detector\": [\"31\", 0],\n      \"segm_detector_opt\": [\"31\", 1]\n    },\n    \"class_type\": \"FaceDetailer\",\n    \"_meta\": {\n      \"title\": \"FaceDetailer\"\n    }\n  },\n  \"31\": {\n    \"inputs\": {\n      \"model_name\": \"segm/Anzhc Face seg 768MS v2 y8n.pt\"\n    },\n    \"class_type\": \"UltralyticsDetectorProvider\",\n    \"_meta\": {\n      \"title\": \"UltralyticsDetectorProvider\"\n    }\n  },\n  \"32\": {\n    \"inputs\": {\n      \"value\": 5\n    },\n    \"class_type\": \"FloatConstant\",\n    \"_meta\": {\n      \"title\": \"CFG\"\n    }\n  },\n  \"33\": {\n    \"inputs\": {\n      \"value\": 20\n    },\n    \"class_type\": \"INTConstant\",\n    \"_meta\": {\n      \"title\": \"STEPS\"\n    }\n  }\n}\n\nFile v1.0.0:workflows/IL-Ikastrious.meta.json\n\n{\n  \"positive_prompt_node\": \"17\",\n  \"positive_prompt_input\": \"text\",\n  \"negative_prompt_node\": \"18\",\n  \"negative_prompt_input\": \"text\",\n  \"seed_node\": \"28\",\n  \"keywords\": [\n    \"anime\",\n    \"cartoon\",\n    \"illustration\",\n    \"ikastrious\",\n    \"il-ikastrious\"\n  ],\n  \"model\": {\n    \"node\": \"14\",\n    \"input\": \"ckpt_name\"\n  },\n  \"extra\": {\n    \"ratio_selected\": {\n      \"node\": \"16\",\n      \"input\": \"ratio_selected\"\n    },\n    \"upscale_by\": {\n      \"node\": \"27\",\n      \"input\": \"value\"\n    },\n    \"cfg\": {\n      \"node\": \"32\",\n      \"input\": \"value\"\n    },\n    \"steps\": {\n      \"node\": \"33\",\n      \"input\": \"value\"\n    },\n    \"sampler_name\": {\n      \"node\": \"15\",\n      \"input\": \"sampler_name\"\n    },\n    \"scheduler\": {\n      \"node\": \"15\",\n      \"input\": \"scheduler\"\n    },\n    \"denoise\": {\n      \"node\": \"15\",\n      \"input\": \"denoise\"\n    },\n    \"upscale_model\": {\n      \"node\": \"23\",\n      \"input\": \"model_name\"\n    }\n  }\n}\n\nFile v1.0.0:workflows/sdxl-simple.json\n\n{\n  \"1\": {\n    \"inputs\": {\n      \"ckpt_name\": \"SDXL 1.0/realistic/intorealismXL_sdxlV4.safetensors\"\n    },\n    \"class_type\": \"CheckpointLoaderSimple\",\n    \"_meta\": {\"title\": \"Load Checkpoint\"}\n  },\n  \"2\": {\n    \"inputs\": {\n      \"text\": \"test prompt\",\n      \"clip\": [\"1\", 1]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\"title\": \"CLIP Text Encode (Prompt)\"}\n  },\n  \"3\": {\n    \"inputs\": {\n      \"text\": \"bad quality\",\n      \"clip\": [\"1\", 1]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\"title\": \"CLIP Text Encode (Negative)\"}\n  },\n  \"4\": {\n    \"inputs\": {\n      \"width\": 1024,\n      \"height\": 1024,\n      \"batch_size\": 1\n    },\n    \"class_type\": \"EmptyLatentImage\",\n    \"_meta\": {\"title\": \"Empty Latent Image\"}\n  },\n  \"5\": {\n    \"inputs\": {\n      \"seed\": 12345,\n      \"steps\": 20,\n      \"cfg\": 7,\n      \"sampler_name\": \"euler\",\n      \"scheduler\": \"normal\",\n      \"denoise\": 1.0,\n      \"model\": [\"1\", 0],\n      \"positive\": [\"2\", 0],\n      \"negative\": [\"3\", 0],\n      \"latent_image\": [\"4\", 0]\n    },\n    \"class_type\": \"KSampler\",\n    \"_meta\": {\"title\": \"KSampler\"}\n  },\n  \"6\": {\n    \"inputs\": {\n      \"samples\": [\"5\", 0],\n      \"vae\": [\"1\", 2]\n    },\n    \"class_type\": \"VAEDecode\",\n    \"_meta\": {\"title\": \"VAE Decode\"}\n  },\n  \"7\": {\n    \"inputs\": {\n      \"images\": [\"6\", 0]\n    },\n    \"class_type\": \"PreviewImage\",\n    \"_meta\": {\"title\": \"Preview Image\"}\n  }\n}\n\nFile v1.0.0:workflows/sdxl-simple.meta.json\n\n{\n  \"positive_prompt_node\": \"2\",\n  \"positive_prompt_input\": \"text\",\n  \"seed_node\": \"5\",\n  \"negative_prompt_node\": \"3\",\n  \"negative_prompt_input\": \"text\",\n  \"extra\": {\n    \"steps\": { \"node\": \"5\", \"input\": \"steps\" },\n    \"cfg\": { \"node\": \"5\", \"input\": \"cfg\" },\n    \"sampler_name\": { \"node\": \"5\", \"input\": \"sampler_name\" },\n    \"scheduler\": { \"node\": \"5\", \"input\": \"scheduler\" },\n    \"denoise\": { \"node\": \"5\", \"input\": \"denoise\" }\n  }\n}","readmeExcerpt":"Skill: Openclaw Comfyui Api Runner Owner: genortg Summary: Safe ComfyUI image generation. Use saved or ad-hoc server profiles, paste/upload raw workflow JSON, submit, poll, and serve downloaded outputs locally. Tags: latest:1.0.0 Version history: v1.0.0 | 2026-04-23T09:33:36.721Z | auto Initial release of comfyui-safe-connector, a safe ComfyUI image generation runner. - Supports saving and managing multiple ComfyUI s","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"./comfy.sh --health\n./comfy.sh --list-profiles\n./comfy.sh --save-profile home --base-url http://127.0.0.1 --port 8188\n./comfy.sh --gen --workflow-file /path/to/workflow.json\n./comfy.sh --gen --workflow-stdin < workflow.json\n./comfy.sh --gen --workflow-json '{...json...}'\n./comfy.sh --poll <prompt_id>\n./comfy.sh --watch <prompt_id>"},{"language":"json","snippet":"{\n  \"active_profile\": \"home\",\n  \"profiles\": {\n    \"home\": {\n      \"base_url\": \"http://127.0.0.1\",\n      \"port\": 8188,\n      \"api_key\": \"optional\",\n      \"username\": \"optional\",\n      \"password\": \"optional\"\n    }\n  }\n}"},{"language":"bash","snippet":"./comfy.sh --list-profiles\n./comfy.sh --save-profile home --base-url http://127.0.0.1 --port 8188\n./comfy.sh --profile home --health"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: comfyui-safe-connector\ndescription: Safe ComfyUI image generation. Use saved or ad-hoc server profiles, paste/upload raw workflow JSON, submit, poll, and serve downloaded outputs locally.\nmetadata: {\"openclaw\":{\"emoji\":\"🖼️\",\"requires\":{\"anyBins\":[\"python3\"]},\"primaryEnv\":\"COMFYUI_API_KEY\",\"skillKey\":\"comfyui-safe-connector\"}}\nuser-invocable: true\nallowed-tools: exec read\n---\n\n# ComfyUI Safe Connector\n\nSmall safe runner for ComfyUI.\n\n## What it does\n- Connects to a remembered server profile or ad-hoc connection settings\n- Accepts a workflow as a pasted JSON string, uploaded file, stdin, or built-in template\n- Submits the workflow to ComfyUI\n- Polls until done and downloads **all** output images\n- Saves images under `generated/`\n- Returns downloaded file paths and browser view URLs for each output\n\n## Workflow keywords\nSaved workflows can include keywords in their `.meta.json`. Use the keyword, not the prompt, to pick the right template.\n\nExamples:\n- `IL-Ikastrious` → `anime`, `cartoon`, `illustration`, `ikastrious`\n- use for anime/cartoon image requests\n\n## Main command\nRun from the skill root:\n\n```bash\n./comfy.sh --health\n./comfy.sh --list-profiles\n./comfy.sh --save-profile home --base-url http://127.0.0.1 --port 8188\n./comfy.sh --gen --workflow-file /path/to/workflow.json\n./comfy.sh --gen --workflow-stdin < workflow.json\n./comfy.sh --gen --workflow-json '{...json...}'\n./comfy.sh --poll <prompt_id>\n./comfy.sh --watch <prompt_id>\n```\n\n`comfy.sh` is the supported entrypoint (instead of calling the Python runner directly).\n\n## Server profiles\nProfiles live in:\n\n`~/.config/openclaw/comfyui-runner.json`\n\nSupported fields:\n- `servers` (list of server entries)\n- `base_url`\n- `port`\n- `api_key`\n- `username`\n- `password`\n- `default_server`\n- `default_workflow`\n\nUse:\n- `--profile NAME` to use one for this run\n- `--save-profile NAME` to remember the current connection\n- `--set-profile NAME` to make a saved profile active\n- `--set-default-server NAME` to set the default server\n- `--set-default-workflow NAME` to set the default workflow\n- `--delete-profile NAME` to remove one\n\nEnv vars override saved profiles:\n- `COMFYUI_PROFILE`\n- `COMFYUI_BASE_URL`\n- `COMFYUI_PORT`\n- `COMFYUI_API_KEY`\n- `COMFYUI_USERNAME`\n- `COMFYUI_PASSWORD`\n\n## Workflow input\nPreferred for this skill:\n- `--workflow-file` for uploaded JSON files\n- `--workflow-stdin` for pasted JSON\n- `--workflow-json` for direct JSON strings\n\nBuilt-in templates still work via the positional template id, but raw JSON is the default safe path.\nIf a keyword matches exactly one saved workflow, you can pass the keyword instead of the template id.\n\n## Output\n- `poll` / `watch` write downloaded files to `generated/`\n- return JSON includes `view_url`, `local_path`, and `outputs[]`\n- image files can be sent directly into Discord or another channel if you want delivery there\n- server profiles are remembered in `~/.config/openclaw/comfyui-runner.json`\n\n## Safety\n- No shell interpolation of workflow content"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7268msn49z4pk9k7vt791rqx82aza9\",\n  \"slug\": \"openclaw-comfyui-api-runner\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776936816721\n}"},{"path":"references/CONFIG.md","content":"# ComfyUI Safe Connector - Configuration\n\nConnection settings are stored in a small user config file:\n\n`~/.config/openclaw/comfyui-runner.json`\n\n## Schema\n\n```json\n{\n  \"active_profile\": \"home\",\n  \"profiles\": {\n    \"home\": {\n      \"base_url\": \"http://127.0.0.1\",\n      \"port\": 8188,\n      \"api_key\": \"optional\",\n      \"username\": \"optional\",\n      \"password\": \"optional\"\n    }\n  }\n}\n```\n\n## Env overrides\n\n- `COMFYUI_PROFILE`\n- `COMFYUI_BASE_URL`\n- `COMFYUI_PORT`\n- `COMFYUI_API_KEY`\n- `COMFYUI_USERNAME`\n- `COMFYUI_PASSWORD`\n\n## CLI\n\n```bash\n./comfy.sh --list-profiles\n./comfy.sh --save-profile home --base-url http://127.0.0.1 --port 8188\n./comfy.sh --profile home --health\n```\n\n## Notes\n\n- `base_url` can include the scheme, for example `http://127.0.0.1` or `https://host`.\n- If `base_url` already contains a port, `port` is ignored.\n- API key is optional.\n- Basic auth is optional.\n- No local viewer is required. The runner returns downloadable files and browser view URLs instead."},{"path":"references/ENDPOINTS.md","content":"# ComfyUI Safe Connector - Endpoints\n\nThe runner uses these ComfyUI endpoints:\n\n| Method | Path | Purpose |\n|--------|------|---------|\n| GET | `/queue` | Health check and queue status |\n| POST | `/prompt` | Submit workflow |\n| GET | `/history/{prompt_id}` | Fetch execution result |\n| GET | `/view` | Download rendered image |\n| POST | `/queue` | Clear queue |\n| POST | `/interrupt` | Stop current run |\n\n## Workflow input\n\nThe runner accepts raw workflow JSON from:\n- `--workflow-file`\n- `--workflow-stdin`\n- `--workflow-json`\n\nIt also still supports built-in template JSON files in `workflows/`.\n\n## Output handling\n\nWhen a run finishes, the script:\n- fetches every image in the result history\n- saves them in `generated/`\n- returns `view_url` plus `local_path` for each output\n\nUse `python3 scripts/serve_generated.py` if you want a temporary local browser server for `generated/`."},{"path":"skill-card.md","content":"## Description:\n\nSafe ComfyUI image generation. Use saved or ad-hoc server profiles, paste/upload raw workflow JSON, submit, poll, and serve downloaded outputs locally.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[genortg](https://clawhub.ai/user/genortg)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to run ComfyUI image-generation workflows from saved or ad-hoc server profiles, submit workflow JSON, poll jobs, and retrieve generated output paths and view URLs.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Saved server profiles can contain API keys, usernames, or passwords.\n\nMitigation: Prefer environment-only credentials, avoid saving API keys or passwords in profiles, and delete saved profiles that are no longer needed.\n\nRisk: Generated media can be served by a temporary local viewer without authentication.\n\nMitigation: Do not run the generated-media viewer on an untrusted network unless it is changed to bind only to localhost and require authentication.\n\nRisk: ComfyUI requests may send prompts and credentials to a configured server.\n\nMitigation: Use only trusted ComfyUI servers and prefer HTTPS for any non-local server.\n\n## Reference(s):\n\n- [ComfyUI Safe Connector Configuration](artifact/references/CONFIG.md)\n- [ComfyUI Safe Connector Endpoints](artifact/references/ENDPOINTS.md)\n- [ClawHub skill page](https://clawhub.ai/genortg/skills/openclaw-comfyui-api-runner)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Files, Shell commands, Configuration]\n\n**Output Format:** [JSON responses with local file paths, view URLs, and command-oriented guidance.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Downloads generated media under generated/ and can expose temporary local browser view URLs.]\n\n## Skill Version(s):\n\n1.0.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1325,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T02:32:52.953Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T02:32:52.953Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-15T02:24:32.769Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}