Skip to content

Repository files navigation

OpenTake

OpenTake

Agent-Native Video Production Engine
エージェントネイティブな動画制作エンジン
Agent 原生的视频制作引擎

PlatformsLicenseStarsDiscord ENDiscord CNCI

中文 | 日本語

Source version: 1.0.0-beta.6. Published versions and downloads are maintained in GitHub Releases. See the execution plan, version notes and documentation/source review.

The source includes multiple media preview tabs, folder/flat/grouped media views, temporal compositor routing, transparent Motion publishing and ProRes 4444 export. The Text panel adds text clips; the Effect panel applies presets to one selected visual clip while preserving existing effects. Sticker supports project image/Lottie assets, local import, selection/preview and placement on the timeline. Focused tests and macOS package GUI checks are recorded in the validation report; provider and platform coverage remains tied to the corresponding evidence.

Semantic search uses fixed-revision assets (about 1.5 GB) with checksum validation and offline installation. Real image/text embedding and ranking passed on macOS and Windows; Windows uses fixed input facts with the locked Tract engine. The macOS package also passed actual model download, indexing and Chinese visual queries. A model installation is required before use; see the semantic model audit.

Table of Contents


📖 About

OpenTake is a cross-platform video production engine built on Rust + Tauri 2, targeting macOS / Windows / Linux, designed to deeply integrate AI Agents into professional video editing workflows.

🌟 Core Innovation: Instead of making the Agent parse lengthy skill documents, OpenTake actively pushes editing guidance (Context Signal) to the Agent — telling it exactly what each track does, how each clip should be cut, and what rules apply at every stage.

Positioning

OpenTake is not a replacement for CapCut / DaVinci Resolve / Final Cut Pro — it's a video engine designed for AI Agent workflows. Traditional editors are built for humans; OpenTake is built for humans and Agents, with its timeline, preview, and keyframe systems natively controllable via the MCP protocol.


🎯 Why OpenTake

Pain PointTraditional ApproachOpenTake Approach
Agent doesn't know how to editAgent reads skill docs on its ownSoftware pushes Context Signal — "this track is A-roll, cut with talking-head rhythm"
Cross-platform needs 3 codebasesmacOS: Swift/AVFoundation, Windows: C++/DirectShowSingle Rust codebase, FFmpeg + wgpu, platform-specific validation
I want to use AI directlyLocked into vendor cloud servicesOfficial Codex / ChatGPT sign-in for Agent, plus BYOK for fal.ai / Replicate / OpenAI
Agent can chat but can't actCLI agent reads text outputCapability-filtered MCP Server — Agent directly runs add_clips / split_clip / set_keyframes
Rewriting prompts for every video type"You are editing a product review..." every timeWorkflow Plugin System: review/tutorial/gaming/wedding, each pre-packaged with methodology
Steep learning curve for new toolsComplex UI, long onboardingAgent operates for you — just say "edit this interview into a 3-minute highlight"

⚡ Competitive Edge

OpenTake combines a Rust-owned timeline, command-based undo, authenticated MCP, Context Signal and local/BYOK media workflows. The capability ledger tracks implementation and evidence; it does not imply feature parity with other editors.


✨ Features

🧠 Agent Context Signal System

The software pushes editing guidance to the Agent, instead of making the Agent parse documentation.

Every MCP tool response carries a context_signal:

  • Auto Genre Detection: talking-head / vlog / montage / interview / short-drama / long-form
  • Track Role Annotation: A-roll / B-roll / voiceover / BGM / SFX / text
  • Real-time Rule Checking: breathing-point rules, B-roll five cautions, clock theory, peak-detection pacing

Knowledge source: ClipSkills — 12-volume professional editing knowledge base (MIT-licensed).

📖 Context Signal Design

🔌 Agent Tool Surface

OpenTake exposes compatible Agent tools, filtered at runtime so unavailable media, generation, or provider capabilities fail closed instead of being advertised:

GroupKey Tools
Read / Introspectget_timeline, get_media, inspect_media, search_media
Timeline Editadd_clips, split_clip, set_clip_properties, set_keyframes, ripple_delete_ranges
Generate / Importgenerate_video, generate_image, generate_audio, import_media
Librarycreate_folder, move_to_folder, rename_media
Resourcesmodels/video, models/image

Official Codex / ChatGPT turns use an authenticated per-turn loopback endpoint bound to the current project. Beta 5 also introduced explicit pairing for external MCP clients, with credentials, revocation and persistent client configuration. The old unauthenticated endpoint remains disabled; see MCP behavior.

Built-in Agent chat panel shares tool definitions and system prompt with MCP. It can use direct OpenAI/Anthropic BYOK or the user-installed official Codex CLI's ChatGPT sign-in; OpenTake never reads or stores the Codex credential.

