Menu

Tree [85830d] master /
 History

HTTPS access


File Date Author Commit
 .github 2026-04-02 julienmerconsulting julienmerconsulting [933036] Delete .github/workflows/eval.yml
 .run 2021-02-08 RaiMan RaiMan [384e92] macOS: detect/evaluate/show security&privacy se...
 API 3 days ago julienmerconsulting julienmerconsulting [85830d] Update pom.xml
 IDE 2026-04-05 Claude Claude [27abdd] Fix 5 critical bugs found in final audit
 Support 2022-09-03 raimundhocke raimundhocke [6248c4] minor README
 docs 2026-04-03 Claude Claude [f4cca3] Fix native lib paths to match JNA conventions u...
 pages 2021-04-29 RaiMan RaiMan [b91367] download 2.0.5
 .gitignore 2026-04-04 Raimund Hocke Raimund Hocke [d21489] Intellij: ignore .run
 .java-version 2021-08-03 Archimedes Trajano Archimedes Trajano [0f2625] feat(ci): specify java version so that jenv wil...
 LICENSE 2018-03-07 Raimund Hocke Raimund Hocke [4b5542] Initial commit
 README.md 2026-04-01 julienmerconsulting julienmerconsulting [a27772] Update README.md
 RELEASE_NOTES.md 2026-03-23 JmerAuchan JmerAuchan [0ba1dd] Fix ADB Android 12+: display dimension, screenc...
 SECURITY.md 2026-04-01 julienmerconsulting julienmerconsulting [e43b7a] Create SECURITY.md
 oculix_robot.png 2026-03-23 JmerAuchan JmerAuchan [ba735f] Enhance and fix Adnroid Oculix feature
 pom.xml 2026-03-31 julienmerconsulting julienmerconsulting [b8f926] Update pom.xml
 test_v3.py 2026-03-17 JmerAuchan JmerAuchan [496ba8] update tesseract engine

Read Me

OculiX # OculiX **Visual automation for the real world.** [![Java](https://img.shields.io/badge/Java-11%2B-orange?style=flat-square&logo=openjdk)](https://adoptium.net) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) [![Fork of](https://img.shields.io/badge/Fork%20of-SikuliX1%20%28archived%29-lightgrey?style=flat-square)](https://github.com/RaiMan/SikuliX1) [![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen?style=flat-square)](https://github.com/julienmerconsulting/OculiX) [![Changes](https://img.shields.io/badge/Changes%20vs%20SikuliX-123%2C728%20insertions-blue?style=flat-square)]() [![Version](https://img.shields.io/badge/Version-3.0.1-blue?style=flat-square)]()
*From the Latin **oculi** — eyes.* *Because if you can see it, you can automate it.*
**Desktops  ·  POS terminals  ·  Kiosks  ·  SCO machines  ·  Android devices  ·  VNC remote systems  ·  Legacy apps**
> **SikuliX1 was archived on March 3, 2026. OculiX is its active continuation.** > 511 files changed. 123,728 insertions. Built for production — not for demos.

⚔️ Why OculiX beats everything else

Google Vision API?
Tells you what's on screen. Can't click it.

GPT-4o vision?
Describes your UI beautifully. Can't touch it.

Browser Use / Claude Computer Use?
Browser only. Needs a DOM. Fails on native apps.

Appium?
Requires accessibility, XPath, a server… and a PhD.

SikuliX?
Archived. Dead. March 3, 2026.


👁️⚡ OculiX:

  • Sees the screen. Clicks it. Types. Swipes. Scrolls.
  • Desktop. Android. VNC remote. Kiosk. POS. Legacy 1998 apps.
  • No API. No DOM. No selectors. No cloud. No bullshit.

If a human can see it — OculiX can automate it.

💰 Price: €0. Forever.

⚡ What OculiX adds over SikuliX

