
Description
You want OCR somewhere in your pipeline, and the options are a cloud API that bills per call or a full tesseract install with language packs on your machine. You want the text off a page that only exists after JavaScript runs, and now you are dragging in a headless Chrome too. OpenMac takes the other road: macOS already ships Vision, Translation and WKWebView, so it wraps those system frameworks as a plain HTTP service on localhost:8080. One curl call, no network, no bill.
Every endpoint answers with the same envelope — success, data, message — plus a timeCost field telling you how many milliseconds the machine spent on it. Image endpoints take exactly one of url, base64 or an absolute local path, whichever you happen to have. There is also a GET /SKILL.md that hands an AI agent the whole interface in one read, so you do not have to write that document yourself.
Text recognition: /api/ocr runs on the Vision framework, the same engine the system uses itself. It handles mixed scripts and vertical text, and returns both the text and where each block sits in the image.
Translation: /api/translate calls Apple's Translation framework (macOS 15 and newer). Once the language pack is downloaded the whole path is offline — the text never leaves the machine.
Rendered page content: /api/web-content drives a headless WKWebView that actually renders the page before handing back HTML. Pick waitUntil = domcontentloaded, networkidle0 or networkidle2, add a timeout as a backstop, and single-page apps come back with their real body text.
Face and landmark detection: /api/face returns a box and landmark positions for every face in the frame — enough for cropping, blurring or alignment.
QR and barcode reading: /api/qrcode decodes straight from the image, so there is no third-party decoder to pull in.
Text to speech: synthesis goes through the system TTS voices, the same ones behind macOS Speak Selection.
A manual for agents: GET /SKILL.md returns interface documentation written for a model to read. Point Claude Code or a similar agent at it and it knows how to call everything after one fetch.
Every endpoint answers with the same envelope — success, data, message — plus a timeCost field telling you how many milliseconds the machine spent on it. Image endpoints take exactly one of url, base64 or an absolute local path, whichever you happen to have. There is also a GET /SKILL.md that hands an AI agent the whole interface in one read, so you do not have to write that document yourself.
Features
Text recognition: /api/ocr runs on the Vision framework, the same engine the system uses itself. It handles mixed scripts and vertical text, and returns both the text and where each block sits in the image.
Translation: /api/translate calls Apple's Translation framework (macOS 15 and newer). Once the language pack is downloaded the whole path is offline — the text never leaves the machine.
Rendered page content: /api/web-content drives a headless WKWebView that actually renders the page before handing back HTML. Pick waitUntil = domcontentloaded, networkidle0 or networkidle2, add a timeout as a backstop, and single-page apps come back with their real body text.
Face and landmark detection: /api/face returns a box and landmark positions for every face in the frame — enough for cropping, blurring or alignment.
QR and barcode reading: /api/qrcode decodes straight from the image, so there is no third-party decoder to pull in.
Text to speech: synthesis goes through the system TTS voices, the same ones behind macOS Speak Selection.
A manual for agents: GET /SKILL.md returns interface documentation written for a model to read. Point Claude Code or a similar agent at it and it knows how to call everything after one fetch.

