Client Strategy

This document defines the client delivery strategy for sikuli-go gRPC APIs across Python, Node.js, and Lua.

Shared Client Rules

Client Matrix

Client Recommended stack Codegen approach Maturity
Python grpcio, grpcio-tools, protobuf generate stubs directly from .proto High
Node.js @grpc/grpc-js, @grpc/proto-loader, generated JS/TS stubs generate JS/TS stubs from .proto High
Lua grpcurl + generated descriptor (protoset) direct gRPC method wrapper via CLI transport Medium

Current Implementation Snapshot (February 21, 2026)

Python

Recommended for first external integration.

Typical wrapper concerns:

Node.js

Recommended for service-to-service integration and web tooling.

Typical wrapper concerns:

Binary Resolution

Node package runtime binary selection is owned by the SDK launcher/runtime layer.

Repository references:

Lua

Lua has more runtime variance; this implementation uses direct gRPC method invocation via grpcurl.

Implementation Phases

Phase 1: Shared contract and tooling

Status: ✅ Implemented

Phase 2: Python client

Status: ✅ Implemented (baseline wrapper and examples)

Phase 3: Node.js client

Status: ✅ Implemented (baseline wrapper and examples)

Phase 4: Lua client path

Status: ✅ Implemented (grpcurl method path)

Phase 5: Documentation and distribution

Status: 🟡 In progress

Phase 6: Hardening and operations

Status: 🟡 Planned

Client Deliverables

For each client, ship:

Release Versioning Controls

client-release.yml computes client versions from CI build metadata before publishing.

Examples: