DB

dongnguyenvie/bashcut

Developer tools
64 stars 21 forks 品質 64 トレンド 51MIT

Native macOS video editor that coding agents can drive: everything the UI does, Claude Code and Codex can do through the bashcut CLI or MCP server. Layered timeline, captions, voiceover, plugins.

概要

A native macOS video editor that coding agents can drive. Everything the UI does, Claude Code and Codex can do through the bashcut CLI or MCP. Download · TestFlight beta · Docs · Automation · Plugins · Agent kit · Issues BashCut is a native macOS video editor built on AVFoundation, with a Claude Code / Codex terminal docked beside the timeline. Preview and export share one composition engine, so what you see is what you export. Projects are plain JSON next to your footage: agents and scripts read and edit them through the same atomic, undoable edit operations the UI uses. BashCut is under active development: the M0 foundation is accepted on real footage and most of the editor and agent features (M1–M3, M5) are in place. See implementation status for what is verified and what is left. No extra AI bill: BashCut works with the subscriptions and apps you already have.

README

BashCut

A native macOS video editor that coding agents can drive. Everything the UI does, Claude Code and Codex can do through the bashcut CLI or MCP.

Download · TestFlight beta · Docs · Automation · Plugins · Agent kit · Issues

Tiếng Việt


About

BashCut is a native macOS video editor built on AVFoundation, with a Claude Code / Codex terminal docked beside the timeline. Preview and export share one composition engine, so what you see is what you export. Projects are plain JSON next to your footage: agents and scripts read and edit them through the same atomic, undoable edit operations the UI uses.

BashCut is under active development: the M0 foundation is accepted on real footage and most of the editor and agent features (M1–M3, M5) are in place. See implementation status for what is verified and what is left.

Use the AI you already pay for

No extra AI bill: BashCut works with the subscriptions and apps you already have.

You have How BashCut uses it
Claude subscription (Pro / Max) The Claude tab in the agent dock runs the real Claude Code CLI with your login. BashCut never passes ANTHROPIC_API_KEY, so your plan is used, not API credits
ChatGPT subscription (Plus / Pro) The Codex tab runs the real Codex CLI with your ChatGPT login
Claude Desktop / Codex app Point them at BashCut: bashcut agent setup claude or bashcut agent setup codex installs the editing skills and the bashcut MCP server, so they edit the open project from outside the app
Any other model (Gemini, GPT, Grok, Mistral, Groq, OpenRouter, a local or OpenAI-compatible server) Install the AI Editor plugin: a chat agent inside BashCut with your own API key, with thinking levels (off / low / medium / high) for reasoning models

Whichever you pick, the agent edits through the same undoable commands as the UI: every change lands in History, shows in Show Changes and can be undone. See Automation.

What’s inside

Editing

  • Layered timeline: as many video, overlay, text, sticker, adjustment, voiceover, music and SFX layers as you need, with linked sound, sections, snapping, multi-select, gaps, split, trim, move, lift and ripple delete
  • Viewer and source viewer: In/Out, Insert/Overwrite, viewer zoom, safe area and before/after compare
  • Speed: constant speed, reverse, freeze frames and CapCut-style speed ramps (montage, hero, bullet, jump-cut, flash in/out, or your own curve)
  • Motion: keyframes for position, scale, rotation, opacity and volume, shown on the timeline, plus animation presets (zoom, pan, Ken Burns, pop-in, slide-up, zoom-punch); crop and rounded corners
  • Transitions: 39 kinds in groups (fade, whip, wipe, shape, crash, roll, seamless, glitch…) and saved transition presets, also as the In and Out of captions, titles, stickers and overlays
  • Still images and stickers (emoji or image) on the timeline
  • Change the canvas of an open project (9:16, 16:9, 1:1…) without rebuilding it

Captions and text

  • Transcribe speech into captions with a local Whisper plugin, import and export SubRip
  • Word-by-word captions: highlight, karaoke and reveal styles
  • Text presets for hook titles, place labels, keyword stickers and chapter cards, keeping their style when edited; Vietnamese and English throughout

Color

  • LUT import (.cube), exposure, contrast and saturation
  • Adjustment layers and filter stacks that grade everything below them
  • Looks and style kits: save a grade (with its LUT) and a caption style, apply them to the next video in one step

Sound

  • Volume, fades, volume keyframes, loudness normalization at export
  • Music bed at one fixed level under the voice’s measured loudness; ducking under speech only when asked, held through short gaps so the music does not pump between lines
  • Voiceover recording, and text-to-speech takes through a voice plugin (VieNeu TTS for Vietnamese, cloned voices)
  • Beat grid from the music, for cutting on the beat
  • Measure loudness, true peak and speech-band energy, and sync a camera with a screen recording by their sound, without ffmpeg

Library

  • One library for music and SFX, text styles, stickers, effect recipes, transition presets and looks: built-in items, your own (this project or every project), and packs that plugins ship
  • Search, tags, packs, import and export of packs, usage stats, and search or generate new items through plugins

Review and export

  • Review checks: gaps in the picture, repeated framing between cuts, long caption lines, speech-recognition loops, voiceover too close to real speech; full history; autosave with crash recovery; reload when files change on disk, with conflict handling
  • Preview proxies for heavy footage; export presets for TikTok, YouTube 1080p and 4K, a quick draft and ProRes, queued in the background, with burned-in captions and an optional .srt; OTIO export. An agent’s final export waits for a passing draft audit and refuses graphics still rendered as drafts

AI agents

  • Agent dock: real Claude Code, Codex and Shell terminals beside the timeline, plus chat agents and terminal agents from plugins (AI Editor with your own API key, Antigravity…). A two-step setup card sets up the agent skills and the recommended editing plugins
  • New brief (⌘K, or the brief bar under the terminal): 25 request templates with chips and fields, recent and saved briefs, and a Footage row for files and folders the agent should import. To picks the agent (the last used by default, or start a new one); the brief waits until the agent is ready
  • Folder trust in BashCut: BashCut asks before Claude Code or Codex works in a new folder, and accepts Claude Code’s Bypass Permissions mode in the same sheet, so the CLIs’ own menus do not show
  • Send to Agent: select clips and send them with your request; the scope guard keeps the agent’s edits to those clips, or asks you first
  • Show Changes: see what an agent changed, jump to it, and undo it as one step
  • Knowledge: agents remember lessons, your preferences and project facts between sessions; review them in the Knowledge window’s inbox, edit project notes and skills, and revert any change from its history
  • The agent kit: editing skills (footage survey, beat cuts, sound mix, captions, colour, effects, voiceover, style study, self-learning) loaded into every agent tab
  • Agent permissions: choose what agents may do without asking (edits, exports, plugin actions), or allow everything

Skills

The agent kit’s skills show as bc: in Claude Code and Codex:

  • bc:edit-workflow: the whole edit from intake to export, with gates, a checklist and audits; read it first
  • bc:footage-survey: inventory, contact sheets and shot descriptions before cutting
  • bc:rough-cut: selects by quote, retakes, padding and long → short
  • bc:beat-cut: cuts on the beat or on sentences, rhythm checked by measurement, punch-ins
  • bc:audio-mix: the mix measured by role, levels, ducking, music, SFX and loudness per output
  • bc:voiceover: narration sized to its windows, text-to-speech takes checked and re-taken in place, dubbing
  • bc:captions-text: captions, word timings, titles, cards and fonts that draw the language
  • bc:color-grade: measured grading, looks and LUTs
  • bc:effects: which effect fits which moment, with native transitions, speed and reframes
  • bc:visual-plan: what the viewer sees on every line of a talking video
  • bc:motion-graphics: designed graphics over footage (cards, counters, kinetic type)
  • bc:stock-images: stock photos, video and icons placed as illustration
  • bc:style-study: a reference style measured and turned into a memo, a look and text presets
  • bc:library: making, harvesting and pruning library items
  • bc:review: the critic loop before export
  • bc:self-learn: lessons, preferences and facts in BashCut’s knowledge
  • bc:setup: installs the recommended plugins (only when you type /bc:setup)

Topic recipes (bashcut.vlog:plan, travel, food, explainer, hook script, publish…) ship with the Vlog plugin in bashcut-plugins and load as plugin skills.

Automation

  • The bashcut CLI and MCP server cover every UI action, dialog, shortcut and view: 240 commands, with dry runs, revision checks and one undoable edit per call (command reference)
  • ui frame renders any frame to a PNG, so an agent can look at its own work
  • Command palette (⇧⌘P), a full Mac menu bar and searchable Settings

