ContentOpen SourceFreeActiveMachine-verified· intermediate · ~20 min setup

OpenMontage: run a full AI video pipeline with zero paid APIs

Wire OpenMontage's scripting-to-composition pipeline using only free sources (Piper TTS for narration, Archive.org/NASA/Wikimedia for footage, Pexels for images) so you pay nothing for the orchestration layer, and validate the pipeline config before you run it.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 2/2 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone replacing a stack of paid AI-video subscriptions with a self-hosted pipeline. CI validates the pipeline config: a name, at least one stage with a tool from the OpenMontage toolset, a composer block with FFmpeg or Remotion, and the tts provider is set to piper (free) or a named paid provider. The actual git clone, make setup, and video generation are fenced.

Not for

  • Commercial products built on top without reading the AGPL-3.0 license, it requires source disclosure for distributed products
  • High-quality AI video generation without a paid model API or a local GPU, free sources cap at documentary-style real footage and local TTS quality

The Stack

Tested Against

calesthio/OpenMontage (2026-06)ruby@3.x (YAML stdlib)

Side effects & data flow

Network
none, local only
Writes
./pipeline.yaml
Credentials
none required

Prerequisites

  • Python 3.10+, FFmpeg, Node.js 18+ (for the actual run)
  • git clone https://github.com/calesthio/OpenMontage && make setup

Steps

  1. 1

    Author the pipeline config and validate it

    Write pipeline.yaml: a name, one or more stages each with a tool from OpenMontage's toolset, a composer (ffmpeg or remotion), and a tts block. Using piper as the TTS provider costs nothing. CI checks the config shape; the actual clone, setup, and pipeline run are fenced.

    cat > pipeline.yaml <<'YAML'
    name: documentary-zero-cost
    stages:
      - tool: script_writer
        source: prompt
      - tool: asset_fetcher
        sources:
          - archive_org
          - nasa
          - pexels
      - tool: editor
        transitions: crossfade
    composer: ffmpeg
    tts:
      provider: piper
      voice: en_US-lessac-medium
    YAML
    ruby -ryaml -e '
    c = YAML.safe_load(File.read("pipeline.yaml")) || {}
    abort "BAD: name is required" if c["name"].to_s.empty?
    stages = c["stages"]
    abort "BAD: stages must be a non-empty list" unless stages.is_a?(Array) && !stages.empty?
    stages.each_with_index do |s, i|
      abort "BAD: stage " + i.to_s + " must have a tool" if s["tool"].to_s.empty?
    end
    allowed_composers = ["ffmpeg", "remotion"]
    abort "BAD: composer must be ffmpeg or remotion" unless allowed_composers.include?(c["composer"].to_s)
    tts = c["tts"] || {}
    abort "BAD: tts.provider is required" if tts["provider"].to_s.empty?
    free = tts["provider"] == "piper"
    puts "pipeline OK: " + stages.length.to_s + " stage(s), composer " + c["composer"].inspect + ", TTS " + tts["provider"].inspect + (free ? " (free/local)" : " (paid API)")
    '
  2. 2

    Run the pipeline (fenced)

    Clone the repo and run make setup, then point your coding assistant at the pipeline config. For zero-cost output use piper TTS and archive sources; swap in paid model APIs only if quality requires it. If distributing a product built on OpenMontage, read the AGPL-3.0 obligations before you ship. The setup and generation run are fenced.

Eval, 2 fixtures

Last passed: verified today
  • pipeline-okcontainstimeout 30s · max $0

    Expected: pipeline OK:

  • clean-exitexit_codetimeout 30s · max $0

    Expected: 0

Results

OpenMontage replaces the paid orchestration layer (the subscriptions you pay for video scripting, editing, and composition tooling), not the underlying model calls. With free-tier providers (Piper TTS, open media archives, Pexels), you can produce narrated documentary-style videos at zero API cost. Paid model APIs (video generation, premium voice) improve quality but are optional. AGPL-3.0 means all modifications must be disclosed if you distribute a product built on it.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Related workflows

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).