Local desktop utility for macOS and Windows

Stay awake
until it is done.

Relay stops your computer from sleeping while a task runs, and launches Claude Code prompts at a time you choose. It shows real process state, not a spinner.

Open source on GitHub
Keep awakeScheduled promptsHonest detectionTask history
Relay
Normal sleep behavior
System
Normal sleep
Active task
None
Source
None
Status
No task
Elapsed
00:00:00
Sleep prevention
Inactive
ActiveClaude Code task
Waiting for the next scheduled run.
Sleep prevention

Awake only when something is really running.

It holds a real operating system power request, prevent app suspension on macOS and the system execution state on Windows, and releases it the moment the work stops. The dashboard always names the reason it is awake.

Sleep preventionIOPMAssertion
Inactive
Nothing is running. The computer can sleep normally.
Scheduled prompts

Schedule a prompt. It runs when you are away.

Pick a time and a working directory. At that moment the app runs claude with your prompt delivered on stdin, so quotes and line breaks arrive exactly as written. It keeps the machine awake, watches the process, and records the result.

Scheduled runScheduled
claude -p (prompt on stdin)
Honest detection

It does not pretend to know more than it can.

For a scheduled run, completion is the real process exit and its code. For a watched application, the app tells you plainly what it can and cannot see, rather than claiming a browser task is finished because a window is open.

Watching: Google ChromeLive
Application detectedprocess present in the list
Yes
Task activitya matching process is running
Detected
Task completionneeds app integration to confirm
Cannot confirm
Task history

Every run is recorded and kept.

Name, type, scheduled time, start and end, duration, status, and exit code. Open any run to read its full output. History is stored on your machine and nowhere else.

HistoryLocal
Summarise the open pull request
Claude Code scheduled | duration 00:04:18 | exit 0
Completed
npm run build
Manual command | duration 00:01:52 | exit 1
Failed
Generate release notes
Claude Code scheduled | starts in 01:24:00
Scheduled
How a scheduled run works

Six steps, in order, every time.

01
Verify Claude Code
Check that claude is on PATH first. If it is missing, the run is marked failed with a clear message.
02
Deliver the prompt
Pass the prompt on stdin so quotes, line breaks, and special characters are never mangled by a shell.
03
Keep awake
Hold a system power request in the chosen working directory so the machine stays up while it works.
04
Detect the exit
Completion is the process exiting. Exit zero is completed. Any other code is failed.
05
Release
Drop the power request the instant the process ends, so the computer can sleep again.
06
Record
Write the run to local history with timing, status, exit code, and the full captured output.
On what is verified

Sleep prevention and wake behaviour are specific to each operating system. Scheduled wake from sleep uses pmset on macOS and a wake to run task on Windows, and each may ask for permission the first time. The app tells you exactly what it needs rather than assuming it worked.