Skip to content

Repository files navigation

VERT Desktop

A cross-platform desktop application for VERT, the open-source file conversion tool. Built with Tauri 2, VERT Desktop wraps the VERT web frontend and bundles vertd — the video conversion daemon — as a sidecar process for local, offline file conversion.

Overview

VERT Desktop packages the full VERT experience into a native desktop application:

  • VERT Frontend — The SvelteKit-based web UI for file conversion (images, audio, video, documents), synced directly from the upstream VERT repository.
  • vertd — A Rust-based FFmpeg wrapper that handles video conversion. Bundled as a Tauri sidecar binary that starts automatically when the app launches and shuts down when the app closes.
  • FFmpeg — Bundled alongside vertd for video/audio processing. No system-wide FFmpeg installation required.

Supported Platforms

Platform Architecture
macOS Apple Silicon (arm64), Intel (x86_64)
Windows x86_64
Linux x86_64

Prerequisites

Development Setup

1. Sync the VERT frontend

Pull the latest VERT frontend source into the project:

bun run sync

This clones the VERT repository, copies its src/, static/, and configuration files into the project, merges dependencies, and runs bun install. Run this again at any time to update to the latest upstream version.

2. Download sidecar binaries

Download vertd and FFmpeg binaries for your platform:

bun run download-vertd

To download binaries for all supported platforms (for cross-compilation):

bash scripts/download-vertd.sh --all-platforms

Binaries are placed in src-tauri/binaries/ with Tauri-compatible target triple naming.

3. Run in development mode

bun run tauri dev

This starts the Vite dev server for the frontend and the Tauri application with hot reload. vertd launches automatically as a sidecar process on port 24153.

4. Build for production

bun run tauri build

This produces a distributable application bundle for your platform with the VERT frontend, vertd, and FFmpeg all included.

Project Structure

vert-desktop/
├── src/                    # VERT frontend (SvelteKit, synced from upstream)
├── src-tauri/
│   ├── src/
│   │   ├── main.rs         # Application entry point
│   │   └── lib.rs          # vertd sidecar lifecycle management
│   ├── binaries/           # Sidecar binaries (vertd, ffmpeg, ffprobe)
│   ├── Cargo.toml          # Rust dependencies
│   ├── tauri.conf.json     # Tauri configuration
│   └── capabilities/       # Tauri security permissions
├── scripts/
│   ├── sync-vert.sh        # Sync VERT frontend from GitHub
│   └── download-vertd.sh   # Download vertd + FFmpeg binaries
├── static/                 # Static assets
└── .env                    # Environment configuration

How It Works

  1. Startup — When the application launches, the Tauri backend spawns vertd as a sidecar process. vertd starts an HTTP server on localhost:24153 and locates the bundled FFmpeg binaries automatically.

  2. Conversion — The VERT frontend communicates with vertd over HTTP/WebSocket for video conversion tasks. Image, audio, and document conversions are handled client-side via WebAssembly (ImageMagick WASM, browser FFmpeg).

  3. Shutdown — When the application window is closed, the Tauri runtime kills the vertd sidecar process.

Environment Variables

Configuration is managed via .env in the project root:

Variable Description Default
PUB_VERTD_URL vertd server URL http://localhost:24153
PUB_HOSTNAME Frontend hostname localhost:1420
PUB_ENV Environment mode development
PUB_DISABLE_ALL_EXTERNAL_REQUESTS Disable external network requests false

Acknowledgements

  • VERT — The open-source file conversion tool
  • vertd — Video conversion daemon
  • Tauri — Desktop application framework
  • FFmpeg — Multimedia processing

License

This project is licensed under the GNU Affero General Public License v3.0. See LICENSE for details.

Copyright (C) 2025 Barn Door Events Ltd

About

Desktop app for running vert.sh

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages