{"id":48946780,"url":"https://github.com/andrestubbe/fastrobot","last_synced_at":"2026-04-17T17:07:04.792Z","repository":{"id":349372417,"uuid":"1202079384","full_name":"andrestubbe/FastRobot","owner":"andrestubbe","description":"Ultra-fast Java screen capture \u0026 automation library - 10-17× faster than java.awt.Robot with 60-240fps DirectX streaming, 515× faster mouse input. Windows native performance via JNI.","archived":false,"fork":false,"pushed_at":"2026-04-14T14:49:21.000Z","size":5565,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-14T15:05:54.959Z","etag":null,"topics":["60fps","automation","bot-framework","computer-vision","directinput","directx","gaming-bot","gdi","java","java-library","jitpack","jni","maven","native","performance","robot","screen-capture","screen-recording","test-automation","windows"],"latest_commit_sha":null,"homepage":"https://jitpack.io/#andrestubbe/FastRobot","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrestubbe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-05T15:12:31.000Z","updated_at":"2026-04-14T14:49:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrestubbe/FastRobot","commit_stats":null,"previous_names":["andrestubbe/fastrobot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrestubbe/FastRobot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastRobot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastRobot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastRobot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastRobot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrestubbe","download_url":"https://codeload.github.com/andrestubbe/FastRobot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrestubbe%2FFastRobot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31937754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T12:37:54.787Z","status":"ssl_error","status_checked_at":"2026-04-17T12:37:25.095Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["60fps","automation","bot-framework","computer-vision","directinput","directx","gaming-bot","gdi","java","java-library","jitpack","jni","maven","native","performance","robot","screen-capture","screen-recording","test-automation","windows"],"created_at":"2026-04-17T17:06:58.167Z","updated_at":"2026-04-17T17:07:04.784Z","avatar_url":"https://github.com/andrestubbe.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FastRobot — High-Performance Java Automation \u0026 DirectX Screen Capture\n\n**⚡ Ultra-fast Java screen capture \u0026 automation library — 10-17× faster than java.awt.Robot**\n\n[![Build](https://img.shields.io/badge/build-passing-brightgreen.svg)]()\n[![Java](https://img.shields.io/badge/Java-17+-blue.svg)](https://www.java.com)\n[![Platform](https://img.shields.io/badge/Platform-Windows%2010+-lightgrey.svg)]()\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![JitPack](https://jitpack.io/v/andrestubbe/FastRobot.svg)](https://jitpack.io/#andrestubbe/FastRobot)\n\nFastRobot is a **high-performance Java automation library** that replaces `java.awt.Robot` with a **native Windows backend** using DirectInput, GDI BitBlt, and DirectX DXGI. Built for **low-latency automation**, **real-time screen capture**, **gaming bots**, **test automation**, and **computer vision** applications.\n\n---\n\n## Quick Start\n\n### Installation\n\n**Maven:**\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.andrestubbe\u003c/groupId\u003e\n    \u003cartifactId\u003efastrobot\u003c/artifactId\u003e\n    \u003cversion\u003ev2.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n**Gradle:**\n```groovy\nrepositories {\n    maven { url 'https://jitpack.io' }\n}\n\ndependencies {\n    implementation 'com.github.andrestubbe:fastrobot:v2.1.0'\n}\n```\n\n**Direct Download (both required):**\n- [fastrobot-2.1.0.jar](https://github.com/andrestubbe/FastRobot/releases/download/v2.1.0/fastrobot-2.1.0.jar) — Main library with DLL\n- [fastcore-1.0.0.jar](https://github.com/andrestubbe/FastCore/releases/download/v1.0.0/fastcore-1.0.0.jar) — JNI loader (required dependency)\n\n```bash\n# Run with both JARs\njava -cp \"fastrobot-2.1.0.jar:fastcore-1.0.0.jar:.\" YourApp\n```\n\n### Basic Usage\n\n```java\nimport fastrobot.FastRobot;\nimport java.awt.Rectangle;\nimport java.awt.image.BufferedImage;\n\nFastRobot robot = new FastRobot();\n\n// Fast screen capture - 10-17× faster than Robot\nBufferedImage screen = robot.createScreenCapture(new Rectangle(0, 0, 1920, 1080));\n\n// Instant mouse control\nrobot.mouseMove(500, 500);\nrobot.mousePress(FastRobot.BUTTON1);\nrobot.mouseRelease(FastRobot.BUTTON1);\n```\n\n### High-FPS Streaming\n\n```java\n// Start 60fps-240fps streaming capture\nrobot.startScreenStream(0, 0, 1920, 1080);\n\nwhile (true) {\n    if (robot.hasNewFrame()) {\n        int[] pixels = robot.getNextFrame(); // RGBA pixel array\n        double fps = robot.getStreamFPS();\n        System.out.println(\"Streaming at \" + fps + \" FPS\");\n    }\n}\n```\n\n---\n\n## Key Features\n\n- **10-17× faster screen capture** than `java.awt.Robot` (60fps+ streaming)\n- **515× faster mouse click latency** (DirectInput vs AWT event queue)\n- **60fps+ streaming** with DXGI hardware acceleration\n- **DirectInput mouse/keyboard** — no OS throttling\n- **Zero GC pressure** — native buffers, no Java2D overhead\n- **Powered by FastCore** — unified JNI loader for all FastJava modules\n- **MIT licensed** — free for commercial use\n\n---\n\n## Performance Benchmarks\n\n| Operation | java.awt.Robot | FastRobot | Speedup |\n|-----------|----------------|-----------|---------|\n| Screen Capture (1920×1080) | ~138ms | **~8-16ms** | **10-17×** |\n| Mouse Click Latency | ~0.24ms | **~0.0005ms** | **515×** |\n| **Streaming FPS** | ~7fps | **60fps+** | **8-10×** |\n\n*Measured on Windows 11, Intel Core i7, Java 17, 120Hz display*\n\n---\n\n## Examples\n\nAll examples are in the `examples/` folder:\n\n```bash\n# Desktop Stream Demo - Live preview with 60 FPS\ncd examples/00-basic-usage\nmvn compile exec:java\n```\n\n---\n\n## Project Structure\n\n```\nfastrobot/\n├── src/main/java/fastrobot/    # Main API\n│   └── FastRobot.java          # Core automation class\n├── examples/                   # Runnable examples\n│   └── 00-basic-usage/         # DesktopStreamDemo, PNGRecorder, Benchmark\n├── native/                     # C++ JNI source\n│   ├── fastrobot.cpp           # Native implementation\n│   └── DXGICapture.cpp         # DirectX capture\n├── pom.xml                     # Maven configuration\n├── README.md                   # This file\n└── COMPILE.md                # Build instructions\n```\n\n---\n\n## Building from Source\n\n### Prerequisites\n- JDK 17+\n- Maven 3.9+\n- Visual Studio 2019+ (for native DLL)\n\n### Build\n```bash\ngit clone https://github.com/andrestubbe/fastrobot.git\ncd fastrobot\n\n# Build Java + native DLL\nmvn clean compile\n\n# Create JAR with native libraries\nmvn package\n```\n\n---\n\n## API Reference\n\n### Mouse Operations\n- `mouseMove(int x, int y)` — Instant cursor positioning\n- `mousePress(int buttons)` — Direct hardware button press\n- `mouseRelease(int buttons)` — Direct hardware button release\n- `mouseClick(int buttons)` — Press + release\n- `smoothMouseMove(int x, int y, int durationMs)` — Human-like movement\n\n### Keyboard Operations\n- `keyPress(int keycode)` — Zero-latency key press\n- `keyRelease(int keycode)` — Zero-latency key release\n\n### Screen Capture\n- `createScreenCapture(Rectangle rect)` — BufferedImage capture\n- `getPixelColor(int x, int y)` — Single pixel (100× faster)\n\n### v2.0+ Streaming (High-FPS)\n- `startScreenStream(int x, int y, int w, int h)` — Begin 60fps+ capture\n- `getNextFrame()` — Get next frame (non-blocking)\n- `stopScreenStream()` — Stop and cleanup\n\n---\n\n## Architecture\n\n```\nJava API (FastRobot.java)\n    ↓ JNI (via FastCore)\nNative Layer (C++/Win32)\n    ├── DirectInput → Mouse/Keyboard\n    ├── GDI BitBlt → Screen capture\n    └── DXGI Desktop Duplication → Streaming\n    ↓\nWindows OS (Hardware)\n```\n\n**Powered by [FastCore](https://github.com/andrestubbe/FastCore)** — Unified JNI loader for the FastJava ecosystem.\n\n---\n\n## Platform Support\n\n| Platform | Status |\n|----------|--------|\n| Windows 11 | ✅ Full support |\n| Windows 10 | ✅ Full support |\n| Linux | ❌ Not planned |\n| macOS | ❌ Not planned |\n\n---\n\n## Version History\n\n### v2.1.0 — Current\n- **FastCore integration** — Unified JNI loader\n- **Cleaner structure** — Blueprint-based project layout\n- **Examples folder** — Separated demos from core library\n\n### v2.0.0\n- **DXGI Desktop Duplication API** — hardware-accelerated streaming\n- **60fps+ capture** — matches monitor refresh rate\n- **C++ scaling** — Hardware-accelerated frame scaling\n\n### v1.0.0\n- GDI BitBlt screen capture\n- DirectInput mouse/keyboard\n- Basic JNI wrapper\n\n---\n\n## License\n\nMIT License — free for commercial and private use. See [LICENSE](LICENSE) for details.\n\n---\n\n## Related Projects\n\n- [FastCore](https://github.com/andrestubbe/FastCore) — Unified JNI loader\n- [FastHotkey](https://github.com/andrestubbe/FastHotkey) — Global hotkey library\n- [FastTouch](https://github.com/andrestubbe/FastTouch) — Multi-touch gestures\n- [FastClipboard](https://github.com/andrestubbe/FastClipboard) — Clipboard access\n- [FastTheme](https://github.com/andrestubbe/FastTheme) — Display/theme monitor\n- [FastGraphics](https://github.com/andrestubbe/FastGraphics) — GPU-accelerated graphics\n- [FastAI](https://github.com/andrestubbe/FastAI) — AI/ML integration\n- [FastMath](https://github.com/andrestubbe/FastMath) — SIMD math\n- [FastIO](https://github.com/andrestubbe/FastIO) — High-performance I/O\n\n---\n\n**Part of the FastJava Ecosystem** — *Making the JVM faster.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrestubbe%2Ffastrobot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrestubbe%2Ffastrobot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrestubbe%2Ffastrobot/lists"}