Open source shorts editor that runs locally

AI agents draft shorts. You finish them.

Agentic Shorts editor for Claude Code and Codex

Give Claude Code or Codex a topic in one sentence, and it drafts the script, voice, captions, and render with a template drawn from shorts that took off. You fix the draft in the editor and upload to YouTube only the videos you have checked yourself.

One-sentence request Example

Claude CodeCodex

Use the explainer template to make a short on "A tiny paper garden." Channel: Small Garden Lab.

The fishcut editor. A list of project assets on the left, a vertical video preview in the center, a text properties panel on the right, and a timeline with source and text layers at the bottom.
A frame from the finished short: the inside of a wooden cabin under the title 'Open source that turns one photo into a 3D space'.

Editor. Assets on the left, preview in the center, properties on the right, layer timeline at the bottom. A draft becomes the master copy only when a person presses Save.

Finished short. One photo becomes a 3D space you can walk through. Made with the dev-demo template and uploaded to the NomaDamas channel.

From one sentence to upload

The agent makes the draft, and you fix and check it. The 8 steps fall into three groups.

  1. Part of the channel settings screen, with fields for the channel name 'Small Garden Lab (example)', content language, channel purpose, and tone and wording.
    Channel settings. Saved guidelines become the defaults for this channel's new videos. They do not change the voice of existing videos.

    Group 1. Hand off

    Set channel guidelines

    Save each channel's purpose, audience, tone, voice, scheduled publish time, and upload defaults. The agent reads these guidelines when it writes a script.

  2. Part of the shared templates screen, with template cards for dev-demo, explainer, tips, and twist-tale, and a 'New video from this template' button.
    Shared templates. Press "이 템플릿으로 새 영상" (New video from this template), or tell the agent the template name.

    Group 1. Hand off

    Choose a template

    A template pairs a script style (tone, order, voice) with a frame (layout, render engine), made by analyzing shorts that took off. Styles include tip lists, product explainers, knowledge narration, stories from posts, and hands-on demos.

  3. Example Use the explainer template to make a short on "A tiny paper garden." Channel: Small Garden Lab.

    Read channel guidelines
    Small Garden Lab (example)
    Template
    explainer, HyperFrames frame
    Script
    9 lines
    Script approval request
    A person approves it in the editor
    Voice
    Free default voice M1, 36.5 seconds
    Caption timing
    Aligned word by word
    Render
    1080x1920 MP4
    Automatic checks
    Blank frames, short cuts, personal info in text
    Open in the editor
    http://127.0.0.1:4318/
    An example of the agent's progress. This is not a real screen; the conversation is shortened.

    Group 1. Hand off

    Ask in one sentence

    Tell Claude Code or Codex the topic and the template in one sentence.

  4. Part of the Script / Voice tab, with the on-screen text field for sentence 1, 'Plant a small seed.', and a 'Read the on-screen text as is' checkbox.
    Script / Voice tab. Edit the on-screen text and the sentence to be read, then check the generation plan first with "실행하지 않고 계획 보기" (View the plan without running).

    Group 2. Draft (agent)

    Script and voice

    The agent writes the script with the template's few-shot source scripts as a reference, then makes voice for each sentence. You can choose a free local voice, a clone of your own voice, or a paid voice such as Typecast or ElevenLabs. Once the script is written, a person approves it before production, and voices that cost money are generated only after a separate approval.

  5. Part of the motion video editor. Below the length 0:36.50, scene, line, word, cue, and sound effect tracks sit on one timeline.
    Motion video editor. Scene, line, word, cue, and sound effect tracks share one timeline. Drag a cue, and its sound effect moves with it.

    Group 2. Draft (agent)

    Caption timing and sound effects

    The generated voice is transcribed back to text so that every word gets a timestamp. Scenes, captions, highlights, and sound effects move in time with those timestamps.

  6. Part of the export screen. A card comparing the saved version and the draft shows frame size, length, and frames, with a 'Make a before-and-after video' button.
    Export. Watch the saved version and the current draft in a before-and-after video, and make the final MP4 from the saved version.

    Group 2. Draft (agent)

    Render and automatic checks

    The short is rendered as a 9:16 MP4, and the result is inspected. The checks confirm size, codec, and length. They also find blank frames and cuts that flash by in under a second, and on-screen text such as email addresses or account IDs, and report when each one appears.

  7. Part of the card-style video layout editor. The preview card has the white title 'A small forest by the library window', the yellow highlight line 'One seed called the neighbors', and a picture layer below.
    In card-style videos, you drag the title, highlight line, and picture layers into place for each scene.

    Group 3. Refine and upload (human)

    Fix it in the editor

    Change text, position, and size on the canvas, and move and trim clips on the layer timeline. Your edits go straight into the draft on the local editor server, and you can undo them. While the editor is open, Claude Code and Codex also read and edit the same draft over MCP.

  8. Part of the YouTube upload window, with fields for video title, description, tags, visibility, category, made for kids, and synthetic content.
    YouTube upload. Check the channel, the final video, and the upload settings on one screen. If you leave the scheduled time empty, the video goes up with the visibility you chose.

    Group 3. Refine and upload (human)

    Check and upload to YouTube

    Connect the channel with your Google account, then review the title, description, tags, visibility (public, unlisted, private), made for kids, synthetic content, and scheduled time. A person presses the final upload button. The agent only prepares things up to the upload settings review.

