Local · durable · on your subscription

Run Claude Code workflows
while you sleep.

Design a multi-step agent pipeline on a canvas, then hit Run. Each step is its own Claude Code subagent. When a run hits your usage limit at 2am, it checkpoints, waits for the window to reset, and resumes exactly where it stopped.

A Nocturne run paused on a usage-limit-reset wait, ready to resume The same run monitored from the phone — connected peer-to-peer, approve from anywhere
Why it exists

The gap nobody else fills

Anthropic split durability and control across two surfaces that don't overlap. Nocturne is the layer in between — a free, open-source Claude Code workflow automation tool and scheduler: a local, durable engine that lets you run Claude Code overnight, unattended, and monitor it from a peer-to-peer mobile app.

CapabilityAnthropic cloudAnthropic localNocturne
Survives session close / sleepyesnoyes
Runs in your environment (files, MCP, toolchain)fresh cloneyesyes
Your permission rules, watchableautonomousyesyes
Flat-rate subscription economicscapped + meteredyesyes
Durable multi-step orchestration with waits + resumepartialnoyes
Visual design surfacenonoyes
Turns your own session history into workflowsnonoyes
Peer-to-peer mobile companion — pair by QR, works from any network, E2E-encryptednonoyes
Features

Everything, explained

A canvas with taste, an engine that doesn't lose your work, and an interface designed to feel simple but be powerful.

Design

Lay out a pipeline on an infinite canvas

Drop in agent steps, timed waits, human approval gates, and if/else conditions, then wire them together. Fan-out is just multiple outgoing edges; an AND-join is multiple incoming edges. Steps hand off through {{steps.id.output}} references.

  • Branch like a flowchart: tests green? → ship, else fix — deterministic, no LLM in the control plane
  • Run any step ×N — outputs joined, cost tracked per pass
  • Per-step model — Haiku for cheap work, Sonnet/Opus for the hard parts — plus a searchable library of your saved workflows
An if/else release gate opened from the saved-workflows library: run tests, then ship or fix based on the verdict
Configure

Options first — not empty text boxes

Every step is configured with choices, not typing. Model is a segmented control. Prompts have one-tap starters. Tools are preset bundles plus toggle chips. Permissions are a plain-language dropdown, with the rarely-needed knobs tucked behind Advanced.

  • Prompt presets: Analyze · Implement · Write tests · Review · Use prior step
  • Tool bundles: Read-only · Edit code · Full access
  • Deny-by-default permissions; nothing mutates until you grant it
The options-first inspector
Watch

See what every agent is doing, live

Steps run in streaming mode. Nocturne parses each assistant delta and tool call and pushes it over a WebSocket, so the canvas and the run panel show the work as it happens — the file being edited, the command being run, the cost ticking up.

  • Per-node live activity + a run timeline with per-step output
  • Pause, resume, cancel, and approve — mid-run, safely
A live streaming run
The hero feature

It waits out the rate limit and resumes

When a step hits your 5-hour or weekly usage limit, the run checkpoints, suspends into a timed wait with the parsed reset time, and auto-resumes at the exact step it stopped. The rate limit doesn't even count as a failed attempt. Add a Wait for limit reset node anywhere to pace long jobs on purpose.

  • Every state transition is an atomic checkpoint + an append-only event log
  • A crash re-runs at most the in-flight step; a slept-through wait fires on wake
  • Runs on the flat-rate plan you already pay for — no per-token metering
A run paused on a limit-reset wait
Control

Human approval gates

Drop an approval node where a human needs to sign off — before a push, before a deploy. The run pauses, shows you the upstream output and your message, and waits. Approve to continue, reject to stop. It survives you closing the tab.

A run paused at a human approval gate
Share

One portable file — import with a review

The exported file is the canvas document is the library entry: a single .nocturne.json everywhere. It carries no absolute paths (the validator rejects them outright), and anything that looks like a secret — API keys, tokens — is flagged before you share. It moves between machines cleanly. Importing a shared workflow opens a review dialog first — you see every prompt, model, and tool grant before it touches your machine.

  • Export it, commit it, post it — anyone can import and run it
  • Security review on import: know exactly what it can do
The import review dialog
Retrace

It writes your workflows for you

The hardest part of automation is noticing what's worth automating. Click Retrace and Nocturne reads your last 24 hours of Claude Code sessions — locally, from ~/.claude/projects — and drafts reusable workflows from what you actually did. Something good happened with a client? It becomes a workflow you can run, tune, and share, so you get it right every time.

  • Reads transcripts on disk — nothing leaves your machine; secrets are redacted first
  • Runs on your subscription, the same CLI the engine uses
  • Every suggestion is compiled and schema-validated — open on canvas or save to library
Retrace drafting workflows from your recent sessions
Drive from Claude

Run it from a conversation — no canvas required

Nocturne ships an MCP server, so you can launch and check on durable runs just by asking — in Claude Desktop, Claude Code, Cursor, or any MCP client. It's a thin adapter over the same daemon, so a run you kick off from a chat keeps going after the chat ends.

  • 12 tools — run, poll, approve, cancel, and Retrace — on your subscription
  • Install in Claude Code (CLI, desktop app, IDE) straight from the repo: /plugin marketplace add …/nocturne
  • Claude Desktop via a .mcpb extension; a nocturne skill teaches Claude when to use it
