OpenConvert
Local-first file conversion, without uploading the file.

- Timeline
- Sep 2026 — Present
- Status
- Active
- Domain
- Software / Developer tools
- Role
- Creator, product and engineering
- Build time
- 2 weeks
- Stack
- Rust, Tauri 2, Svelte 5, TypeScript, Astro
- Release
- v0.1.0 pre-release; build from source
The Build
OpenConvert started from a simple frustration: file conversion is useful, but most web converters ask you to upload the file first. That is a poor trade for private documents, client work, financial records, research data or anything else that should not leave the computer. I wanted the convenience of a web converter without making the upload part of the product.
I built OpenConvert as an open-source desktop app and command-line interface. It converts and modifies files locally on Windows, macOS and Linux. The current registry recognizes 50 formats, accepts 46 source formats and exposes 268 explicit conversion routes. It also includes 16 user-facing tools for jobs such as merging and reordering PDFs, removing an image background, denoising audio, transcribing speech and signing documents.
The interface is deliberately simple: drop in files, let the app inspect the real content rather than trusting the extension, choose a valid output, review the plan, and run it. The route graph is generated from one registry, so the desktop interface, CLI and documentation describe the same capabilities. The output is non-destructive and written beside the source unless the user chooses another destination.
The harder part was making “local” mean more than a marketing sentence. Native code owns filesystem access. Conversion workers run in operating-system sandboxes with network access denied, and risky parsers receive brokered file handles rather than arbitrary paths. Each job produces a provenance receipt with the detected input, selected route, tool versions, timing and output. The optional AI features are local too: they use on-device models and are never required for ordinary conversion.
I built the first version in two weeks using Rust, Tauri 2, Svelte 5, TypeScript and Astro. The repository now has 704 tests across 29 suites, 12 CI steps and 7 fuzz targets. Version 0.1.0 is still an active, early-stage pre-release, so there is no public installer yet; it can be built from source. The next work is packaging, signing, wider platform verification and earning trust through releases people can inspect and reproduce.
Gallery
What worked
- Built the product end to end in two weeks: desktop app, CLI, conversion engine, documentation site and CI.
- Made privacy an architectural property. Files stay on the device, workers run with network access denied, and risky parsers receive brokered handles instead of arbitrary paths.
- Generated the route table and documentation from the registry, then backed the implementation with 704 tests across 29 suites, 12 CI steps and 7 fuzz targets.



