For Macs with Apple silicon. By invitation.

A video editor you can talk to.

Cut on the timeline yourself, or describe the change and an agent makes it on that same timeline, on your own Mac.

  1. You ask, in the editor

    Four stock clips, a music bed, a surf bed, and one request.

    bay
    Export
    AgentNew

    Cut these four clips into a calm twenty-second piece to coast-bed.m4a, on the beat, with dissolves between them. Match the exposure and warm them up, give the still shots some slow movement, put a title on the opening, and lay surf under all of it, with the real waves heard on the walking shot. Check a frame before you export.

    Bringing the four clips, the music and the surf in first.

    import_media

    Nothing on the timeline yet

    0:00:00 / 0:00:00
    0:000:040:080:120:16
    V1
    A1

    Fig. 1 The window is drawn; the edit, its frames and its tool calls are real. What actually runs today.

  2. It finds the beat and cuts to it

    detect_beats finds 100 bpm, and each clip is trimmed to eight beats.

    bay
    Export
    AgentNew

    Bringing the four clips, the music and the surf in first.

    import_media

    Music first, so there is a grid to cut to.

    place_asset
    detect_beats

    100 bpm: a beat every 18 frames, the first at frame 27. One clip every eight beats, cutting at 135, 279 and 423 and ending on the beat at 567.

    place_asset
    edit_item
    place_asset
    edit_item
    place_asset
    edit_item
    place_asset
    edit_item
    edit_item
    set_playhead
    0:02:00 / 0:18:27
    0:000:040:080:120:16
    V1
    shore.mp4
    walk.mp4
    rocks.mp4
    topview.mp4
    A1
    coast-bed.m4a
  3. It matches the exposure and the colour

    A grade per clip: the dark opening lifted, the bright aerial brought down.

    bay
    Export
    AgentNew

    100 bpm: a beat every 18 frames, the first at frame 27. One clip every eight beats, cutting at 135, 279 and 423 and ending on the beat at 567.

    place_asset
    edit_item
    place_asset
    edit_item
    place_asset
    edit_item
    place_asset
    edit_item
    edit_item
    set_playhead

    The opening is far darker than the aerial at the end. Lifting the shore’s shadows and mids, bringing the aerial down a little, and warming the cool shots so the four sit together.

    edit_item
    edit_item
    edit_item
    edit_item
    0:02:00 / 0:18:27
    0:000:040:080:120:16
    V1
    shore.mp4
    walk.mp4
    rocks.mp4
    topview.mp4
    A1
    coast-bed.m4a
  4. Movement, a title, and dissolves

    Keyframed pushes and a drift, a .brf title, and a dissolve on every cut.

    bay
    Export
    AgentNew

    The opening is far darker than the aerial at the end. Lifting the shore’s shadows and mids, bringing the aerial down a little, and warming the cool shots so the four sit together.

    edit_item
    edit_item
    edit_item
    edit_item

    Slow movement on the still shots: a push on the shore and on the rocks, and a drift across the aerial. Then the title over the opening.

    edit_item
    edit_item
    edit_item
    write_brf
    set_playhead

    Dissolves on the three cuts, one beat long, centred on the beat.

    add_transition
    add_transition
    add_transition
    set_playhead
    0:04:15 / 0:18:27
    0:000:040:080:120:16
    V1
    shore.mp4
    walk.mp4
    rocks.mp4
    topview.mp4
    A1
    coast-bed.m4a
    V2
    Title
  5. It looks, and fixes what it sees

    preview_frame showed the rocks still blue, so it warmed them and looked again.

    bay
    Export
    AgentNew
    write_brf
    set_playhead

    Dissolves on the three cuts, one beat long, centred on the beat.

    add_transition
    add_transition
    add_transition
    set_playhead

    Checking the title against the brightest part of the sky before going further.

    preview_frame

    The title reads clear of the sky. Now the rocks, mid-push.

    preview_frame

    The rocks still read blue beside the two warm shots before them. Warming them further and taking a little more saturation out of the water.

    edit_item
    set_playhead
    preview_frame

    That sits with the walking shot now.

    0:13:10 / 0:18:27
    0:000:040:080:120:16
    V1
    shore.mp4
    walk.mp4
    rocks.mp4
    topview.mp4
    A1
    coast-bed.m4a
    V2
    Title
  6. Sound, a file, and one Revert

    Surf under everything, real waves on the walk, a mastered MP4, one Revert.

    bay
    Export
    AgentNew

    Surf under the whole piece, low. The walking shot has the only real waves, so its sound goes on its own track, starts half a second before the picture, and the music and the surf both duck under it.

    place_asset
    edit_item
    detach_audio
    edit_item
    edit_item
    edit_item
    set_playhead

    detach_audio warned that the walking shot’s waves now cut hard where the dissolves used to cross-fade them. The clips either side are silent, so a fade does the same job: nine frames out, into the next dissolve.

    edit_item

    Exporting to your Movies folder, mastered to streaming loudness.

    export_timeline
    track_export
    track_export

    { "jobId": "081ef89c…" }

    { "stage": "done", "percent": 100, "outputPath": "…/plate-coast2.mp4", "message": "Mastered to −14.1 LUFS (target −14.0), true peak −1.4 dBTP (ceiling −1.0), measured on the encoded file after 2 passes.", … }

    Done. 18.9 seconds at 1920 × 1080, written to ~/Movies/bay/plate-coast2.mp4.

    14 changesRevert
    • Imported “shore.mp4”
    • Imported “walk.mp4”
    • Imported “rocks.mp4”
    • Imported “topview.mp4”

    Show all 14

    0:06:20 / 0:18:27
    0:000:040:080:120:16
    V1
    shore.mp4
    walk.mp4
    rocks.mp4
    topview.mp4
    A1
    coast-bed.m4a
    V2
    Title
    A2
    surf.m4a
    A3
    walk.mp4

