-
Notifications
You must be signed in to change notification settings - Fork 31
Home
OculiX looks at the screen the way a human does. No DOM, no accessibility API, no driver dependency.
OculiX is the active fork of SikuliX1 (archived March 2026) — picking up 23 years of MIT-origin visual automation and bringing it to production-grade JVM tooling for regulated, legacy, and cross-platform environments where DOM-based tools cannot reach.
Most modern automation tools (Selenium, Appium, Playwright) need a DOM, an accessibility API, or a vendor driver. That covers maybe 60% of real software. OculiX covers the rest.
| 🏦 Banking & Finance | 🖥️ Mainframes | 🏪 Retail POS | 📱 Android fleets | 🔀 Hybrid flows |
|---|---|---|---|---|
| SAP, Oracle EBS, legacy thick clients | IBM 5250 / 3270 terminals | VNC over SSH, distant fleets | Android 12+ via ADB, no proprietary cloud | Selenium handles the browser, OculiX the native dialogs |
Visual matching + OCR + VNC + ADB, all from the same JVM library. Free, MIT, no telemetry, no per-seat licence.
☕ Java (native)
Maven dependency:
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>3.0.3</version>
</dependency>Drive any screen:
Screen s = new Screen();
s.click("login_button.png");
s.type("login_field.png", "admin");
s.wait("dashboard_logo.png", 10);Same code runs on Windows, macOS, Linux, and over VNC to remote machines.
🐍 Jython (in the OculiX IDE, no install)
Open the OculiX IDE, paste, hit Run :
click("login_button.png")
type("login_field.png", "admin")
wait("dashboard_logo.png", 10)Identical primitives as the Java API, exposed as global functions in the IDE's Jython runtime.
🟢 Node.js / TypeScript via Operix
npm install oculixconst { Screen, App, VNCScreen } = require('oculix');
const screen = await Screen.create();
await screen.click('login.png');
await screen.type('admin');
await screen.wait('dashboard.png', 10);The oculix npm package auto-downloads the OculiX JVM bridge JAR on first use into ~/.oculix/lib/. Zero node-java dependency.
🐍 Python via Operix (in progress)
The Python wrapper follows the same architecture as the Node.js one — JSON-RPC over stdio to a tiny JVM bridge. See oculix-org/Operix for the current state.
🔵 .NET via Operix (in progress)
The .NET wrapper is published in the same family. See oculix-org/Operix.
| Area | SikuliX1 | OculiX |
|---|---|---|
| OpenCV | openpnp 4.5.4 (JNI) | Apertix 4.10.0 (JNA) |
| Java baseline | 8+ | 17+ |
| VNC | Basic / broken | Full stack with TigerVNC + SSH tunnel |
| SSH | None | Embedded JSch tunnel for ADB / VNC |
| Android | Experimental | Production-ready (12+) |
| OCR | Tesseract only | PaddleOCR + Tesseract (pluggable, bundled server) |
| DPI / Retina | None | 5-mode cascade matching pipeline |
Headless (-r) |
Broken in many cases | Fixed, tested, CI-enforced |
| CI | Travis CI, Java 11 | GitHub Actions, Java 17, multi-platform |
| Recorder | Legacy (NPE-prone) | Modern Recorder (beta), AI-assisted |
| i18n | Partial | 22 locales, native-reviewed via community |
For SikuliX core API documentation (Region, Screen, Pattern, Match, OCR…), see sikulix.github.io. This wiki documents what OculiX adds or changes.
OculiX stays open-source MIT by design. The companion article "23 ans après le MIT, l'automatisation visuelle n'a plus besoin d'être commerciale" (in English: "23 years after MIT, visual automation no longer needs to be commercial") lays out the position. Concretely:
- 📦 Bundled, not licensed — OpenCV 4.10 (via Apertix), Tesseract, JSch, VNC, ADB. One jar, nothing else.
- 🚫 No agent, no port to open, no cloud telemetry. Air-gap-ready by default.
- ⚖️ MIT licence — relevant for AI Act compliance, defense, biotech, healthcare, banking deployments.
- 🤝 No commercial fork, no enterprise tier with paywalled features. The platform is one and the same for everyone.
OculiX is the JVM core. Around it, a small family of focused projects:
|
Operix |
Apertix |
|
paddleocr-server |
MCP server (in this repo, |
|
|
OculiX is community-driven and welcomes contributions of all sizes — bug reports, native i18n review, fork-and-fix PRs, design discussions.
Active maintainers and contributors include:
- @RaiMan — SikuliX1 creator, active on architecture discussions (issues #291, #277…) and native reviewer for the German bundle
- @julienmerconsulting — current maintainer, OculiX direction
- Native i18n reviewers : @issaojr (pt_BR), @tcc (zh_TW), @peixuana (zh_CN), @yash-biswakarma (hi), @yunosan007 (ja)
- Bug hunters & fixers : @micves, @adriancostin6, @robserm, @nishantsir57, @roboraptor
Where to discuss:
- GitHub Issues — bugs, feature requests, design
- Discussions — questions, ideas, show & tell
- See Heritage for the full lineage and acknowledgements
|
|
OculiX is MIT-licensed and developed in the open by the oculix-org community.