Skip to content
  • about
  • contact

A studio that ships software and shows its work.

hello@caparisonlab.com, Chittagong, Bangladesh

2026 Caparison Lab

  • work
  • capabilities
  • about
  • contact
  • RSS
work
desktop app

RawFootage,RealStory

Desktop app for travel filmmakers: raw clips in, narrated rough cut out, every step running on their own machine.

A folder of clips becomes a narrated rough cut in one pass: script, voiceover and assembly, with nothing uploaded and 55 voices bundled in the app.

ScopingDesignFrontendRust backendLocal model integrationffmpeg pipelineCI and packagingDocsmacOS (Apple Silicon)Windows 64-bit
duration
3 weeks
year
2026
status
in beta

stack

reacttypescripttaurirustonnx runtimeffmpegreacttypescripttaurirustonnx runtimeffmpegreacttypescripttaurirustonnx runtimeffmpegreacttypescripttaurirustonnx runtimeffmpeg

The brief

The users come home from a trip with a few hundred clips and never cut them. What stalls it is not the editing. It is describing what is in every shot, writing narration that fits the footage, recording it, and laying picture under voice. Tools that do this upload the footage, and a card holding 40GB is a long wait before any work starts.

The scope was a rough cut, not a finished film. Something to export and finish by hand. And it had to run with no connection, because the moment people want to cut is the flight home.

What we built

A Tauri desktop app: a React frontend over a Rust core that drives local tools. Clips are imported by reference and described as timestamped segments, a local language model writes narration bounded by how long each moment actually runs, a bundled speech model speaks it, and ffmpeg cuts picture to voice and burns the captions. The cloud providers are optional and run on the user's own key.

  • Clip library that imports by reference, so a 40GB card is usable immediately.

  • Segment editor that splits a clip into timestamped moments, contiguous and gapless by construction.

  • Script generation through a local model, with each line's length capped by the footage it runs over.

  • Voiceover from an 82MB bundled Kokoro model with 55 voices, or ElevenLabs on the user's own key.

  • Timeline with drag reordering, dissolves, three music beds and sound decided per shot.

  • Caption rendering in five scripts with bundled Noto fonts, positioned by measurement rather than by assumption.

  • Rough-cut render through ffmpeg, plus a versioned project bundle built as the handoff to the planned web editor.

  • Sign-in gate with an RS256 licence verified offline and cached for a month.

Three weeks, 9 to 30 August 2026, and 131 commits across 16 working days.

key decisions

  1. 01

    Local inference in a desktop shell, not a server

    The heavy work is language-model generation, speech synthesis and video encoding. On a server that means uploading gigabytes of someone's personal footage and paying for GPU time on every render, so the tools run as ordinary local processes instead.

  2. 02

    Narration is the master clock, and picture is cut to it

    The voiceover is never time-stretched and never trimmed, because a chopped word is noticed instantly and a shortened shot essentially never is. Each clip holds for its line plus a 300ms tail, floored at 1500ms so a short sentence still reads as a shot.

  3. 03

    Silence from the licence server is not a refusal

    The users are on planes and behind hotel portals. A definite answer that the subscription is not active blocks at once; a timeout does not, and a signed cached licence keeps the app working for a month. The cost of being wrong is about one month of one subscription.

how it went

  1. 9 August 2026

    Scaffold

    The desktop shell with React and TypeScript.

  2. 10 August 2026

    Pipeline end to end

    Script, voiceover, ffmpeg assembly and real video import, in one day.

  3. 11 to 16 August 2026

    Rebuild as a library

    One project holds many videos cut from a shared clip library, with an editable timeline, captions and subtitles.

  4. 17 to 21 August 2026

    Packaging and accounts

    Installers on CI, a self-test that speaks a line before a build is accepted, the sign-in gate and the cached licence.

  5. 27 to 30 August 2026

    Credit mode and CI budget

    Platform-paid provider keys, plus a Windows check on every push after a regression hid for five commits.

results

automated tests

494

267 in the Rust core and 227 in the frontend; the shipped binary is also made to load its model and speak a line before CI accepts the build

at v0.4.0, measured by the repository

3

tagged releases in 21 days

v0.2.0 on 19 August, v0.3.0 on 21 August, v0.4.0 on 30 August 2026

9 to 30 August 2026, measured by git tags

since launch v0.4.0 shipped on 30 August 2026 as an unsigned beta, with a browser timeline editor scoped into a repo of its own.

Want something like this?

Work that has to run on someone's own machine changes every answer: what ships in the installer, what it costs you, and what happens with no connection. Tell us where it has to run.

Build something like this

next

Assetbender