π Built Exclusively for AI Content Engine Hackathon
π¬ EditOS
Say it. See it. Ship it.
Describe a video in plain language. Walk away. Come back for the finished MP4.
π English & Chinese Supported
English is the default interface language β you can also interact with EditOS naturally in Chinese.
βΆοΈ The 2-minute demo is embedded at the top of this page β raw footage in, real MP4 out, no cuts. No mockup. No slides. A working editor.
π Connect & Follow
πΈ Instagram: @editos.ai β behind-the-scenes, updates, and demos
πΌ LinkedIn: Post Link β share your feedback and thoughts
π GitHub: github.com/robloxsagax-web/EditOS
π§± The Bottleneck Nobody Fixes
Every creator hits the same wall: the idea takes five minutes. The edit takes a weekend.
| Pain Point | Today's Reality |
|---|---|
| β° Time | 3β6 hours of manual editing per video |
| π§© Tool soup | Transcription, stock footage, voiceover, music, timeline, render β 6β12 separate apps |
| πΈ Cost | $500β$2,000/month per creator for a human editor |
| π€ Iteration | Client says "change the music" β restart the whole edit |
| π« The hidden tax | Great videos never get made because editing is a full-time job |
And here's what bothers us most: most "AI video" tools don't edit at all. They are one-shot prompt-to-video toys β type, generate, done. No revisions. No control. No workflow. Real editing is iterative, and every existing tool pretends that isn't true.
π‘ The Idea: An Operating System, Not a Generator
EditOS is a conversational video-editing operating system. You don't write FFmpeg commands. You don't scrub a timeline. You just type what you want β and an autonomous agent runs an entire professional editing pipeline for you.
"Make a 60-second travel vlog from the clips in my folder. Cut the boring parts, add an upbeat voiceover, pick BGM that fits a travel vlog, and smooth transitions between scenes."
The agent decides what to run, in what order, and what to reuse β across 18 specialized editing tools β and streams every step live in a chat interface. Then it renders the final video and drops the MP4 right into the conversation.
Critically, you can interrupt it mid-run, redirect it, and redo just one stage β without ever starting over.
β¨ Key Features
| Feature | What it does |
|---|---|
| π Smart Media Search | Automatically searches & downloads relevant stock images and video clips (Pexels / Pixabay) |
| βοΈ AI Script Generation | Writes storylines and narration in your chosen style and tone |
| π΅ Intelligent Audio | Recommends background music by mood/genre and generates voiceovers with TTS |
| π¬ AI Transitions | Creates smooth, AI-powered transition effects between clips |
| π¬ Conversational Editing | Edit via natural language β no technical skill required |
| β‘ Skill Archiving | Save and replay entire editing workflows for batch processing |
| π Partial Redo | Re-run a single pipeline stage (e.g. "change the music") without restarting |
| π Interrupt & Resume | Stop the agent mid-run, give a new instruction, continue from current state |
π The Party Trick: Edit Without Restarting
This is what makes EditOS an editor, not a generator:
| Capability | What happens |
|---|---|
| π Interrupt & Resume | Stop the agent mid-run, type a new instruction, it continues from current state β prior work kept |
| π Partial Redo | Re-run one stage ("make the BGM happier") β the agent locates exactly the nodes affected and reuses everything else |
| π§ Skill Archiving | Loved how a video turned out? Ask the agent to save the editing logic as a reusable Skill β replay that style on the next 100 videos |
Concretely, a partial redo walks only the affected subgraph:
You: "make the BGM happier"
β
βΌ
βββββββββββββββββ
β SelectBGM β β re-run ONLY this node
βββββββββ¬βββββββββ
βΌ
ββββββββββββββββββββββ
β PlanTimeline β β and its direct dependents
βββββββββ¬βββββββββββββ
βΌ
ββββββββββββββββββββββ
β RenderVideo β β re-render just the final cut
ββββββββββββββββββββββ
Everything else β ASR, script, voiceover β is untouched. No restart. No wasted work.
ποΈ Architecture
πΈ Proof β Real Pixels, Real MP4s
Not renders. Not concepts. The app, running, mid-edit:

The chat studio β every tool call streams in real time; the finished MP4 lands in the same thread.

