open-record-replay
Discovered★ 147Open-source macOS record-and-replay workflow recorder for computer use agents. Captures mouse, keyboard, and UI events as structured traces so agents can learn, replay, and automate real desktop tasks
Open Record/Replay
Teach Computer Use agents by demonstration.
Record a macOS workflow once, save the evidence, and let an agent turn it into a reusable skill.
English | 简体中文
Open Record/Replay is a local-first macOS recorder for workflows that are easier to show than to write down. It captures a user's real desktop actions into structured artifacts such as session.json and events.jsonl, validates the recording quality, and packages the evidence for an agent's skill creation flow.
The goal is simple: if a user can demonstrate a desktop workflow once, an agent should have enough evidence to learn it.
flowchart LR
A["User demonstrates a macOS workflow"] --> B["Open Record/Replay records events"]
B --> C["session.json + events.jsonl"]
C --> D["Validate recording quality"]
D --> E["Prepare skill input package"]
E --> F["Agent creates its own reusable Computer Use skill"]
Why This Exists
Some workflows are hard to describe as prompts:
- They depend on visible desktop UI.
- They involve file pickers, menus, modals, or drag-and-drop.
- They span multiple apps.
- They depend on personal workspace layout or team-specific conventions.
- They are easier to learn from a demonstration than from a written runbook.
Open Record/Replay gives agents a concrete evidence stream instead of asking them to infer the workflow from a vague description.
What You Can Record
Open Record/Replay can capture action-level evidence for workflows such as:
- Sending files or images through a desktop chat app.
- Creating a document and sharing its link.
- Opening a browser page, searching, and starting the right media.
- Moving between browser and desktop apps.
- Repeating a UI process that is not covered by a clean API or connector.
The recorder can capture:
window.changedmouse.clickmouse.dragkeyboard.text_inputkeyboard.submitselection.changed- app/window attribution
- UI targets
- selected items
- Accessibility tree or diff context
events.jsonl is the primary evidence. Screenshots are not part of the current core recording path.
Quick Demo
This is the typical flow for teaching an agent a new desktop workflow.
git clone https://github.com/humblebanana/open-record-replay.git
cd open-record-replay
npm install
npm run check
Check macOS permissions:
node bin/orr.js permissions check
Request missing permissions:
node bin/orr.js permissions request
Start a recording:
node bin/orr.js record start --name send-file-demo --out runs --request-permissions
Now demonstrate the workflow on your Mac. For example:
- Open a desktop chat app.
- Choose a recipient or channel.
- Attach a local file.
- Confirm the upload.
- Send a short follow-up message.
When finished, stop the recording:
node bin/orr.js record stop latest
Validate the evidence:
node bin/orr.js session validate-recording latest
Prepare a skill input package:
node bin/orr.js skill prepare latest --runs runs --out skill-inputs
The package will be written to:
skill-inputs/<session-id>/
├── README.md
├── events.jsonl
└── session.json
Give this directory to the current agent's skill creation flow.
Output Artifacts
Recording output:
runs/sessions/<session-id>/
├── session.json
├── events.jsonl
├── orr_session.json
└── recording_manifest.json
Skill input package:
skill-inputs/<session-id>/
├── README.md
├── events.jsonl
└── session.json
session.json records the recording boundary, timing, and event path. events.jsonl is the source of truth for what happened during the demonstration.
Agent Integration
This repository includes a host instruction skill:
skills/open-record-replay/SKILL.md
An agent should use it to understand when to start recording, when to stop, how to inspect events.jsonl, and how to hand the evidence package to its own skill creation flow.
Expected agent flow:
- Check or request required macOS permissions.
- Start recording only when the user is ready.
- After recording starts, stop the current turn and wait for the user to finish the demonstration.
- Stop the recorder when the user says the demonstration is complete.
- Read
session.jsonandevents.jsonl. - Validate the recording.
- Prepare the skill input package.
- Use the agent's own skill creation system to create and validate the final skill.
CLI Reference
node bin/orr.js permissions check
node bin/orr.js permissions request
node bin/orr.js record start --name my-workflow --out runs --request-permissions
node bin/orr.js record stop latest
node bin/orr.js session list
node bin/orr.js session inspect latest
node bin/orr.js session events latest
node bin/orr.js session validate-recording latest
node bin/orr.js skill prepare latest --runs runs --out skill-inputs
The stable public path is recording, validation, and skill input packaging.
Requirements
- macOS.
- Node.js 18+.
- Swift toolchain / Xcode Command Line Tools.
- Accessibility permission.
- Input Monitoring permission.
The core recorder does not require Screen Recording.
Privacy
Recordings are local by default, but events.jsonl can contain sensitive data:
- Window titles.
- URLs.
- Typed text.
- Selected text.
- File names.
- Local paths.
- Accessibility tree text from apps and web pages.
Review recordings before sharing them. Do not publish raw recordings that contain secrets, private documents, customer data, internal URLs, or personal information.
See Privacy.
Status
Open Record/Replay is alpha software.
Current public scope:
macOS native recorder
+ CLI
+ session.json / events.jsonl
+ recording validation
+ skill input package
+ host-agent skill creation handoff
Future work may include richer adapters or optional visual evidence. They are not part of the current stable public path.
Documentation
Simple Chinese
English | 简体中文
Open Record/Replay lets a Computer Use Agent learn a macOS desktop workflow through a single real demonstration.
It records a user's real actions on their Mac into session.json and events.jsonl, checks recording quality, and packages them into a Skill input package that the Agent can read. The final Skill is not generated directly by Open Record/Replay; it is produced by the current Agent using its own Skill creation flow.
The core goal is simple: if a user can demonstrate a workflow once, the Agent should have enough evidence to learn it.
flowchart LR
A["用户演示 macOS 工作流"] --> B["Open Record/Replay 录制事件"]
B --> C["session.json + events.jsonl"]
C --> D["验证录制质量"]
D --> E["打包 Skill 输入"]
E --> F["Agent 创建自己的可复用 Computer Use Skill"]
Why It's Needed
Some workflows are hard to write as prompts:
- It depends on the real desktop UI.
- It involves file pickers, menus, modals, or drag-and-drop.
- It spans multiple apps.
- It depends on a personal workspace layout or team-specific conventions.
- A single demonstration by the user is clearer than writing a long runbook.
What Open Record/Replay gives the Agent is not a vague description, but a real stream of event evidence.
What Can Be Recorded
Typical scenarios:
- Sending files or images through a desktop chat app.
- Creating a document and sharing its link.
- Opening a web page, searching for content, and playing the specified media.
- Switching operations between a browser and desktop apps.
- Reproducing a UI flow that has no stable API or connector.
Can capture:
window.changedmouse.clickmouse.dragkeyboard.text_inputkeyboard.submitselection.changed- App / window attribution
- UI target
- Selected files or text
- Accessibility tree / diff context
events.jsonl is the most critical evidence. Screenshots are not part of the current core recording path.
Quick Demo
Install and check:
git clone https://github.com/humblebanana/open-record-replay.git
cd open-record-replay
npm install
npm run check
Check macOS permissions:
node bin/orr.js permissions check
Request permissions:
node bin/orr.js permissions request
Start:
node bin/orr.js record start --name send-file-demo --out runs --request-permissions
Then demonstrate your workflow on your Mac. For example:
- Open a desktop chat app.
- Choose a contact or group chat.
- Attach a local file.
- Confirm the upload.
- Send a follow-up message.
Stop recording:
node bin/orr.js record stop latest
Validate:
node bin/orr.js session validate-recording latest
Prepare the Skill input package:
node bin/orr.js skill prepare latest --runs runs --out skill-inputs
Output goes to:
skill-inputs/<session-id>/
├── README.md
├── events.jsonl
└── session.json
Hand this directory to the current Agent's Skill creation flow.
Output Artifacts
Output:
runs/sessions/<session-id>/
├── session.json
├── events.jsonl
├── orr_session.json
└── recording_manifest.json
Skill input package:
skill-inputs/<session-id>/
├── README.md
├── events.jsonl
└── session.json
session.json records the recording boundary, timing, and event path. events.jsonl is the source of truth for what the user actually did.
How the Agent Integrates
The repository includes an instruction Skill for Agents:
skills/open-record-replay/SKILL.md
The Agent should use it to understand when to start recording, when to stop, how to read events.jsonl, and how to hand the evidence package to its own Skill creation flow.
Flow:
- Check or request the necessary macOS permissions.
- Start recording only when the user is ready.
- Once recording starts, the Agent stops its current turn and waits for the user to finish the demonstration.
- When the user says it is complete, the Agent stops the recording.
- Read
session.jsonandevents.jsonl. - Validate the recording quality.
- Prepare the Skill input package.
- Use the current Agent's own Skill creation system to generate and validate the final Skill.
CLI Commands
node bin/orr.js permissions check
node bin/orr.js permissions request
node bin/orr.js record start --name my-workflow --out runs --request-permissions
node bin/orr.js record stop latest
node bin/orr.js session list
node bin/orr.js session inspect latest
node bin/orr.js session events latest
node bin/orr.js session validate-recording latest
node bin/orr.js skill prepare latest --runs runs --out skill-inputs
The current stable public path is: record, validate, package the Skill input.
Requirements
- macOS.
- Node.js 18+.
- Swift toolchain / Xcode Command Line Tools.
- Accessibility permission.
- Input Monitoring permission.
The core recorder does not require the Screen Recording permission.
Privacy
Recordings are stored locally by default, but events.jsonl may contain sensitive data:
- Window titles.
- URLs.
- Typed text.
- Selected text.
- File names.
- Local paths.
- Accessibility tree text from apps and web pages.
Review before sharing. Do not publish raw recordings that contain secrets, private documents, customer data, internal URLs, or personal information.
See Privacy.
Project Status
Open Record/Replay is currently an alpha release.
Current public scope:
macOS 原生录制器
+ CLI
+ session.json / events.jsonl
+ 录制质量验证
+ Skill 输入包
+ 交给宿主 Agent 创建最终 Skill
Future work may include richer adapters or optional visual evidence. Not part of the current stable path.
Docs
Comments
Loading…
Similar plugins
by humblebanana
DeepSeek Harness record macOS desktop workflows by demonstration and turn them into agent skills (open-record-replay skill + orr_* tools)
★ 13
↓ 136/wk
MIT
TypeScript
Aug 13, 2026
dsh plugin --profile web add dsh-record-replayby davidekingsss
Agent screen capture on macOS and Windows: one tool captures the screen and returns the image itself, so the model sees it without a second call. On Windows a whole burst runs in one engine call; on m
★ 0
MIT
JavaScript
Sep 19, 2026
dsh plugin --profile web add dsh-screen-eyeby boogoo619
Workspace-wide sticky notes on an infinite canvas: notes are plain Markdown files, created manually, captured from conversations, or distilled by the AI, and can be handed back as context; ships 12 mo
★ 3
↓ 124/wk
MIT
JavaScript
Oct 2, 2026
dsh plugin --profile web add dsh-noteboardby Neo65536-engineer
Read-only work reports for DeepSeek Harness: reconstruct what an agent task actually did from session logs — tools used, files read/written, commands run, test results, failures, token usage, and whether it finished. Fully offline, no API key, no data leaves your machine.
★ 1
MIT
JavaScript
Sep 26, 2026
dsh plugin --profile web add dsh-agent-logby EvangeliMo
Computer-use mode for DeepSeek Harness: screen capture, mouse and keyboard synthesis, and window control for operating GUI software that has no agent-facing integration.
★ 3
↓ 97/wk
MIT
JavaScript
Oct 6, 2026
dsh plugin --profile web add dsh-computer-use-modeby Junkrat9527
macOS desktop control for DeepSeek Harness: agent operates non-browser apps (CapCut, Photoshop, WPS, native clients) like a human — 14 tools for mouse, keyboard, scrolling, app activation, windows and
★ 0
↓ 89/wk
MIT
JavaScript
Aug 20, 2026
dsh plugin --profile web add dsh-desktop-automation