# nut.js > Desktop automation library for Node.js. Control mouse, keyboard, and screen across Windows, macOS, and Linux. ## Quick Facts - **Type**: Open-source desktop automation library - **Language**: TypeScript/JavaScript (Node.js) - **Platforms**: Windows, macOS, Linux - **License**: Apache-2.0 (core), Commercial licenses available for premium plugins - **Website**: https://nutjs.dev - **Repository**: https://github.com/nut-tree/nut.js - **npm**: https://www.npmjs.com/package/@nut-tree/nut-js ## What is nut.js? nut.js is a cross-platform desktop automation library for Node.js that enables: - Mouse control (movement, clicks, dragging, scrolling) - Keyboard input (typing, key combinations, hotkeys) - Screen capture and analysis - Image-based element detection - OCR text recognition - Window management - Clipboard operations It's commonly used for: - End-to-end desktop application testing - Robotic Process Automation (RPA) - Desktop agents and AI assistants - GUI automation scripts ## Documentation ### Introduction - [Getting Started](https://nutjs.dev/docs/getting-started): Quick start guide for nut.js - [Installation](https://nutjs.dev/docs/installation): System requirements and setup - [Configuration](https://nutjs.dev/docs/configuration): Configuring nut.js behavior ### Core Concepts - [Mouse Control](https://nutjs.dev/docs/mouse): Mouse movement, clicks, and scrolling - [Keyboard Input](https://nutjs.dev/docs/keyboard): Typing text and key combinations - [Screen](https://nutjs.dev/docs/screen): Screen capture and dimensions - [Window Management](https://nutjs.dev/docs/window): Finding and manipulating windows - [Clipboard](https://nutjs.dev/docs/clipboard): Reading and writing clipboard content ### On-Screen Search - [Image Search](https://nutjs.dev/docs/search/image): Find UI elements by image matching - [Text Search (OCR)](https://nutjs.dev/docs/search/text): Find text on screen using OCR - [Element Search](https://nutjs.dev/docs/search/element): Find native UI elements - [Color Search](https://nutjs.dev/docs/search/color): Find regions by color ### Browser Integration - [Playwright Bridge](https://nutjs.dev/docs/plugins/playwright-bridge): Integrate with Playwright for hybrid testing - [Selenium Bridge](https://nutjs.dev/docs/plugins/selenium-bridge): Integrate with Selenium WebDriver ### Reference - [Migration Guides](https://nutjs.dev/docs/migrations): Upgrading between major versions - [API Reference](https://nutjs.dev/docs/api): Complete API documentation ## Examples ### Testing Frameworks - [Jest Integration](https://nutjs.dev/examples/jest-integration): Complete example of using nut.js with Jest for end-to-end desktop automation testing - [Vitest Integration](https://nutjs.dev/examples/vitest-integration): Using nut.js with Vitest for fast, modern desktop automation testing ### Integrations - [Electron App Testing](https://nutjs.dev/examples/electron-testing): Complete guide to testing Electron applications with nut.js and @playwright/test - [Playwright Bridge Example](https://nutjs.dev/examples/playwright-bridge): Visual automation with the Playwright Bridge plugin - [RDP Automation](https://nutjs.dev/examples/rdp-automation): Automate a remote desktop session via RDP with nut.js - [Selenium Bridge Example](https://nutjs.dev/examples/selenium-bridge): Visual testing with the Selenium Bridge plugin ### Advanced Usage - [Color Search](https://nutjs.dev/examples/color-search): Find and interact with UI elements based on pixel colors - [Element Inspector](https://nutjs.dev/examples/element-inspector): Using the nut.js Element Inspector for native UI element discovery and automation - [Image Matching](https://nutjs.dev/examples/image-matching): Master image-based automation with template matching and OCR - [Legacy Application Automation](https://nutjs.dev/examples/legacy-app-automation): Automate legacy desktop applications that lack modern APIs using nut.js - [Text Search (OCR)](https://nutjs.dev/examples/text-ocr): Find and interact with text on screen using optical character recognition ## Blog (Recent Posts) - [Introducing the @nut-tree/element-inspector Plugin for Windows](https://nutjs.dev/blog/remote-plugin) (2024-12-17): Explore the new `@nut-tree/element-inspector` plugin for Windows, designed to enhance the capabilities of nut.js by providing an advanced implementation of the `ElementInspectionProviderInterface`. - [Release v4.5.0](https://nutjs.dev/blog/release450) (2024-11-05): nut.js v4.5.0: Unicode Support, Input Monitoring, and More! - [I'm giving up — on open source](https://nutjs.dev/blog/i-give-up) (2024-05-02): Sustainable open source will stay a dream - [Automate outside the box - nut.js remote plugins](https://nutjs.dev/blog/element-inspection) (2024-04-30): Introducing native remote support for nut.js - automate distant machines via VNC or RDP protocols. - [We have company!](https://nutjs.dev/blog/we-have-company) (2024-04-11): What's coming to nut.js? - [A short summary of the nut.js plugin architecture!](https://nutjs.dev/blog/short-plugin-summary) (2024-02-28): A short summary of the nut.js plugin architecture! - [Why screen capture is broken on macOS Ventura](https://nutjs.dev/blog/apple-silicon-screencapture-memory) (2023-04-16): Searching for the root cause of broken screen capture on macOS Ventura - [Apple Silicon + Screen Capture = 💥](https://nutjs.dev/blog/apple-silicon-screencapture) (2023-03-22): Investigating broken screen capture on macOS Ventura on Apple Silicon - [nut.js in a nutshell](https://nutjs.dev/blog/in-a-nutshell) (2023-02-06): What's in the box? - [Why I'm Charging What I'm Charging](https://nutjs.dev/blog/money) (2023-01-28): Sustainable open source is still a problem ## Package Changelogs - [@nut-tree/bolt Changelog](https://nutjs.dev/changelog/bolt): Version history and release notes - [@nut-tree/element-inspector Changelog](https://nutjs.dev/changelog/element-inspector): Version history and release notes - [@nut-tree/libnut Changelog](https://nutjs.dev/changelog/libnut): Version history and release notes - [@nut-tree/nl-matcher Changelog](https://nutjs.dev/changelog/nl-matcher): Version history and release notes - [@nut-tree/nut-js Changelog](https://nutjs.dev/changelog/core): Version history and release notes - [@nut-tree/playwright-bridge Changelog](https://nutjs.dev/changelog/playwright-bridge): Version history and release notes - [@nut-tree/plugin-ai-sdk Changelog](https://nutjs.dev/changelog/plugin-ai-sdk): Version history and release notes - [@nut-tree/plugin-azure Changelog](https://nutjs.dev/changelog/azure): Version history and release notes - [@nut-tree/plugin-ocr Changelog](https://nutjs.dev/changelog/ocr): Version history and release notes - [@nut-tree/plugin-screenrecording Changelog](https://nutjs.dev/changelog/plugin-screenrecording): Version history and release notes - [@nut-tree/plugin-screenrecording Changelog](https://nutjs.dev/changelog/provider-ai-sdk): Version history and release notes - [@nut-tree/plugin-screenrecording Changelog](https://nutjs.dev/changelog/screenrecording): Version history and release notes - [@nut-tree/selenium-bridge Changelog](https://nutjs.dev/changelog/selenium-bridge): Version history and release notes ## Premium Plugins nut.js offers premium plugins with commercial licenses: - **Bolt**: High-performance image matching using GPU acceleration - **NL-Matcher**: Natural language element finding using AI - **OCR**: Text recognition for reading screen content - **Element Inspector**: Visual debugging tool for automation scripts - **Azure**: Cloud-based image matching service See [Pricing](https://nutjs.dev/pricing) for license options. ## Additional Resources - [RSS Feed](https://nutjs.dev/blog/rss.xml): Subscribe to blog updates - [Full Content for LLMs](https://nutjs.dev/llms-full.txt): Complete site content in markdown format - [Privacy Policy](https://nutjs.dev/legal/privacy) - [EULA](https://nutjs.dev/legal/eula)