The deliverable β a downloadable, rendered video with per-step artifact previews. Four real rendered MP4s ship on therepo:
- 547464911β¦mp4 Β· 547464913β¦mp4 Β· 547464917β¦mp4 Β· 547464918β¦mp4 β sizes 6β12 MB, all with mdat + moov (playable, seekable, real):

Full transparency β click any message to inspect the editing DAG: what ran, what's queued, what's next. No black box. No "the AI did it." A visual graph of every cut, script, and render decision:

Real project ergonomics β drag-and-drop media with per-file progress, sessions that remember you, history you can resume:

Built for a global creator β bilingual prompt library (EN/δΈζ), model picker in the same panel. You bring the models you already pay for.
"π¬ Real Outputs (Click to Watch) Here are 7 finished videos generated by EditOS from raw footage. No mockups. No slides. Just real MP4s produced by the agent pipeline.
π§ How It Works β The Autonomous Pipeline
EditOS is not a single API call. It is a LangGraph/LangChain agent that drives a graph of 18 specialized video-processing nodes, each exposed as a tool through a local MCP (Model Context Protocol) server. The agent decides which node to run, in what order, based on your intent β and can replan on the fly.
You (chat / CLI)
β "Make a travel vlog from my clips, upbeat, 60s"
βΌ
LangChain Agent ββββΊ LLM (reasoning) + VLM (vision)
β tools = nodes + skills
βΌ
MCP Server (Model Context Protocol)
β
βΌ
18 Editing Nodes (a dependency-aware DAG)
β
βΌ
FFmpeg Β· MoviePy Β· FunASR Β· TransNetV2 Β· TTS Β· Pexels
β
βΌ
outputs/ β final rendered video
The 18-Node Editing Pipeline
| # | Node | Role |
|---|---|---|
| 1 | LoadMedia |
Load & validate input media (video/image/audio) |
| 2 | SearchMedia |
Search & download stock media (Pexels/Pixabay) |
| 3 | SplitShots |
Shot detection & segmentation (TransNetV2) |
| 4 | LocalASR |
Speech-to-text transcription (FunASR) |
| 5 | SpeechRoughCut |
ASR-based rough cut for speech/talking videos |
| 6 | UnderstandClips |
VLM-powered clip content analysis |
| 7 | FilterClips |
Filter clips by criteria ("remove the sky shots") |
| 8 | GroupClips |
Group related clips into scenes |
| 9 | GenerateScript |
LLM narration/script generation |
| 10 | ScriptTemplateRec |
Recommend copywriting templates |
| 11 | GenerateVoiceover |
Text-to-speech voiceover |
| 12 | SelectBGM |
Background music selection (spectral feature matching) |
| 13 | RecommendTransition |
Recommend visual transitions |
| 14 | RecommendText |
Font/typography recommendation |
| 15 | PlanTimelinePro |
Timeline planning (pro) |
| 16 | PlanTimelineAITransition |
Timeline planning with AI transitions |
| 17 | GenerateAITransition |
AI transition effects (optional) |
| 18 | RenderVideo |
Final video render (MoviePy / FFmpeg) |
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EditOS ARCHITECTURE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββ
β USER β (Web UI / CLI)
βββββ¬βββββ
β natural language
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AGENT LAYER β LangChain / LangGraph β
β create_agent(model=LLM, tools=nodes+skills, middleware) β
β β’ Multi-turn tool-calling loop β’ Streaming WebSocket replies β
β β’ Context schema (ClientContext) β’ API-key validation β
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β streamable-http
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP SERVER β Model Context Protocol β
β FastMCP Β· session lifespan Β· sampling handler β
β Registers 18 nodes as tools + loads Skills (SkillKit) β
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NODES β 18 video-processing stages β
β Load β Search β SplitShots β ASR β Understand β Filter β β
β Group β Script β Voiceover β BGM β Timeline β Render β
β (NodeManager DAG: partial redo, dependency-aware execution) β
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MEDIA / AI ENGINE LAYER β
β FFmpeg Β· MoviePy Β· TransNetV2 Β· FunASR Β· ElevenLabs Β· Pexels β
β + LLM (OpenRouterβ¦) + VLM (Gemini / Qwen-VLβ¦) β
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
outputs/ β rendered video
ArtifactStore (per-session persistence)
Why MCP?
We expose every editing node as a Model Context Protocol tool. This is the modern, standard way to give LLMs access to external capabilities β it means the agent's tools are decoupled from the agent runtime, individually testable, and reusable across any MCP-compatible client. The sampling handler even lets the MCP server delegate LLM/VLM calls back to the agent's configured models, so there's a single source of truth for AI credentials.
βοΈ The Before / After
| Manual Editing | EditOS | |
|---|---|---|
| Time per video | ~3β6 hours | ~5β10 minutes of chatting |
| Editor cost | $500β$2,000/month | API costs only (~cents/video, you own keys) |
| Subscriptions | 6β12 tools | 1 app |
| Skill required | Professional editor | Describe what you want |
| Feedback iteration | Restart from scratch | Re-run one stage |
| Batch & rebrand | Not feasible | Save a Skill β replay the style |
Who this is for: YouTubers, small businesses, educators, indie marketers, hackathon builders β anyone with a story to tell and no time to learn Premiere Pro.
π― What Makes EditOS Different
| Prompt-to-Video Toys | EditOS | |
|---|---|---|
| Editing model | Single shot, generate-and-done | Iterative, multi-turn conversation |
| Control | None β take what you get | Full pipeline, every stage inspectable & re-runnable |
| Revision | Start over from scratch | Partial redo of any single node |
| Architecture | One API call | Autonomous agent over an 18-node DAG |
| Tool access | Hardcoded | Standard MCP tools β reusable & decoupled |
| Reuse | None | Save & replay editing Skills for batch work |
| Models | Locked to one vendor | Bring any OpenAI-compatible LLM/VLM/TTS |
π οΈ Tech Stack
| Layer | Technology |
|---|---|
| Agent runtime | LangChain 1.2 + LangGraph 1.1 |
| Tool protocol | MCP 1.26 (FastMCP) + langchain_mcp_adapters |
| LLM / VLM | OpenAI-compatible (OpenRouter, OpenAI, DeepSeek, Gemini, Anthropic, Groq, Together, Azure) |
| Backend / API | FastAPI + Uvicorn (WebSocket streaming) |
| Shot detection | TransNetV2 (PyTorch) |
| Speech-to-text | FunASR |
| Video render | MoviePy 2.2 + FFmpeg + PyAV |
| Audio analysis | librosa + FAISS (music feature matching) |
| TTS | ElevenLabs / MiniMax / Fish Audio |
| Stock media | Pexels / Pixabay |
| Skills | SkillKit 0.4 |
| Config | TOML + Pydantic (env-var substitution) |
| Frontend | Vanilla JS + HTML + CSS (WebSocket chat UI) |
| Deployment | Docker Β· ModelScope Β· HuggingFace Space Β· Local |
| Language | Python β₯ 3.11 |
π€ Multi-Provider AI β Bring Your Own Models
EditOS is model-agnostic by design. Every intelligence layer can run on the provider you already pay for.
Large Language Models (reasoning & scripts)
| Provider | Example Models |
|---|---|
| OpenRouter (default) | gpt-4o-mini, claude-3-haiku, gemini-2.0-flash |
| OpenAI | GPT-4o, GPT-4o-mini, GPT-4 |
| DeepSeek | deepseek-chat, deepseek-coder |
| Gemini | gemini-2.0-flash, gemini-1.5-pro |
| Anthropic | claude-3-5-sonnet, claude-3-opus |
| Groq | llama-3.1-70b, mixtral-8x7b |
| Together AI | llama-3.1-405b, qwen-2.5 |
| Azure OpenAI | GPT-4o, GPT-4 |
Vision Language Models (clip understanding)
| Provider | Example Models |
|---|---|
| Gemini | gemini-2.0-flash, gemini-1.5-pro |
| Qwen VL | qwen2-vl-72b, qwen2.5-vl-72b |
| GLM-4V | glm-4v-plus |
| DeepSeek VL | deepseek-vl2 |
| Llama Vision | llama-3.2-90b-vision |
Text-to-Speech (voiceover)
| Provider | Notes |
|---|---|
| ElevenLabs (default) | High-quality neural voices (free-tier "Sarah" supported) |
| MiniMax | Fast & affordable |
| Fish Audio | Open-source option |
Stock Media
| Provider | Notes |
|---|---|
| Pexels | Free stock photos & videos |
| Pixabay | Free stock media |
Everything is OpenAI-compatible, so swapping a model is a one-line config change.
π Why Self-Host?
| Benefit | What It Means |
|---|---|
| Your footage stays yours | No SaaS vendor lock-in β media never leaves your machine |
| Zero monthly fees | Pay only for API usage (most have free tiers) |
| Full control | Customize any part of the pipeline |
| Privacy | Your footage never touches a third-party server |
π Run It Yourself β 3 API Keys, ~10 Minutes
Self-hosted, no SaaS, no monthly fee. Your footage stays on your machine; you only pay for the AI API calls you make (most have generous free tiers).
Prerequisites
- Python β₯ 3.11
ffmpeg/ffprobeinstalled on your system (for media processing)- Git LFS (for pulling model assets, if needed)
Step 1: Clone & Install
# 1. Clone the repository
git clone https://github.com/robloxsagax-web/EditOS.git && cd EditOS
# 2. Create a Python environment
conda create -n editos python=3.11 -y && conda activate editos
# 3. Download required resources (fonts, models, sample BGM β runs automatically)
chmod +x download.sh && ./download.sh
# 4. Install Python dependencies
pip install -r requirements.txt
Step 2: Drop in Your API Keys (Free Tiers Work!)
EditOS is model-agnostic. Grab keys from your preferred providers and set them as environment variables:
export OPENSTORYLINE_LLM_API_KEY="your-key" # OpenRouter (free $1 credit) / Gemini / Groq
export OPENSTORYLINE_VLM_API_KEY="your-key" # Gemini Flash / Qwen VL (for clip understanding)
export OPENSTORYLINE_GENERATE_VOICEOVER__PROVIDERS__ELEVENLABS__API_KEY="your-key" # TTS (10k chars/mo free)
export OPENSTORYLINE_PEXELS_API_KEY="your-key" # Stock b-roll (completely free)
π‘ Pro Tip: OpenRouter gives you $1 in free credits to test any LLM. ElevenLabs and Pexels both have reliable free tiers β you can render your first video for pennies (or free).
Step 3: Start the Studio
# One-command launcher β sets up config and boots both MCP server + Web UI
./run.sh
Then open http://127.0.0.1:7860 in your browser.
Prefer the terminal? Use the CLI mode instead:
python cli.py
π³ Prefer Docker? Two Commands:
# Build the image
docker build -t editos .
# Run it β mount your config and outputs, pass your keys
docker run -v $(pwd)/config.toml:/app/config.toml \
-v $(pwd)/outputs:/app/outputs \
-e OPENSTORYLINE_LLM_API_KEY="your-key" \
-e OPENSTORYLINE_VLM_API_KEY="your-key" \
-e OPENSTORYLINE_PEXELS_API_KEY="your-key" \
-p 7860:7860 editos
π¬ Your First Edit
Once the UI loads, drag and drop a folder of raw clips into the chat, then type:
βMake a 45-second product reel. Remove dead air. Keep every mention of the product. Use the product shots, not the talking-head shots. Add captions. Use energetic music.β
Once the edit is underway, try changing your mind:
βActually, replace the energetic music with a calm track.β
Then:
βKeep everything else exactly the same.β
EditOS will stop, replan, and reuse the existing analysis and timeline state instead of rebuilding the entire edit. Only the affected downstream stages need to run again.
First render: minutes, not hours. That's the whole point and whole project is built during timeline of AI Content Engine Hackathon.
Talk to your footage. It handles the rest.
π¬ EditOS β the operating system for AI video editing.
Built With
- ai-video-editing
- aivideoediting
- asyncpython
- automatedvideo
- contentautomation
- css
- docker
- elevenlabs
- fastapi
- ffmpeg
- google-gemini
- html
- javascript
- langchain
- langgraph
- moviepy
- openrouter
- pexels
- pythonfastapi
- pythonprogramming
- transnetv2
- videopipeline
- youtube-automation
- youtubeautomation




Log in or sign up for Devpost to join the conversation.