the canvas Claude Code Claude Desktop any MCP client your phone
you
Run overnight-refactor on this repo and let it go — I'm heading out.
On it. nocturne · run_workflowdone Started run r-8f0c. It'll keep running after you close this — poll get_run anytime.
you
how's it going?
nocturne · get_rundone 3 of 4 steps green — it's holding at the approval gate. Approve it?
For everyone

A steps library of industry standards

Nocturne isn't just for coders. The built-in library ships searchable, ready-to-run steps that encode named industry practices across every kind of work — pick one, tune it, run it. Each step is a complete brief with a definition of done, not a vague one-liner.

  • Coding: DRY sweeps, single-source-of-truth audits, SOLID reviews, OWASP passes
  • Data & Excel: tidy-data cleaning, pivot analyses with the "so what", quality gates
  • Docs, writing, research, marketing, ops: BLUF summaries, assertion-evidence decks, MECE competitive maps, blameless 5-Whys postmortems, real OKRs
The searchable steps library, filtered by category
Mobile · peer-to-peer · anywhere

Take the night shift anywhere

The first Claude Code plugin with a peer-to-peer mobile companion — and it is not tied to your Wi-Fi. Start the daemon with --remote, scan the QR once, and your phone monitors and drives your workflows from any network — home, office, coffee shop, LTE. No account, no port-forwarding, no server of ours.

  • End-to-end encrypted, always. The key travels only inside the QR; the public rendezvous relays that introduce your devices carry ciphertext they can never read
  • Peer-to-peer when networks allow. The two ends upgrade themselves to a direct WebRTC channel and leave the relays behind — the console shows direct P2P or encrypted relay, honestly
  • Nothing to install. The QR opens a static web console served from this repo's own GitHub Pages — the pairing key rides the URL fragment, which your browser never sends to any server. The page is just ink; your daemon is the only thing it talks to
  • Full parity. Live agent activity, approve gates from bed, pause/resume/cancel, launch runs — PWA on any phone, plus a native Android app you can install below. Same-Wi-Fi --lan mode still there, fastest of all
Free · open source · sideload the APK, or grab the daemon for macOS / Windows / Linux from the quick start.
The Pair device modal — the Anywhere tab with its QR invitation
A run held at its approval gate on a phone — connected direct P2P from anywhere, approve or reject in one tap
Reuse

Parameterize once, run forever

Declare run inputs — a branch name, a ticket ID, a target directory — each with a hint and an optional default. The Run dialog asks for them as a form, and prompts reference them anywhere with {{params.name}}. One saved workflow serves every repo and every ticket; conditions can even branch on an input.

  • Inputs are part of the .nocturne.json file — share a workflow and its form travels with it
  • The validator catches unknown or duplicate input names before a run ever starts
  • Launch with inputs from the canvas, your phone, or Claude via MCP (run_workflow takes params)
The run-inputs editor — a name, hint, and default for each value a run will ask for
How it works

A full run, start to finish

From a blank canvas to a finished job that survived the night — every step, with a screenshot.

The empty canvas with the template picker
Under the hood

Built to be trusted overnight

What happens when the process dies, the clock drifts, or the usage limit hits — by design, not by luck.

Subscription auth

Spawns the official claude binary (never extracts tokens), so runs draw from your flat-rate plan — not per-token API billing.

Crash-safe by construction

Atomic checkpoints + an append-only event log. Kill it mid-run and it resumes at the in-flight step.

Durable waits

Waits persist as absolute wake times. A timer slept through fires on the next wake — catch-up, never lost.

Concurrency-safe

A per-run lock and per-step read-modify-write persistence mean pausing or approving never races the executing steps.

Fan-out & join

Branch into parallel subagents and AND-join their outputs. Each step is its own fresh context window.

Retrace

Reads your local session history and drafts workflows from it — compiled and schema-validated before you ever see them.

Drivable from Claude

An MCP server exposes the daemon to Claude Desktop, Claude Code, any MCP client — and your phone. One daemon, five front doors.

Tested end to end

219 tests green — 190 unit and integration, 6 UI end-to-end, plus an independent audit that SIGKILLs the real daemon mid-run and a live Anywhere proof through real public relays.

One portable format

The exported .nocturne.json is the canvas document and the library entry — share it anywhere, its run-input form travels with it.

The stack

Built on boring, excellent things

No exotic dependencies, no lock-in — a small set of tools chosen for reliability at 3am.

TypeScript end to end · zod-validated everything · spawns the official claude binary, never re-implements it · Kotlin/Compose on Android · one portable JSON format everywhere.

Quick start

Running in three commands

# clone, then from the repo root
npm install
npm run build:ui          # build the canvas
npm run serve             # daemon → http://localhost:5151

Open the URL, pick a template, and press Run. For unattended runs that survive closing your terminal, generate a long-lived token with claude setup-token and add it to ~/.nocturne/config.json.

Read the docs on GitHub