🎬 Cross-Platform Media Engine

CapabilityTechnology
CodecFFmpeg (ffmpeg-next) — battle-tested Rust bindings
Compositorwgpu custom compositor — multi-track layering + per-frame property sampling + affine/crop/blend
Audio Playbackcpal
Transcriptionwhisper-rs (requires installed model)
Semantic SearchSigLIP2; fixed-revision model installation and real macOS Rust inference validated

Playback routing is capability-based. Ordinary media uses WebKit playback; timelines that require supported compositing use the Rust compositor; and timelines with unsupported authored combinations fail closed instead of being shown with missing effects. Rust frames are published through a session-scoped exact /frame endpoint guarded by PublicationGate, then handed off through a two-slot retained-frame buffer. Media poster, preview, waveform, and filmstrip prewarm/cache work is project- and source-identity scoped. See the dated playback/cache QA record for the reviewed 2026-07-10/11 evidence and its artifact boundaries.

🌐 BYOK AI Generation

Bring Your Own Key: Direct connection to fal.ai / Replicate / OpenAI. Zero backend, zero operational cost. Optional self-hosted proxy.

📋 Workflow Plugin System

Community-authored JSON + Markdown plugins per video genre — review / tutorial / gaming / wedding / talking-head — each encapsulating professional editing methodology. Agent activates, methodology loads.

📖 Workflow Plugin System Design


🖥️ Platforms

PlatformEvidence boundary
macOSPrimary development platform; dated native/package evidence is linked from release notes. Intel and Apple Silicon artifacts require their own validation.
WindowsBuild/installer target; candidate CI and native installer/UI evidence are required before claiming a verified distribution.
LinuxBuild target; no new Linux distribution or native GUI verification is claimed here.
Headless coreRust library APIs and tests can run without the desktop UI; media/GPU/browser capabilities still have runtime requirements.

🦀 Rust Workspace

crates/
├── opentake-process-tree # Cross-platform child-process lifecycle
├── opentake-domain # Timeline / Track / Clip / Keyframe — pure value semantics
├── opentake-ops # OverwriteEngine / RippleEngine / SnapEngine — edit algorithm layer
├── opentake-project # Project persistence / bundle / archive / export
├── opentake-media # FFmpeg codec / thumbnails / waveform / transcription / semantic search
├── opentake-render # wgpu compositor + text rasterizer
├── opentake-motion # Motion rendering, RGBA cache and transparent publishing
├── opentake-agent # MCP Server + Agent chat + context signal system
├── opentake-gen # Generative AI clients (fal.ai / Replicate / OpenAI)
├── opentake-core # Session management / DI / event bus
└── src-tauri # Tauri 2 desktop shell

Motion Canvas plugin (implemented constrained runner):

plugins/
└── motion-canvas-studio # Motion Canvas (MIT) fork/plugin for AI animation video output
> cargo build --workspace # Build all crates> cargo test --workspace # Test all crates (≥80% coverage target)

🏗️ Architecture

┌──────────────────────────────────────────────────────┐
│ React + TypeScript Frontend │
│ TimelineView · Preview · Inspector · MediaPanel │
│ Zustand: read-only Timeline mirror + UI-only state │
└────────────────────┬─────────────────────────────────┘
│ Tauri invoke + event
┌────────────────────▼─────────────────────────────────┐
│ 🦀 Rust Core — Source of Truth │
│ │
│ opentake-domain Timeline / Track / Clip / KF │
│ opentake-ops EditCommand apply / Undo │
│ opentake-project Bundle / Archive / Export │
│ opentake-render wgpu Compositor + Text Raster │
│ opentake-media FFmpeg / Waveform / Transcribe │
│ opentake-agent MCP Server + Chat + Signals │
│ opentake-gen fal.ai / Replicate / OpenAI │
│ opentake-core Session / DI / Events │
│ │
│ ▲ │ │
│ Authenticated per-turn MCP invokes ▼ │
│ In-app Agent Chat FFmpeg + wgpu + cpal + whisper │
└──────────────────────────────────────────────────────┘

📖 Architecture Docs


📚 Docs

DocumentContent
ARCHITECTURE.mdTarget architecture, layering, crate layout, command layer, render pipeline
ROADMAP.mdPhase 0–10 roadmap with verification criteria and risk register
MODULE-PORT-MAP.md20 upstream module port specs with core algorithms
AGENT-CONTEXT-SIGNAL.mdAgent Context Signal system design
WORKFLOW-PLUGIN-SYSTEM.mdWorkflow Plugin System (JSON + Markdown)
ADVANCED-FEATURES.mdAdvanced features vs CapCut
CAPCUT-GAP.md33-item gap analysis vs CapCut
DECISIONS.mdTech stack / license / branding ADRs
PORT-1TO1-GAP.md1:1 port gap analysis


🔗 Upstream Reference

When porting editing logic, compare against the original Palmier Pro Swift source:

# Clone upstream alongside OpenTake (sibling directory)cd ..
git clone https://github.com/palmier-io/palmier-pro.git palmier-pro-upstream
cd OpenTake-generation

Expected layout:

PRIMARY-CN/
├── OpenTake-generation/ # This repo
└── palmier-pro-upstream/ # Upstream Swift source (GPL-3.0)

Key files for comparison:

ModuleUpstream (Swift)OpenTake (Rust/TS)
Timeline modelsSources/PalmierPro/Models/Timeline.swiftcrates/opentake-domain/src/timeline.rs
Clip modelSources/PalmierPro/Models/Timeline.swift (Clip struct)crates/opentake-domain/src/clip.rs
Clip rendererSources/PalmierPro/Timeline/ClipRenderer.swiftweb/src/components/timeline/clipRenderer.ts
Timeline geometrySources/PalmierPro/Timeline/TimelineGeometry.swiftweb/src/lib/geometry.ts
Snap engineSources/PalmierPro/Timeline/SnapEngine.swiftweb/src/lib/snap.ts
Edit operationsSources/PalmierPro/Editor/ViewModel/EditorViewModel+ClipMutations.swiftcrates/opentake-ops/src/ops/
MCP toolsSources/PalmierPro/Agent/Tools/ToolExecutor+Timeline.swiftcrates/opentake-agent/src/tools/

The upstream directory is gitignored from OpenTake — each collaborator clones it independently.

🚀 Quick Start

Prerequisites

  • Rust ≥ 1.96 (via rustup)
  • Node.js ≥ 20 + pnpm
  • FFmpeg ≥ 6.0 (brew install ffmpeg / winget install ffmpeg / apt install ffmpeg)

Build

git clone https://github.com/appergb/OpenTake.git
cd OpenTake
# Rust core
cargo build
cargo test
cargo clippy
# Frontendcd web && pnpm install && pnpm build
cd ..
# Launch Tauri dev mode
cargo tauri dev

The sibling directory palmier-pro-upstream/ contains upstream Swift sources for reference during porting.


📋 Version History

VersionDateMilestone
0.1.0-dev2026-06Phase 0+1: Cargo workspace + Domain models + Edit ops + Tauri scaffold
1.0.0-beta.12026-08-01First installable Beta: end-to-end local editor, Agent, Motion and reviewed AI workflows
1.0.0-beta.22026-08-08Hardened Beta: official Codex login, atomic timeline gestures, secure MCP and interaction polish
1.0.0-beta.32026-08-09Playback Beta: app-wide Space transport, native HEVC source preview and release-pipeline hardening
1.0.0-beta.42026-08-10Release candidate: timing and transition persistence, export consistency, signed updater and Windows tract security upgrade
1.0.0-beta.52026-08-14Agent workflow Beta: persistent authenticated MCP, ordered inline tools, Motion Studio, project previews and interface polish
1.0.0-beta.6Version recordTransparent Motion, ProRes 4444, preview tabs, media views, text/effects/stickers and verified semantic search
(planned)1.0.0TBDPhase 10: Full release — CapCut parity + deep Agent integration

📖 Full Roadmap


🌍 Community

Discord (English)Discord (Chinese)WeChat
Discord ENDiscord CNTBD

StarsForksIssues

Contributing

Discussions and suggestions welcome at Issues.


Acknowledgments

OpenTake stands on the shoulders of these excellent open-source projects.

ProjectLicenseUsage
Palmier ProGPL-3.0Edit logic and domain models originate from this community fork
ClipSkillsMIT12-volume editing knowledge base, internalized as Agent Context Signal system
FFmpegLGPL-2.1+ / GPL-2.0+Media codec engine
TauriMIT / Apache 2.0Cross-platform desktop app framework
wgpuMIT / Apache 2.0GPU rendering engine
whisper.cppMITTranscription inference engine
rmcpMITRust MCP server SDK

"Palmier" / "Palmier Pro" are names/trademarks of their respective owners, used here only for nominative fair use to describe OpenTake's origin.


📜 License

Copyright (C) 2026 OpenTake contributors

OpenTake is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 (GPLv3) or (at your option) any later version.

OpenTake is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

This program is based on Palmier Pro (Copyright (C) 2026 Palmier, Inc.), also distributed under GPLv3. See NOTICE.


Built with 🦀 Rust + 💙 Open Source

About

Cross-platform, open-source AI video editor — a GPL-3.0 community fork of Palmier Pro. Rust core + Tauri 2 + React, FFmpeg + wgpu.

Resources

Contributing

Stars

40 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages