This page covers everything you need to run Omniform locally for development. The stack is Tauri v2 (Rust backend) combined with a React 18 TypeScript frontend built with Vite 6. The Rust side handles all process management, file I/O, and binary downloads; the frontend handles the UI and communicates with Rust over Tauri’s IPC bridge. Both halves are compiled and launched together with a single CLI command.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/damianiglesias/omniform/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
You need three things installed before you can run Omniform:- Node.js 18 or later — https://nodejs.org
- Rust (via rustup) — https://rustup.rs
- Tauri system dependencies — varies by platform; follow the official prerequisites guide at https://tauri.app/start/prerequisites/
- Windows
- macOS
- Linux
Tauri on Windows requires:
- WebView2 — ships pre-installed on Windows 10 (version 1803+) and Windows 11. If it is missing, the Tauri prerequisites page links to the Microsoft installer.
- Microsoft C++ Build Tools — part of Visual Studio Build Tools or the full Visual Studio IDE. You need the “Desktop development with C++” workload.
Getting the source
Clone the repository from GitHub:Install dependencies
Install JavaScript/TypeScript dependencies
From the project root (the directory containing This installs React, the Tauri JS API, Vite, TypeScript, and all other frontend dependencies declared in
package.json), run:package.json.Run in development mode
cargo. Once both are ready, a native desktop window opens running the app.
On the very first launch, Omniform detects that yt-dlp and ffmpeg are not yet present and downloads them automatically into the app’s data directory. The window will show a setup banner while this happens — no action is needed on your part.
The first
npm run tauri dev may take several minutes while Cargo downloads and compiles all Rust crate dependencies from scratch. Subsequent runs use the incremental build cache and start much faster.Project structure
| Path | Purpose |
|---|---|
src/App.tsx | Root React component. Handles output directory selection and kicks off the dependency check on mount. |
src/hooks/useDownloadQueue.ts | Custom hook that owns all download state, invokes Tauri commands, and subscribes to Tauri events. |
src/components/ | UrlForm for URL/format/quality input; QueueItem for rendering each download row; DependencyBanner for showing setup status. |
src/types/index.ts | TypeScript interfaces shared across the frontend: DownloadItem, DependencyStatus, all event payload types. |
src-tauri/src/lib.rs | Registers all five Tauri commands and initialises plugins, the DownloadRegistry, and the binary directory. |
src-tauri/src/downloads.rs | Spawns yt-dlp child processes, streams stdout progress lines, and emits download:// events back to the frontend. |
src-tauri/src/dependencies.rs | Checks whether yt-dlp and ffmpeg are present, downloads them if not, extracts archives, and emits deps://status events. |
src-tauri/capabilities/ | JSON files that declare which Tauri plugin permissions the app is granted (filesystem, dialog, shell, clipboard). |