### 🖥️ Full VNC stack Connect to any remote machine — no local display required. `VNCScreen`, `VNCRobot`, `VNCClient`, `VNCFrameBuffer`, `VNCClipboard`. Complete keyboard mapping via `XKeySym` (2200+ key definitions). Thread-safe parallel sessions via `ThreadLocalSecurityClient`. ### 🔐 Native SSH — zero external deps `jcraft/jsch` is embedded directly in the JAR. Open SSH tunnels from Java. No WSL. No shell wrapper. No sshpass. `SSHTunnel` available as a standalone utility in `com.sikulix.util`.
### 📱 Android automation via ADB Full ADB integration: `ADBClient`, `ADBDevice`, `ADBRobot`, `ADBScreen`. Control Android devices with the same API as desktop screens. WiFi or USB. No Appium. No XPath. No accessibility required. Powered by `jadb` — embedded, no external tools required. **Validated on Android 12+ (Samsung, 1080x2400).** ### 🧠 PaddleOCR integration Find and click on any text visible on screen — desktop or Android. `PaddleOCREngine` + `PaddleOCRClient` — full JSON parsing, bbox extraction, confidence scoring. Works on any app, any language, any resolution. No DOM. No selectors. Just text.
### 🏃 Multi-language script runners Run automation scripts in: **Jython, JRuby, Python, PowerShell, AppleScript, Robot Framework**. Network runner for distributed execution. Server runner for headless CI/CD integration. ### 🔧 Native OS libraries — bundled **Windows:** `WinUtil.dll` + `WinUtil.cc` — native Windows interaction, precompiled and bundled. **macOS:** `MacUtil.m` — native macOS support. **Linux:** `LinuxSupport.java` — 421 lines of Linux-specific handling. No manual native lib setup on any platform.
### 👁️ Apertix — OpenCV 4.10.0 custom build OculiX depends on [Apertix](https://github.com/julienmerconsulting/Apertix), a custom fork of `openpnp/opencv`. Full JNA migration — no `System.loadLibrary` conflicts. OpenCV 4.10.0 compiled from scratch on Windows x86-64 MSVC. Drop-in replacement for `org.openpnp:opencv`. ### 🏗️ Production build system Platform-specific `makeapi` scripts for Windows, macOS, Linux. TigerVNC deployed as a proper Maven dependency. `maven-deploy-API` for reproducible CI builds. IntelliJ run configurations included out of the box.

🚀 Getting started

Prerequisite: Java 11+
Eclipse Temurin  |  Azul Zulu

Build from source:

git clone https://github.com/julienmerconsulting/OculiX.git
cd OculiX
mvn clean install -DskipTests

Maven (local install):

<dependency>
  <groupId>com.sikulix</groupId>
  <artifactId>oculixapi</artifactId>
  <version>3.0.1</version>
</dependency>

Required dependency — Apertix (OpenCV 4.10.0):

<dependency>
  <groupId>io.github.julienmerconsulting.apertix</groupId>
  <artifactId>opencv</artifactId>
  <version>4.10.0-0</version>
</dependency>

Apertix releases


🖥️ VNC — automate remote machines

// Connexion directe à une machine distante via VNC
VNCScreen vnc = VNCScreen.start("192.168.1.10", 5900, "", 1920, 1080);
vnc.click("validate_button.png");
vnc.type("1234");
vnc.waitVanish("loading_spinner.png", 10);
vnc.stop();

🔐 SSH tunnel — from Java, no shell

// Tunnel SSH natif — jcraft/jsch embarqué
SSHTunnel tunnel = new SSHTunnel("user", "remote-host", 22, "password");
tunnel.open(5900, "localhost", 5900);

// Puis connexion VNC sur le port local tunnelé
VNCScreen vnc = VNCScreen.start("localhost", 5900, "", 1920, 1080);

📱 Android — ADB WiFi, no Appium

// Connexion ADB WiFi
ADBScreen android = ADBScreen.start("/path/to/adb");
System.out.println(android.getW() + "x" + android.getH()); // ex: 1080x2400

// Capture écran
ScreenImage img = android.capture();

// Clic sur image
android.click(new Pattern("accept_button.png").similar(0.7f));

// Clic sur texte via OCR PaddleOCR
PaddleOCREngine ocr = new PaddleOCREngine();
String json = ocr.recognize("/tmp/screen.png");
int[] coords = ocr.findTextCoordinates(json, "Validate");
if (coords != null) {
    int cx = coords[0] + coords[2] / 2;
    int cy = coords[1] + coords[3] / 2;
    android.getDevice().tap(cx, cy);
}

Works on any Android app — no accessibility API, no XPath, no DOM.
Validated on Android 12+ via WiFi (ADB pairing).


🧠 PaddleOCR — find text anywhere

PaddleOCREngine ocr = new PaddleOCREngine(); // localhost:5000 par défaut
String json = ocr.recognize("/path/to/screenshot.png");

// Trouver un texte et obtenir ses coordonnées
int[] coords = ocr.findTextCoordinates(json, "Submit");
// coords = {x, y, width, height}

// Tous les textes détectés avec leur confiance
Map<String, Double> results = ocr.parseTextWithConfidence(json);
// {"Submit" -> 0.9997, "Cancel" -> 0.9981, ...}

🏃 Script runners — run anything

// Jython
Runner.run("myscript.py", new String[]{});

// PowerShell
Runner.run("myscript.ps1", new String[]{});

// Robot Framework
Runner.run("test.robot", new String[]{});

📦 What's inside

Component Status Details
Core API — Screen, Region, Pattern, Match ✅ Active Extended from SikuliX 2.0.5
VNCScreen + VNCRobot + VNCClient ✅ Active 1000+ lines reworked, production-tested
VNCFrameBuffer + VNCClipboard + XKeySym ✅ Active Full remote control stack
SSH tunnel — jcraft/jsch ✅ Embedded No external SSH dependency
Android ADB — ADBScreen + jadb ✅ Active Validated Android 12+ WiFi
PaddleOCR — text detection + click ✅ Active Full JSON parsing, bbox, confidence
Apertix — OpenCV 4.10.0 JNA ✅ Active Custom build, no loadLibrary conflict
Script runners — Jython, JRuby, Python, PS, Robot ✅ Active Multi-language automation
Native libs — Windows DLL + macOS + Linux ✅ Bundled No manual setup
TigerVNC Maven dependency ✅ Active Reproducible builds
SikuliX IDE 🔧 Maintained No new features planned
Operix — Python wrapper 🔬 Coming soon See roadmap

🗺️ Roadmap

  • [ ] Fat JAR — one file, no manual classpath management
  • [ ] Maven Central publication
  • [ ] Operix — Python wrapper for OculiX via py4j
    Write your automation scripts in Python, powered by OculiX under the hood.
    Same API. No Java knowledge required.
  • [ ] Linux / macOS Apertix binaries — cross-platform OpenCV builds
  • [ ] OculiX simplified API — single entry point, zero internal knowledge required
  • [ ] Appium driver — register OculiX as a Selenium Grid node

🤝 Contributing

Issues, bug reports, pull requests — all welcome.

OculiX targets production QA engineers and automation specialists working on environments without API access — desktops, kiosks, POS terminals, legacy software, Android devices.

If you were using SikuliX and looking for a continuation — you found it.

  • Bug reports / feature requestsIssues
  • Bug fixes → Pull request against master
  • Major changes → Open an issue first

🌐 Ecosystem

Apertix      → OpenCV 4.10.0 custom build (fork openpnp/opencv)
    ↓
OculiX       → visual automation engine (fork SikuliX1) — v3.0.1
    ↓
Operix       → Python wrapper via py4j (coming soon)
Project Repo Status
Apertix julienmerconsulting/Apertix ✅ v4.10.0-0
OculiX julienmerconsulting/OculiX ✅ v3.0.1
Operix coming soon 🔬 In design

👤 Maintainer

**Julien MER** — QA Architect · 20+ years in defense, biotech, aerospace, retail Katalon Top Partner Europe  |  JMer Consulting Newsletter [Bonnes Pratiques QA](https://www.linkedin.com/newsletters/bonnes-pratiques-qa-6878703775620636672) — 3574 abonnés [Clean QA Academy](https://qa-julienmer-course.pages.dev/) — 100% free QA training

📄 License

MIT — same as the original SikuliX project.

Original project: RaiMan/SikuliX1 (archived March 2026)
Original author: Raimund Hocke — all credits for the foundational work.

MongoDB Logo MongoDB