Show HN: VibeClip – open-source AI video editor you control by chatting
VibeClip is an open-source, self-hosted AI video editor that lets you turn long videos into captioned 9:16 shorts — and edit by chatting. It uses local faster-whisper for transcription and an LLM for analysis, supports multiple LLM providers, and keeps your data private.
Notifications You must be signed in to change notification settings
Fork 0
Star 2
BranchesTags
Open more actions menu
Folders and files
NameName
Last commit message
Last commit date
Latest commit
History
10 Commits
10 Commits
.github
.github
assets
assets
chat
chat
docs
docs
pipeline
pipeline
scripts
scripts
tests
tests
.dockerignore
.dockerignore
.env.example
.env.example
.gitignore
.gitignore
.pre-commit-config.yaml
.pre-commit-config.yaml
.python-version
.python-version
.secrets.baseline
.secrets.baseline
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
CONTRIBUTING.md
Dockerfile
Dockerfile
LICENSE
LICENSE
README.md
README.md
SECURITY.md
SECURITY.md
docker-compose.yml
docker-compose.yml
pyproject.toml
pyproject.toml
server.py
server.py
uv.lock
uv.lock
Repository files navigation
⚡ Quick start
Spin up a private instance in three commands. All you add is one LLM key.
git clone https://github.com/oktaydbk54/vibeclip.git cd vibeclip cp .env.example .env # add ONE line: OPENAI_API_KEY=sk-... docker compose up -d --build
→ open http://localhost:8765
With the defaults (EMAIL_MODE=console, REQUIRE_EMAIL_VERIFICATION=false) sign-up logs you straight in — no email provider needed. Bring an OpenAI or DeepSeek key (DeepSeek is the cheap one), or point LLM_BASE_URL at any OpenAI-compatible server (Ollama, LM Studio, OpenRouter…). Prefer no Docker? See local install.
✨ What it does
🎬 Long → shorts, automatically Transcribes on-device, scores the strongest moments (hook / flow / value — not a dumb keyword scan), reframes to 9:16 around the speaker, and burns word-synced captions.
💬 Edit by chatting A tool-calling agent turns plain language into real edits — trims, filler-word removal (“uhh”/“ee”), zooms, styles, music, b-roll, brand overlays. One undo reverts a whole multi-step plan.
🎨 Styles in one shot hormozi, mrbeast, podcast_minimal, kinetic — captions, pace, zoom, music and SFX applied together. Drop in your own preset as a JSON file.
🖥️ A real studio UI Web app with a live 9:16 preview, clip cards, a CapCut-style timeline, and the chat copilot right beside it.
🔑 Your key, your data Bring your own LLM key (OpenAI · Gemini · Claude · DeepSeek · any compatible endpoint). Nothing is proxied through us — there is no “us.”
🏠 Self-host first One Docker command. Speech-to-text and every render run locally via faster-whisper + ffmpeg. AGPL-3.0, no SaaS lock-in.
🛠 How it works
upload │ ┌──────▼───────┐ faster-whisper (local, no API key) │ transcribe │ └──────┬───────┘ ┌──────▼────────────┐ LLM "brain" (your key) — structure + scored moments │ analyze structure │ │ find highlights │ └──────┬────────────┘ ┌──────▼───────┐ per clip, replayed from cached intermediates (~2–4s/edit) │ auto edit │ jumpcut → 9:16 reframe → captions → music+ambience (ducked) │ │ → SFX → fades · then your chat commands layer on top └──────┬───────┘ export → vertical MP4, publish-ready
Only two things ever hit the network: your chosen LLM (to understand intent and score moments) and, optionally, Pexels (stock b-roll). Speech-to-text and all rendering stay on your machine.
🔑 Bring your own key (BYOK)
VibeClip never ships with a key and never proxies your prompts anywhere except the provider you choose. Two ways to supply one:
Per instance — set OPENAI_API_KEY (or DEEPSEEK_API_KEY, or any OpenAI-compatible endpoint via LLM_BASE_URL) in .env.
Per user — each account pastes its own key on the in-app Settings page, with a live test-connection. Keys are encrypted at rest and never sent back to the browser.
Provider Routed via Notes
OpenAI native Default, best-supported.
DeepSeek native The budget pick — a typical short costs a few cents.
Google Gemini OpenAI-compat endpoint gemini-2.5-flash / pro.
Anthropic Claude OpenAI-compat endpoint claude-haiku / sonnet.
Anything else LLM_BASE_URL Ollama, LM Studio, OpenRouter, your own proxy…
Speech-to-text runs locally and needs no key.
⚙️ Configuration
Everything is driven by .env (see .env.example for the full, commented list). The ones that matter most:
Variable Default Purpose
OPENAI_API_KEY — Your LLM key (preferred).
DEEPSEEK_API_KEY — Cheaper fallback, used if no OpenAI key.
LLM_BASE_URL — Any OpenAI-compatible endpoint (local models, proxies).
EMAIL_MODE console console prints OTP to the log; resend sends real email.
REQUIRE_EMAIL_VERIFICATION false true enforces email confirmation (public instances).
HOSTED_STUDIO true true = the landing offers login/signup (use your own instance). false = a public marketing site that points everyone to GitHub to self-host (no login).
GA_MEASUREMENT_ID — Empty = no analytics injected (self-host default).
SITE_URL http://localhost:8765 Public base URL for blog canonical/OG/sitemap.
VIDEO_ENCODER libx264 Use h264_videotoolbox on Apple Silicon.
VIBECLIP_BIND 127.0.0.1 docker-compose publish address (0.0.0.0 to expose).
MAX_UPLOAD_SECONDS 0 Longest uploadable video, seconds. 0 = no limit (self-host).
MAX_PROJECTS_PER_USER 0 Projects per account. 0 = unlimited; cap it on a public instance.
Run without Docker
Requirements: Python 3.12+, ffmpeg, and the DejaVu fonts (for caption rendering).
cp .env.example .env # add your LLM key uv sync # or: pip install -e . python -m chat.app # → http://127.0.0.1:8765
First run downloads the Whisper model. Prefer the terminal? python -m chat.cli .
📦 Bundled assets & licensing
The repo bundles a small library of royalty-free media (music, ambience, SFX, demo footage) for the built-in styles. Some tracks are CC-BY (Kevin MacLeod) and require crediting in your video description — see the CREDITS files under assets/. VibeClip never bundles or uses copyrighted/branded game footage.
🤝 Contributing
Issues and PRs welcome — start with CONTRIBUTING.md. Security reports: see SECURITY.md. Be excellent to each other (code of conduct).
📄 License
GNU AGPL-3.0 — see LICENSE. You can self-host and modify VibeClip freely; if you run a modified version as a network service, you must offer that modified source to its users. Copyright © 2026 the VibeClip authors.
Built for people who'd rather talk to their editor than fight it.
About
Open-source, self-hosted AI video editor: turn long videos into captioned 9:16 shorts — and edit by chatting. BYO LLM key. AGPL-3.0.
vibeclip.dev
Topics
python
open-source
video
ai
ffmpeg
self-hosted
captions
subtitles
video-editing
whisper
shorts
content-creation
llm
byok
faster-whisper
vertical-video
Resources
Readme
License
AGPL-3.0 license
Code of conduct
Code of conduct
Contributing
Contributing
Security policy
Security policy
Uh oh!
There was an error while loading. Please reload this page.
Activity
Stars
2 stars
Watchers
0 watching
Forks
0 forks
Report repository
Releases
No releases published
Packages 0
Uh oh!
There was an error while loading. Please reload this page.
Contributors
Uh oh!
There was an error while loading. Please reload this page.
Languages
Python 60.0%
JavaScript 16.9%
HTML 12.3%
CSS 10.7%
Dockerfile 0.1%