What went in, and what came out. Drag the line across the frame.

Fig. 2 Left of the line, the four clips as they came from Pexels, cut to the same frames. Right of it, the edit in Fig. 1.

Footage from Pexels, used under the Pexels licence: Mikhail Nilov, Karma Rayshar, Elia Clerici and Eduardo Cano Photo Co. The music and the surf were made for this page.

What the edit above doesn’t show. Four things about how it is built.

⌘Z

One timeline, two ways in

The timeline you drag clips around on is the one an agent edits. Its changes go through the same code as yours and land on the same undo stack, one step per edit, so there is never a second copy of the project to drift apart from what you see.

Revert

Every change comes with a diff

Inside the editor, the agent makes the edit and shows you what it changed, in plain words, with a Revert button that puts the project back in one click. Rather see a plan first? Turn on Ask before editing: then nothing is written until you approve one option, exactly that runs, once, and anything else is refused with the reason.

preview_frame

It looks at its own work

Clip positions do not say whether a caption covers a face. The agent renders the frame it changed and looks at it before telling you it is done, and says so when a picture is incomplete rather than judging an edit from it.

On disk

Your work stays on the Mac

Projects, media and renders stay on your disk. The editor loads no remote fonts, images or scripts and sends no telemetry or analytics. It does go online for a few things you can name: the agent you chose to start talks to its model, a speech model downloads when you ask for one, and the app checks with Google’s sign-in service that your access still stands. Offline it keeps working, and asks you to sign in again only after 14 days without a successful check.

What it will not do

There is no server that holds your project. Access is by invitation, and you sign in once with Google; that tells the app who you are and nothing about what you edit. There is no upload step, no render farm, no library of your footage sitting on someone else’s disk waiting to be trained on. The agent endpoint listens on your own machine and nowhere else, and when an agent renders a file it writes it to your disk the same way you would. This is not a tier we are keeping back. There is no code in Bay that could do otherwise.

Where it actually is

Bay is in development: real, running, and not yet ready for a stranger. Long clips still play back as a low-quality proxy, the media panel lists demo tiles instead of your imports, and most of the timeline craft is unwritten. All of it is listed rather than left for you to find.

What actually runs

The engine is the product, and the timeline is one way of reaching it.

Download for Mac. You need access to sign in.

A notarized disk image for Macs with Apple silicon. Bay is by invitation: it opens to a sign-in, and works once your Google account has access. Request access, or ask someone who already uses it to refer you from inside the app.