CloudMinds · Authentication Profile

Cloudminds Authentication

Authentication

CloudMinds declares 0 security scheme(s) across its OpenAPI definitions.

CompanyFrontier TechRoboticsCloud RoboticsArtificial IntelligenceRobot Development KitHARIXgRPCProtobufRobot Operating SystemComputer-VisionSpeech Recognition
Methods: Schemes: 0 OAuth flows: API key in:

Security Schemes

Source

Authentication Profile

cloudminds-authentication.yml Raw ↑
generated: '2026-08-10'
method: derived
source: grpc/harix/**/*.proto, harix 1.0.9 SDK client code (PyPI sdist)
note: >-
  CloudMinds publishes no public authentication documentation — the HARIX RDK developer portal does not
  answer from outside China and there is no OpenAPI with securitySchemes to read. This profile is derived
  from the provider's own compiled protobuf descriptors and the first-party Python SDK. It records what
  the shipped contract actually does, which is a finding in itself: there is no credential scheme on the
  wire.
summary:
  types: []
  api_key_in: []
  oauth2_flows: []
  transport_security: none
  identity_model: identifiers-in-payload
schemes: []
findings:
- id: no-transport-security
  severity: high
  detail: >-
    Every stub in the SDK is built with grpc.insecure_channel(...) — plaintext HTTP/2. No
    grpc.ssl_channel_credentials, no call credentials, no channel credentials appear anywhere in
    harix 1.0.9. Any deployment following the first-party SDK carries robot control commands
    (Move, Rotate, EmergencyStop, ShutdownRobot, RebootRcu) and biometric vision payloads (face,
    face attributes, face comparison) unencrypted.
  evidence: harix/rdk/skill/robot_control_api.py, harix/rdk/subscribe/subscribe.py and every other client module
- id: no-credential-on-the-wire
  severity: high
  detail: >-
    No RPC takes a token, key, signature or authorization field, and no gRPC metadata is attached by
    the SDK. Caller identity is asserted, not proven — it is carried as plain strings in
    common.CommonReqInfo (tenant_id, user_id, robot_id, robot_type, service_code). Authorization is
    therefore entirely the responsibility of the network boundary in front of the gRPC ingress; the
    published contract has none.
  evidence: grpc/harix/common/common.proto
- id: authority-header-as-routing
  severity: info
  detail: >-
    The only channel option the SDK sets is grpc.default_authority, supplied by the integrator. That
    overrides the HTTP/2 :authority pseudo-header, which is a routing/virtual-host selector at the
    ingress — not an authentication mechanism, though it is the closest thing to a tenant selector in
    the transport layer.
  evidence: harix/rdk/**/__init__ channel construction
- id: app-key-secret-issued-to-callbacks
  severity: medium
  detail: >-
    The one credential pair that appears anywhere in the contract flows the OTHER direction: when HARIX
    calls a skill application's Vision/BeforeRecognize callback, the application answers with
    serviceapp.VisionResponse.Propose { do_recognize, app_key, app_secret, faceset_id } — i.e. the skill
    app hands HARIX the credentials for a third-party recognition service to use on its behalf. Those
    fields are transported over the same plaintext channel.
  evidence: grpc/harix/serviceapp/recognizeVision.proto
identity_fields:
- {field: tenant_id, message: common.CommonReqInfo, role: tenant}
- {field: user_id, message: common.CommonReqInfo, role: end user}
- {field: robot_id, message: common.CommonReqInfo, role: device}
- {field: robot_type, message: common.CommonReqInfo, role: device model}
- {field: service_code, message: common.CommonReqInfo, role: calling service}
scopes:
  published: false
  note: No OAuth surface, so no scopes/ artifact is emitted (per pipeline, scopes/ is OAuth-only).
docs: null
docs_note: >-
  The developer portal that would document authentication —
  https://harix.dataarobotics.com/#/index/community/home, linked as "DEVELOPERS" from the company's own
  English homepage — does not complete a TCP connection from a US vantage point (probed 2026-08-10).