{"id":"75da2552-1cd6-4dd1-a6e0-ae62a71256a8","slug":"clawhub-lahfir-agent-desktop-ffi","name":"agent-desktop-ffi","description":"C-ABI bindings over agent-desktop's PlatformAdapter. Consumers (Python ctypes, Swift, Node ffi-napi, Go cgo, C++, Ruby fiddle) link libagent_desktop_ffi.{dylib,so,dll} and call `ad_*` functions directly instead of spawning the CLI binary per call. The canonical observe-act workflow is: ad_init → ad_adapter_create[_with_session] → ad_snapshot → parse @e refs → ad_execute_by_ref → ad_free_string → ad_adapter_destroy.","canonicalUrl":"https://www.xpersona.co/agent/clawhub-lahfir-agent-desktop-ffi","sourceUrl":"https://clawhub.ai/lahfir/agent-desktop-ffi","homepage":"https://clawhub.ai/lahfir/skills/agent-desktop-ffi","source":"CLAWHUB","vendor":{"slug":"clawhub","label":"Clawhub","url":"https://clawhub.ai/lahfir/skills/agent-desktop-ffi"},"protocols":["OPENCLEW"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":"1.0.7","freshnessAt":"2026-10-10T10:38:55.242Z","freshnessLabel":"Oct 10, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Oct 10, 2026"},{"label":"Vendor","value":"Clawhub"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"1.0.7"}],"factsPreview":[{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Clawhub","href":"https://clawhub.ai/lahfir/skills/agent-desktop-ffi","sourceUrl":"https://clawhub.ai/lahfir/skills/agent-desktop-ffi","sourceType":"profile","confidence":"medium","observedAt":"2026-10-10T10:38:55.243Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/clawhub-lahfir-agent-desktop-ffi/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lahfir-agent-desktop-ffi/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-10-10T10:38:55.243Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"1.5K downloads","href":"https://clawhub.ai/lahfir/agent-desktop-ffi","sourceUrl":"https://clawhub.ai/lahfir/agent-desktop-ffi","sourceType":"profile","confidence":"medium","observedAt":"2026-10-10T10:38:55.243Z","isPublic":true},{"factKey":"latest_release","category":"release","label":"Latest release","value":"1.0.7","href":"https://clawhub.ai/lahfir/agent-desktop-ffi","sourceUrl":"https://clawhub.ai/lahfir/agent-desktop-ffi","sourceType":"release","confidence":"medium","observedAt":"2026-08-28T00:35:42.860Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/clawhub-lahfir-agent-desktop-ffi/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lahfir-agent-desktop-ffi/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["1.5K downloads","Trust evidence available"],"agentCard":{"name":"agent-desktop-ffi","description":"C-ABI bindings over agent-desktop's PlatformAdapter. Consumers (Python ctypes, Swift, Node ffi-napi, Go cgo, C++, Ruby fiddle) link libagent_desktop_ffi.{dylib,so,dll} and call `ad_*` functions directly instead of spawning the CLI binary per call. The canonical observe-act workflow is: ad_init → ad_adapter_create[_with_session] → ad_snapshot → parse @e refs → ad_execute_by_ref → ad_free_string → ad_adapter_destroy.","source":"CLAWHUB","sourceId":"clawhub:s1793830nng35p6y70jxm4ybt984y8ka:agent-desktop-ffi","homepage":"https://clawhub.ai/lahfir/skills/agent-desktop-ffi","repository":"https://clawhub.ai/lahfir/agent-desktop-ffi","documentation":"https://www.xpersona.co/agent/clawhub-lahfir-agent-desktop-ffi","protocols":["OPENCLEW"],"examples":[{"kind":"example","language":"sh","snippet":"cargo build --profile release-ffi -p agent-desktop-ffi"},{"kind":"example","language":"text","snippet":"ad_init(AD_ABI_VERSION_MAJOR)                    // verify header ↔ dylib match\nadapter = ad_adapter_create_with_session(\"s1\")   // or ad_adapter_create()\nrc = ad_snapshot(adapter, \"Finder\", 0, 10, false, false, &json_out)\n// parse json_out: locate snapshot-qualified refs in data.tree\nad_free_string(json_out)\n// build action:\nAdAction act = {0}; act.kind = AD_ACTION_KIND_CLICK;\nrc = ad_execute_by_ref(adapter, \"@s8f3k2p9:e5\", NULL, &act, 0, &result_out)\nad_free_string(result_out)\nad_adapter_destroy(adapter)"}]}}