Plugins

  • Out-of-process plugins in any language: capabilities (transcription, voice, beats, loudness, sync, library search and generate), actions in menus and context menus, hooks on editor events, options, chat and terminal agents, library packs and agent skills that teach agents how to use them
  • Plugin UI: a plugin can have its own panel in the left rail, tabs in the agent dock, sheets and windows that keep the timeline editable, with views BashCut draws natively from the components the plugin sends (lists, forms, buttons, images, audio previews); plugins can build on each other (generate speech through your voice plugin, require another plugin)
  • A signed plugin registry with Browse, one-click install, daily update checks, Trust per plugin and dependency setup that never needs Terminal; plugins from a link or a folder too. See Writing plugins

Install

Requires macOS 14 or later.

Homebrew

brew install --cask dongnguyenvie/tap/bashcut

This installs BashCut.app into /Applications and links the bashcut CLI and bashcut-mcp server into Homebrew’s bin, so agents in any terminal can drive the app. Update from BashCut › Check for Updates… › Update Now (Homebrew downloads the release, then BashCut quits and opens the new version) or brew upgrade --cask bashcut; remove with brew uninstall --cask bashcut (add --zap to also delete settings and caches).

Download a release

Download BashCut-.dmg (or .zip) from the latest release, open it and drag BashCut to Applications. Builds are signed with Developer ID and notarized by Apple; check a download against the release’s SHA256SUMS with shasum -a 256 -c --ignore-missing SHA256SUMS. To use the CLI from a terminal, link it yourself:

sudo ln -s /Applications/BashCut.app/Contents/MacOS/bashcut /usr/local/bin/bashcut
sudo ln -s /Applications/BashCut.app/Contents/MacOS/bashcut-mcp /usr/local/bin/bashcut-mcp

TestFlight

Join the public beta on TestFlight (needs the TestFlight app). The TestFlight build is the sandboxed Mac App Store build: it runs only the plugins bundled with the app, and its bundled CLI cannot run from a regular terminal.

Or build BashCut from source, below.

How to Build

Requires macOS 14+, Xcode with Swift 6, and network access for the first package resolution.

scripts/run.sh

This builds with SwiftPM, packages build/BashCut.app, signs it with the first Apple Development identity in your keychain (or BASHCUT_SIGN_IDENTITY) so macOS keeps folder-access grants across rebuilds, and opens it. The app executable is BashCutApp and the bundled CLI is bashcut, avoiding a name collision on case-insensitive disks.

To try a change against every timeline case, generate the sample project shown above (needs ffmpeg):

scripts/sample-project.py

For Xcode, install XcodeGen >= 2.46, then run scripts/generate-project.sh and open BashCut.xcodeproj (generated from project.yml). Xcode builds the string catalog; the SwiftPM launcher copies equivalent .strings resources. The UI follows the system language.

Verify

scripts/verify.sh build
scripts/verify.sh test
scripts/verify.sh perf       # 20 synthetic clips, ~30 seconds, 1080×1920
scripts/verify.sh lint       # requires SwiftLint
scripts/verify.sh xcode test # regenerates and tests the Xcode project (requires XcodeGen)

Pure model tests also run on their own with cd Packages/BashCutCore && swift test. Tests never use the real video workspace or agent CLIs, and package downloads happen at dependency resolution, not in tests. scripts/bench-agents.py is a manual A/B bench that runs one brief with Claude Code and Codex, launched as the app launches them, and compares tokens, tool calls, time and the final review; results are in implementation status.

Two other repositories are part of BashCut. Contributions are welcome in each:

Repository What it holds Contribute there
bashcut-plugins The plugin registry (registry.json) and its plugins: Whisper Captions, VieNeu TTS, Silence Markers, AI Editor and Antigravity New plugins and fixes to existing ones. See Writing plugins
bashcut-agent-kit Editing skills for Claude Code and Codex (footage survey, beat cuts, audio mix, captions, colour, effects, voiceover…). BashCut ships them and loads them in its agent tabs Editing know-how that agents should follow. See its README › Writing skills

Changes to the editor itself, its commands and the plugin API belong in this repository.

Documentation

License

MIT. See LICENSE.

View this README on GitHub

インストール

This server does not publish a one-line install command.

Open the repository installation guide