Start with Downloads, Getting Started: Installation, Golang API: Installation, or Contribution: Development Setup if you want the task-first entry points. This page remains the deeper build and publish reference.
This is the current build reference for building sikuli-go from source.
1.24+20+4+3.10+protoccd /path/to/sikuli-go
yarn install
Build sikuli-go:
cd packages/api
go build -tags "gosseract opencv gocv_specific_modules gocv_features2d gocv_calib3d" -trimpath -ldflags="-s -w" -o ../../sikuli-go ./cmd/sikuli-go
Build sikuli-go-monitor:
cd packages/api
go build -tags "gosseract opencv gocv_specific_modules gocv_features2d gocv_calib3d" -trimpath -ldflags="-s -w" -o ../../sikuli-go-monitor ./cmd/sikuli-go-monitor
./scripts/generate-grpc-stubs.sh
./scripts/clients/generate-node-stubs.sh
./scripts/clients/generate-python-stubs.sh
./scripts/clients/generate-lua-descriptor.sh
yarn workspace @sikuligo/sikuli-go build
./scripts/clients/release-python-client.sh
Skip installer steps:
SKIP_INSTALL=1 ./scripts/clients/release-python-client.sh
make
Build docs locally and publish the generated site to the gh-pages branch:
make gh-publish
Options:
GH_PAGES_BRANCH=gh-pages target branchGH_PAGES_REMOTE=origin target remoteGH_PAGES_INCLUDE_BENCH=1 include local benchmark screenshots from .test-results/benchGH_PAGES_FORCE_PUSH=1 force-push the publish branchGH_PAGES_CNAME=docs.example.com include a CNAME file in published outputGH_PAGES_CONFIGURE_SOURCE=1 configure repository Pages source to gh-pages using gh apiGH_PAGES_REMOTE_URL=https://<token>@github.com/<owner>/<repo>.git explicit authenticated remote URL for non-interactive CI pushesCI automation:
.github/workflows/docs-pages.yml runs benchmark + API/parity doc generation, then executes GitHub Pages build/deploy on pushes to main (and master compatibility) and on manual dispatch.Run the local verifier:
make test-publish
What it checks:
sikuli-go binary and Node clientinit:js-examples scaffolds .mjs-only examplesinit:py-examples scaffolds requirements.txt + Python examplesunknown gRPC method: ClickOnScreenRequest message serialization failureOptional: verify using packed tarball install flow (closest to published package install):
VERIFY_PACKED_INSTALL=1 make test-publish
Run the full local integration suite:
make test-integration
What test-integration adds on top of test-publish:
FindOnScreen, ReadText, FindText)auto -> connect and auto -> spawn)auto -> connect and auto -> spawn)RUN_REAL_DESKTOP_E2E=1 (manual desktop fixture + live OCR)Run optional real-desktop E2E directly:
REAL_DESKTOP_E2E=1 make test-e2e
Select a specific monitor/display for capture (useful on multi-monitor setups):
REAL_DESKTOP_E2E=1 REAL_DESKTOP_E2E_DISPLAY=2 make test-e2e
Notes:
sikuli-go with OCR/OpenCV tags, opens a fixture page, then validates:
FindOnScreen against a visible imageReadText + FindText) from a live /snapshotREAL_DESKTOP_E2E_DISPLAY maps to SIKULI_CAPTURE_DISPLAY/SIKULI_GO_CAPTURE_DISPLAY for screencapture -D <display>.Benchmark FindOnScreen across matcher implementations (template, orb, hybrid) and multiple fixture scenarios:
grid, glyph)noise, orbtex)small, medium, large)0, 90, 180, 270)480x270, 640x360, 800x450, 960x540, 1024x576)Run:
make benchmark
Output artifacts (default):
.test-results/bench/find-on-screen-e2e.txt (raw go test benchmark output).test-results/bench/find-on-screen-e2e.json (machine-readable report).test-results/bench/find-on-screen-e2e.md (human-readable summary)docs/bench/index.md (guide-style benchmark overview at /bench/)docs/bench/reports/index.md (guide-style reports hub at /bench/reports/)docs/bench/reports/find-on-screen-e2e.md (guide-style detailed benchmark report)docs/bench/reports/find-on-screen-scenario-strategy.md (guide-style scenario strategy report).test-results/bench/find-on-screen-performance.svg (engine-level latency chart).test-results/bench/find-on-screen-accuracy.svg (engine-level success vs false-positive chart).test-results/bench/find-on-screen-resolution-time.svg (resolution-grouped latency chart by engine).test-results/bench/find-on-screen-resolution-matches.svg (resolution-grouped match counts by engine).test-results/bench/find-on-screen-resolution-misses.svg (resolution-grouped miss counts by engine).test-results/bench/find-on-screen-resolution-false-positives.svg (resolution-grouped false-positive counts by engine).test-results/bench/visuals/attempts/... (annotated per-attempt screenshots).test-results/bench/visuals/summaries/... (per-scenario combined summary screenshots across engines/attempts)Useful options:
FIND_BENCH_TIME=500ms FIND_BENCH_COUNT=3 make benchmark
FIND_BENCH_TAGS="opencv gocv_specific_modules gocv_features2d gocv_calib3d" make benchmark
FIND_BENCH_TAGS="" make benchmark
FIND_BENCH_REPORT_DIR=.test-results/custom make benchmark
FIND_BENCH_VISUAL=1 FIND_BENCH_VISUAL_MAX_ATTEMPTS=2 make benchmark
FIND_BENCH_VISUAL_DIR=.test-results/bench/custom-visuals FIND_BENCH_VISUAL_TIMEOUT=8s make benchmark
make benchmark
FIND_BENCH_PATCH_READMES=1 FIND_BENCH_README_PATHS="$PWD/README.md,$PWD/packages/client-node/README.md,$PWD/packages/client-python/README.md" make benchmark
FIND_BENCH_PATCH_READMES=1 FIND_BENCH_README_INLINE_IMAGES=4 FIND_BENCH_README_SECTION_TITLE="Latest Benchmark Evidence" make benchmark
FIND_BENCH_PATCH_READMES=0 make benchmark
FIND_BENCH_TEST_TIMEOUT=120m make benchmark
By default, the benchmark runs with OpenCV-related tags enabled so orb and hybrid implementations can be compared.
README patching is enabled by default. On each benchmark run, the script appends/updates an autogenerated section at the bottom of the root README plus the Node.js and Python client READMEs with:
.txt/.json/.md benchmark artifactsREADME patch controls:
FIND_BENCH_README_PATHS comma-separated paths (absolute or repo-root relative)FIND_BENCH_README_SECTION_TITLE section heading textFIND_BENCH_README_INLINE_IMAGES number of scenario images embedded inline per READMEFIND_BENCH_README_LINK_MODE link style for README artifacts; default auto keeps the root README repo-local and emits published Pages URLs for package READMEs, relative forces repo-local paths, pages forces published Pages URLsFIND_BENCH_README_BASE_URL Pages base URL used when FIND_BENCH_README_LINK_MODE=pagescd packages/api
go test -tags gosseract ./...