CloudMinds · AsyncAPI Specification
Cloudminds Harix Events
Version
View Spec
View on GitHub
CompanyFrontier TechRoboticsCloud RoboticsArtificial IntelligenceRobot Development KitHARIXgRPCProtobufRobot Operating SystemComputer-VisionSpeech RecognitionAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-10'
method: derived
source: grpc/harix/serviceapp/recognizeVision.proto, grpc/harix/serviceapp/recognizeSpeech.proto, grpc/harix/robot-mind/robotskill.proto
spec_type: none
note: >-
CloudMinds publishes no AsyncAPI document and no HTTP webhooks. It does publish a real, machine-readable
push/event surface, and this catalog records it: the delivery mechanism is INVERTED gRPC — a skill
application registers its own gRPC address with HARIX and then implements a set of server-side services
that HARIX calls into to deliver recognition results and vision events. Read "channel" below as a gRPC
service method the subscriber implements, not an HTTP callback URL. Derived from the provider's own
compiled descriptors; nothing here is invented, and no AsyncAPI was authored on the provider's behalf.
delivery:
mechanism: gRPC server-side callback (subscriber hosts the server)
transport_security: none — the SDK's channels are plaintext (see authentication/cloudminds-authentication.yml)
envelope_request: common.CommonReqInfo
envelope_response: common.CommonRspInfo
subscription:
- method: robotmind.RobotMindService/RegisterSkill
file: grpc/harix/robot-mind/robotmind.proto
registers:
- {field: name, meaning: skill name}
- {field: skill_addr, meaning: the subscriber's own gRPC address that HARIX will call back}
- {field: skills, meaning: repeated list of skill identifiers}
- {field: skill_info, meaning: free-form skill metadata}
sdk: harix.rdk.subscribe.robot_subscribe.RobotMindSubscribe.subscribe
- method: robotmind.RobotSkillService/EnableSkill
file: grpc/harix/robot-mind/robotskill.proto
registers:
- {field: ability, meaning: enable/disable}
- {field: sub_addr, meaning: subscription callback address}
- {field: sub_name, meaning: subscription name}
- {field: extra_type, meaning: extension selector}
sdk: harix.rdk.subscribe.subscribe.Subscribe.subscribe
- method: skill.vision.EnableVision/enable
file: grpc/harix/vision/enableVision.proto
note: Per-skill enablement of the vision event stream.
- method: skill.asr.EnableSpeech/enable
file: grpc/harix/speech/enableSpeech.proto
note: Per-skill enablement of speech recognition results.
event_count: 17
events:
- {channel: serviceapp.Vision/BeforeRecognize, payload: serviceapp.ImageInfo, reply: serviceapp.VisionResponse, kind: pre-hook, description: HARIX asks the skill app whether to run recognition on an image and with which credentials (VisionResponse.Propose)}
- {channel: serviceapp.Vision/CompleteRecognize, payload: serviceapp.VisionRequest, reply: serviceapp.VisionResponse, kind: post-hook, description: Recognition finished — full result delivered to the skill app}
- {channel: serviceapp.Vision/OcrEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Text recognized in an image}
- {channel: serviceapp.Vision/MoneyEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Currency/banknote recognized}
- {channel: serviceapp.Vision/CarPlateEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Vehicle licence plate recognized}
- {channel: serviceapp.Vision/ObjectEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Object detected}
- {channel: serviceapp.Vision/FaceEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Face detected}
- {channel: serviceapp.Vision/FaceAttrEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Face attributes derived}
- {channel: serviceapp.Vision/CaptionEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Scene caption generated}
- {channel: serviceapp.Vision/ClassifyEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Image classified}
- {channel: serviceapp.Vision/FallEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Person-fall detected}
- {channel: serviceapp.Vision/CompareEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Face/image comparison result}
- {channel: serviceapp.Vision/VendingEvent, payload: serviceapp.VisionRequest, reply: serviceapp.EventResponse, kind: event, description: Vending-machine interaction recognized}
- {channel: serviceapp.Speech/OnRecognizeResult, payload: serviceapp.RecognitionResult, reply: serviceapp.RecognitionResponse, kind: event, description: Speech recognition result including the recognized question text and language}
- {channel: robotmind.RobotSkillService/EnableSkill, payload: robotmind.EnableSkillRequest, reply: robotmind.EnableSkillResponse, kind: control, description: HARIX enables or disables a registered skill on the subscriber}
- {channel: robotmind.RobotSkillService/HandleAction, payload: robotmind.ActionRequest, reply: robotmind.ActionResponse, kind: command, description: HARIX dispatches an action (id + param + context) to the skill app for execution}
- {channel: skill.vision.Vision/StreamingRecognize, payload: skill.vision.ImageRequest, reply: skill.vision.ImageResponse, kind: stream, description: 'Client-streaming vision recognition — the skill app streams frames up and receives one aggregated ImageResponse; the sibling skill.asr.Speech/StreamingRecognize is fully bidirectional. Listed here because these are the only continuous surfaces in the contract, though on both the subscriber is the gRPC client rather than the server.'}
gaps:
- No AsyncAPI 2.x/3.x document is published for this surface.
- No retry, ordering, at-least-once/at-most-once or replay semantics are stated anywhere in the contract.
- No signature or shared secret authenticates a callback, and the channel is plaintext, so a subscriber cannot verify that a delivered event came from HARIX.