AI drafts, people decide

  1. Script approval

    Production work such as voice and render starts after a person approves the current script.

  2. Cost approval

    Calls that cost money, such as paid voices, get a separate approval from a person.

  3. Save

    The agent only edits and compares drafts. A person presses Save to keep the master copy.

  4. Upload

    A person presses the final button of a YouTube upload.

Editor screens behind the shorts

All screens were captured from a demo install with the public synthetic examples open. The example channel is "작은 정원 연구소 (예시)", which means Small Garden Lab (example). "Shorts Studio" in the app header is from before the app was renamed.

The channel list. The card for the example channel 'Small Garden Lab (example)' shows the channel purpose and 4 videos, with an add channel button at the top right.
Channel list. Manage videos and production guidelines for each channel.
The all videos screen. Each of the four video cards, canonical, hf, post, and short, has a channel selector and a continue editing button.
All videos. Assign a channel to each video, and open a video from the work folder to keep editing.
The editor in light mode. The same layout of assets, preview, properties, and layer timeline as in dark mode, with a dark mode button at the right of the header.
Editor in light mode. Switch between dark and light with the button at the right of the header.
The channel management window. Below the scheduled publishing defaults and upload settings, the Google connection section has 'Connect with Google' and 'Refresh connection status' buttons and a note to add an OAuth client first.
Google connection in channel management. Add the Google Cloud OAuth client you created, then press "Google로 연결" (Connect with Google).

YouTube Data and privacy

YouTube connection and data

fishcut uses YouTube API Services. YouTube upload is optional, and you can use all production and editing features without connecting.

fishcut is a tool that can upload videos to YouTube. It is not affiliated with or endorsed by YouTube or Google.

Permissions fishcut requests
PermissionUsed for
youtube.uploadUsed only to upload the final video a person has checked to the connected channel, with the title, description, and visibility that person set.
youtube.readonlyUsed to show the name and ID of the channel you will upload to, and to check the visibility status and scheduled time again after an upload.
  • Stored only on this computer

    Google tokens, the connected channel's name and ID, and upload history are stored only in the state folder on this computer. They are not sent to a NomaDamas server. NomaDamas does not receive this data.

  • Sent only to Google

    Upload and channel check requests go directly from this computer to Google and YouTube. There is no server in between.

  • No upload until a person presses

    A person reviews visibility, made for kids, synthetic content, and scheduled time, then presses the final button.

  • Disconnect anytime

    When you disconnect in the editor, fishcut asks Google to revoke the token and deletes it from this computer. You can also revoke access in Google Account permissions.

When fishcut uses information it receives from Google APIs, or transfers that information to another app, it follows the Google API Services User Data Policy, including the Limited Use requirements.

fishcut's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.

Coming soon

fishcut is getting ready for its public release. When the repository goes public, install steps will appear here. We will announce the release on GitHub and our YouTube channel.

View on GitHub

To use YouTube upload

  1. Create your own project in Google Cloud and turn on YouTube Data API v3.
  2. Create an OAuth client for a desktop app and download its JSON file.
  3. Ask your agent to add that file, or run fishcut youtube import <file>⁠.
  4. In the editor's channel management, press "Google로 연결" (Connect with Google).

Frequently asked questions

Where do my videos and tokens go?

They stay on this computer. When you upload, the video file and settings go directly from this computer to YouTube. NomaDamas does not receive any data.

Will the agent upload on its own?

No. The agent prepares everything up to the upload settings review, and a person presses the final upload button.

Is it free?

fishcut will be released as MIT-licensed open source. You can make a short from start to finish with free local voices, and paid voice APIs are used only when you add your own key and approve.

Which agents does it work with?

Claude Code and Codex. While the editor is open, they read and edit the same draft over MCP.

What computers does it run on?

It is developed and tested on macOS with Apple Silicon. You can also run it with Docker.