A desktop application for automatic silence detection and removal in videos. Built with Tauri, React, TypeScript, Rust, and FFmpeg.
- Smart Cut: Automatically detects and removes silent segments from video
- Time Warp: Speed up silent segments instead of cutting them
- Playback Speed: Global 0.5x – 4x speed with manual input
- Clip Editor: Trim, split, delete, and rearrange clips on a visual timeline
- Project Persistence: Auto-save progress, resume editing anytime
- Undo: Ctrl+Z to revert edits
- Export Presets: TikTok/Shorts, Instagram Reels, Custom (1080p/4K, 30/60fps)
- Captions Beta: Generate transcriptions (OpenRouter, Cerebras, Groq, Ollama, LM Studio)
- i18n: English and Spanish
- Auto Updates: Automatic update checking via GitHub Releases
- Store-Aware Updates: GitHub installs self-update, while AUR/Snap/Flatpak/Homebrew channels can switch to store-managed guidance
- Cross Platform: Linux, Windows, macOS
- Desktop Framework: Tauri v2
- Frontend: React 19 + TypeScript + Vite
- Styling: TailwindCSS v4
- State: Zustand
- Backend: Rust
- Database: SQLite (via tauri-plugin-sql)
- Video Processing: FFmpeg
- Node.js >= 22
- Rust (stable)
- FFmpeg installed and in PATH
- System dependencies for Tauri:
- Ubuntu/Debian:
libwebkit2gtk-4.1-dev libgtk-3-dev librsvg2-dev patchelf - Arch/Manjaro:
webkit2gtk-4.1 gtk3 librsvg
- Ubuntu/Debian:
# Install dependencies
npm install
# Run in development mode
npm run tauri dev
# Build for production
npm run tauri build
# Remove generated build/debug artifacts
npm run clean
# Validate the Linux release bundle locally before publishing
npm run verify:linux-release
# Validate both AUR package variants locally
npm run verify:aur:source
npm run verify:aur:binOn local Linux builds, npm run tauri build now auto-enables the AppImage fallback used by linuxdeploy, skips the problematic strip pass, and disables updater artifacts when no signing key is configured. That makes unsigned local builds work more reliably on distros like Arch/Manjaro.
Files ending in .sig and latest.json are not installers:
.sigfiles are release/update signatureslatest.jsonis used by the in-app updater for GitHub-distributed builds
| Target system | Release file | What to do |
|---|---|---|
| Arch / Manjaro | AUR cliprithm |
yay -S cliprithm |
| Arch / Manjaro | AUR cliprithm-bin |
yay -S cliprithm-bin |
| Ubuntu / Debian | Cliprithm_<version>_amd64.deb |
sudo apt install ./Cliprithm_<version>_amd64.deb |
| Fedora / RHEL | Cliprithm-<version>-1.x86_64.rpm |
sudo dnf install ./Cliprithm-<version>-1.x86_64.rpm |
| openSUSE | Cliprithm-<version>-1.x86_64.rpm |
sudo zypper install ./Cliprithm-<version>-1.x86_64.rpm |
| Generic Linux | Cliprithm_<version>_amd64.AppImage |
portable fallback; see below |
For the AppImage:
chmod +x Cliprithm_<version>_amd64.AppImage
./Cliprithm_<version>_amd64.AppImageOn Arch / Manjaro, if direct AppImage mounting fails, install the compatibility package once:
sudo pacman -S fuse2If the AppImage opens with a blank or white window on Arch / Manjaro, run it in one single line:
APPIMAGE_EXTRACT_AND_RUN=1 WEBKIT_DISABLE_DMABUF_RENDERER=1 WEBKIT_DISABLE_COMPOSITING_MODE=1 LIBGL_ALWAYS_SOFTWARE=1 ./Cliprithm_<version>_amd64.AppImageFor Arch-based distros, cliprithm-bin is the preferred package because it already wraps the AppImage in the recommended AUR launcher.
- Use
Cliprithm_<version>_x64-setup.exefor the normal interactive installer - Use
Cliprithm_<version>_x64_en-US.msifor managed or silent MSI deployment
- Download the
.dmgthat matches your Mac CPU:- Apple Silicon:
aarch64 - Intel:
x64
- Apple Silicon:
- Open the
.dmg, drag Cliprithm.app into Applications, and start it from there
If a specific release tag does not include macOS assets, that tag was published without the macOS build job.
Cliprithm now has tooling for two AUR variants:
cliprithm→ source-based packagecliprithm-bin→ binary package backed by the release AppImage
GitHub Actions now publishes both AUR package variants when the SSH key is configured and the target AUR repositories exist.
The local/publication tooling:
- generates
PKGBUILDand.SRCINFOfrom the release version and tag - points the package either to the tagged GitHub source tarball or to the release AppImage
- computes the required
sha256values automatically - can be validated locally with
makepkgbefore publishing
Required GitHub configuration:
- Secret:
AUR_SSH_PRIVATE_KEY - Optional repository variable:
AUR_PACKAGE_REPO_SSH_URL
Default AUR repository URLs if the variable is not set:
ssh://aur@aur.archlinux.org/cliprithm.git
ssh://aur@aur.archlinux.org/cliprithm-bin.git
The workflow derives cliprithm-bin.git automatically from AUR_PACKAGE_REPO_SSH_URL, so you do not need a second repository variable for the binary package.
Recommended maintainer setup:
- Create or use your AUR account
- Generate a dedicated SSH keypair for AUR publishing
- Add the public key to your AUR account
- Save the private key in this repo as
AUR_SSH_PRIVATE_KEY - Make sure that same key has write access to both AUR repos
- Let the release workflow publish both packages on future releases
Local validation flow:
# Build the Linux artifacts that users will receive
npm run verify:linux-release
# Validate source AUR metadata and sources
npm run verify:aur:source
# Validate binary AUR metadata against the locally built AppImage
npm run verify:aur:binSee distribution-playbooks/aur.md for the full strategy and the notes for cliprithm-bin.
- GitHub installers / AppImage from Releases use the built-in Tauri updater.
- AUR / AUR bin are now prepared to run in store-managed mode, with the app pointing users back to AUR and checking the package version through the AUR RPC API.
- Snap / Flatpak / Homebrew now have repo scaffolding under
packaging/plus playbooks indistribution-playbooks/, and the app can check public store metadata before guiding the user back to that channel. - For store-managed channels, the app is designed to avoid self-installing updates and instead guide the user back to the store/package manager that delivered the app:
- Snap -> Snap Store API
- Flatpak -> Flathub appstream API
- Homebrew -> Homebrew Cask JSON API or a raw tap cask file when you override the build env
Packaging scaffolding added in this repo:
packaging/flatpak/com.botom.cliprithm.ymlpackaging/snap/snapcraft.yamlpackaging/homebrew/cliprithm.rb.templatepackaging/linux/shared desktop/appstream metadata
When the project starts consuming too much disk space again, use:
npm run cleanThat removes dist, src-tauri/gen, src-tauri/target, and Snapcraft build artifacts under packaging/snap/ (.snapcraft, parts, prime, stage, and generated .snap files).
If you also want to remove node_modules:
npm run clean:fullnpm run clean:full also removes node_modules and .playwright-mcp.
cliprithm/
├── src/ # React frontend
│ ├── components/
│ │ ├── layout/ # TopNavBar, SideNavBar, MainLayout
│ │ ├── import/ # EmptyState, MediaLibrary
│ │ ├── processing/ # ProcessingView
│ │ ├── editor/ # EditorView, SettingsPanel
│ │ ├── timeline/ # Timeline with clip visualization
│ │ ├── export/ # ExportModal with presets
│ │ ├── about/ # About & Sponsor page
│ │ └── ui/ # Button, Slider, Toggle, SpeedControl, Icon
│ ├── stores/ # Zustand stores
│ ├── services/ # DB, Tauri command wrappers
│ ├── hooks/ # Auto-save, custom hooks
│ └── lib/ # i18n, logger, utilities
├── src-tauri/ # Rust backend
│ ├── src/commands/ # FFmpeg, library, media server
│ └── tauri.conf.json
├── packaging/ # Flatpak, Snap, Homebrew, and shared Linux metadata
├── distribution-playbooks/ # Packaging and store deployment notes
├── .github/ # CI/CD, issue templates
└── public/ # Logo, static assets
See CONTRIBUTING.md for development setup and guidelines.
MIT — Made with 💜 by Edwar Diaz