This document defines and tracks the gRPC approach for exposing the sikuli-go API surface across multiple languages.
core contracts and pkg/sikuli semantics.v1 stable, future changes via v2).v1 on day one.v1 once published.proto/sikuli/v1/sikuli.proto.internal/grpcv1/pb/.internal/grpcv1/server.go.cmd/sikuli-go/main.go.internal/grpcv1/interceptors.go./healthz, /snapshot, /metrics, /dashboard) in internal/grpcv1/ops.go.scripts/generate-grpc-stubs.shscripts/check-grpc-stubs.shpackages/client-python/ + scripts/clients/generate-python-stubs.shpackages/client-node/ + scripts/clients/generate-node-stubs.shpackages/client-lua/ + scripts/clients/generate-lua-descriptor.shStart with a single sikuli.v1.SikuliService and expand by adding RPCs, not by changing existing fields.
Implemented v1 RPC set:
Find, FindAllReadText, FindTextMoveMouse, Click, TypeText, HotkeyObserveAppear, ObserveVanish, ObserveChangeOpenApp, FocusApp, CloseApp, IsAppRunning, ListWindowsRepository layout:
proto/
sikuli/
v1/
sikuli.proto
Proto conventions:
package sikuli.v1;Status: ✅ Implemented
proto/sikuli/v1/sikuli.proto is defined.protoc-based generation script is added.internal/grpcv1/pb.Status: ✅ Implemented
pkg/sikuli controllers (Finder, InputController, ObserverController, AppController).Status: ✅ Implemented (auth/logging/tracing interceptors)
Status: ✅ Implemented (baseline client wrappers/examples)
grpcurl direct method calls + descriptor generation).Status: 🟡 In progress
Generate stubs:
./scripts/generate-grpc-stubs.sh
Run server:
go run ./cmd/sikuli-go -listen :50051 -admin-listen :8080
Run server with auth:
go run ./cmd/sikuli-go -listen :50051 -auth-token "$SIKULI_GRPC_AUTH_TOKEN"
v1.v1 proto is versioned and documented.v1 RPC contract.