Open-source integration preview

Control a Mac screen recorder from Raycast

A useful launcher integration should be more than a deep link. Cadre's Raycast developer preview checks the live recording state, authenticates to a rotating local endpoint and sends each command through the same visible recording path as the app.

In short: The source is public and MIT licensed, and its authenticated client has completed a real start, pause, resume and stop sequence. It is not yet in the Raycast Store: a verified Raycast author account, Raycast runtime test and genuine command screenshots still remain.

Five small commands, one real recording state machine

The preview exposes five no-view Raycast commands:

  • Record Main Display enumerates live sources, checks Screen Recording and Accessibility permission, resolves the main display and starts Cadre's normal three-second countdown.
  • Pause Recording only runs when Cadre reports recording.
  • Resume Recording only runs when Cadre reports paused.
  • Stop Recording finalises a running or paused take and opens the editable project.
  • Show Recording Status reports the live state and recorded duration without changing the take.

These are narrow controls, not a second editor. After the take, Cadre's timeline and Agent API remain the surfaces for cuts, captions, zooms, style and export.

Visible by design: a Raycast start still shows Cadre's countdown, display cue and floating controls. Recording and editing remain free to try; export still uses Cadre's normal licence gate.

The extension authenticates instead of trusting localhost

On every launch, Cadre binds its Agent API to 127.0.0.1 on an ephemeral port and creates a fresh 256-bit bearer token. The port, token, application version, process id and process start time are written to ~/Library/Application Support/Cadre/agent-api.json with owner-only permissions.

The extension refuses a symlink, a non-regular file, a record owned by another user, group/world-readable permissions, a malformed port or token, a dead process and a process id reused by a different launch. It always connects to 127.0.0.1; no hostname is read from disk. The credential is held only for the command and is not logged or copied into Raycast preferences.

After those checks, the client performs the standard MCP initialization handshake, retains the boot-scoped session id and invokes one documented tool. Responses are size-bounded and may be JSON or server-sent events. Cadre independently validates the loopback peer, Host, optional browser Origin, route and bearer token.

This narrows accidental and browser-origin access; it is not a sandbox against every process already running as the same macOS user. The complete threat model and residual risks are documented in Local MCP security: why loopback is not enough.

Run the developer preview locally

Install current Cadre and Raycast, then clone the public source:

git clone https://github.com/ArthurBrioche/cadre-raycast-extension.git
cd cadre-raycast-extension
npm install
npm run check
npm test
npm run dev

Raycast's official extension workflow uses npm run dev to load a local development extension. Keep Cadre open so its private connection record and loopback service exist.

The source declares Cadre 1.0.0-rc.29 or later for users. Its compatibility test also ran against rc.24 so the client would not accidentally rely on an unpublished protocol change.

The authenticated path completed a real recording sequence

On 26 August 2026 the client completed a read-only handshake without exposing the bearer token, then the same Agent API sequence used by the commands recorded a real main display:

  1. Cadre enumerated three displays and resolved the awake main display.
  2. The visible start reached recording at 60 fps with system audio, cursor tracking and no microphone.
  3. Pause returned at 15,578ms; a later status remained at 15,578ms.
  4. Resume returned to recording; stop produced an editable 22,394ms project at 1800×1169.
  5. The previously open synthetic benchmark project was restored with its 10,005ms source, 9,500ms output, one cut, one zoom and four captions unchanged.

Five automated tests cover connection validation, dead and reused process ids, JSON/SSE parsing, session reuse, loopback-only addressing and refusal of a credential file readable by other users. TypeScript, Raycast ESLint rules, Prettier and independent command bundling also pass. The dated validation record lists the method and non-proofs.

Developer preview does not mean Raycast Store availability

The extension is not currently published in the Raycast Store. Raycast is not installed on the validation Mac, and the intended arthurbrioche publisher handle currently returns 404 from Raycast's author validator. The no-view command UI, HUD/toast rendering and Raycast-managed Store build have therefore not been exercised.

Store publication requires a real Raycast publisher account, a run of every command inside Raycast, genuine screenshots and Raycast's public review and CI. The repository keeps these steps in a submission checklist and explicitly prohibits borrowing an unrelated valid author merely to pass validation.

The live test recording remains private. It was stopped and saved rather than cancelled, was not exported, and is not presented as a product demo or customer evidence.

Inspect, test or contribute the integration

The complete extension is available at github.com/ArthurBrioche/cadre-raycast-extension under the MIT licence. The Cadre application has a separate licence.

For a fixed source reference, use the prerelease v0.1.0-preview.1. Software Heritage independently completed a full Git archive visit and assigned snapshot swh:1:snp:50d4a9f2560cb97dd6137fce934fe7dcda04960a. The archive establishes durable source availability, not product approval or a security audit.

Useful contributions include testing on a real Raycast installation, improving clear error messages for macOS permissions, and reviewing the connection bootstrap for same-user and stale-process risks. Do not submit a mock Store screenshot, publish under someone else's Raycast identity or claim Store availability before the listing exists.

Raycast documents that public extensions are open source, reviewed and checked by CI before Store publication in its extension security overview. That external review is still outstanding and remains the authoritative acceptance gate.

Turn the recording into the finished story

Cadre records your Mac and gives you an editable cinematic timeline—automatic zooms, local captions, cuts, styling and an AI agent that can follow your direction.

Record, edit and preview free · Cadre Pro required to export · Apple Silicon · macOS 13+

Frequently asked questions

Is the Cadre Raycast extension in the Raycast Store?

No. The public source is a developer preview. Store publication still needs a verified Raycast author account, an actual Raycast runtime test, genuine screenshots and Raycast review.

Does the extension upload recordings or API credentials?

No. It reads Cadre's owner-only connection record, connects to 127.0.0.1 and holds the rotating bearer token only for the current command. It does not upload recordings, project paths or credentials.

Can Raycast start a recording silently?

The extension calls Cadre's normal recording path. Cadre shows the countdown, display cue and floating recording controls. The extension does not implement a separate silent capture path.

Does stopping from Raycast export the video?

No. Stop finalises the take and opens an editable Cadre project. Export is a separate Cadre action and retains the normal Pro licence gate.

Why not use only a cadre:// URL?

A URL can launch an application but does not prove recording state, source availability or possession of Cadre's rotating local credential. The extension performs an authenticated MCP handshake and checks the state before each mutation.