█

AI/TLDR

waoowaoo

A self-hosted canvas for AI image and video work, with an assistant that develops the brief beside it

Video GenerationOpen core
Language
TypeScript
License
Elastic License 2.0
$docker compose version # must be >= 2.24.4

Overview

waoowaoo is a self-hosted creative workspace for AI image and video work. Instead of a prompt box that returns one file at a time, it gives you a canvas: you upload reference material, organise it alongside the images and videos you generate, and inspect and refine results in place. A right-hand Assistant sits beside the canvas to develop the brief with you and create assets inside an ongoing project, so the thinking and the output live in the same place.

Generation is model-aware rather than generic. The controls it offers — aspect ratio, duration, resolution, reference roles, and first-frame, first-and-last-frame or reference-image modes — depend on which model you selected, because not every model accepts every one of them. Refining an existing result produces a new version while the original is retained, so a project accumulates variants rather than overwriting them.

It talks to models through OpenRouter using your own key, which you enter in the application's API configuration after launching; provider calls are billed to your account. Project data and media stay local, in the stack's own MySQL database and a private MinIO bucket — prompts and references are sent to the provider only for the AI tasks you ask for.

The distribution is a Docker Compose stack of prebuilt images: Next.js 16 and React 19 for the application, MySQL with Prisma, Temporal for durable execution, Redis, private MinIO for media, NextAuth for sign-in, and Caddy terminating HTTPS in front. From v0.5.0-beta.1 it is licensed under the Elastic License 2.0 — source-available rather than OSI open source, allowing personal use, internal business use, modification and redistribution, but requiring separate permission to offer hosted or managed access to a substantial set of its features to third parties. The maintainers label it a preview release and develop it in-house, reviewing external pull requests as suggestions rather than merging them directly.

What it does

  • A canvas that holds uploaded references and generated images and videos together in one project, rather than one generation at a time
  • A side Assistant that develops the brief and creates assets within the project you already have open
  • Model-aware generation controls — aspect ratio, duration, resolution and reference roles — that follow what the selected model actually supports
  • First-frame, first-and-last-frame and reference-image modes where the chosen model offers them
  • Refine an existing result into a new version while keeping the original
  • Bring-your-own-key through OpenRouter, so provider spend stays on your account
  • Local project storage: MySQL for data, private MinIO for media, with prompts and references leaving only for the tasks you request

Getting started

waoowaoo is distributed as prebuilt Docker images driven by two Compose files. Take every file from the SAME published release — preview releases do not appear under GitHub's "latest stable" link, and mixing `main` with an older release tag is explicitly unsupported. The full procedure is in `docs/INSTALL.md`.

Check the host tools

You need Docker Engine or Docker Desktop running Linux containers, Compose 2.24.4 or newer (it must support the `!reset` merge tag), Git and a POSIX shell, plus `flock`, which the Worker rollout script requires. On Windows, run the whole thing inside WSL2 with Docker Desktop integration.

bashbash
docker compose version   # must be >= 2.24.4
command -v flock git

Take the source at a release tag

Clone or extract the chosen release into a NEW directory and Compose project. The installed tree must contain `.env.example`, both Compose files, `docker/caddy/Caddyfile` and `scripts/temporal/worker-rollout.sh`.

bashbash
git clone --branch <release-tag> https://github.com/waooAI/waoowaoo.git waoowaoo
cd waoowaoo
cp .env.example .env

Fill in .env

Pin the application and Codex runtime images to the release's immutable `repository@sha256:…` digests — not `latest`, and not the all-zero digests the example file ships with. Generate your own random values for every secret, and keep `API_ENCRYPTION_KEY` across upgrades or saved provider credentials become unreadable.

bashbash
COMPOSE_FILE=docker-compose.yml:docker-compose.self-hosted.yml
COMPOSE_PATH_SEPARATOR=:
DEPLOYMENT_EDITION=self-hosted
SELF_HOSTED_HOST=localhost
SELF_HOSTED_HTTPS_PORT=1443
APP_HOST_PORT=13000
# APP_IMAGE / TEMPORAL_WORKER_*_IMAGE / CODEX_RUNTIME_IMAGE: release digests
# Generate: MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD, REDIS_PASSWORD,
# TEMPORAL_MYSQL_PASSWORD, MINIO_ROOT_PASSWORD, MINIO_APP_SECRET_KEY,
# NEXTAUTH_SECRET, CRON_SECRET, API_ENCRYPTION_KEY

Bootstrap and start

Validate quietly so the resolved config (which contains your secrets) is not printed, pull both image digests, establish the first Worker version with the rollout script, then bring the stack up.

bashbash
docker compose config --quiet
docker pull <application-repository@sha256:digest>
docker pull <runtime-repository@sha256:digest>
sh scripts/temporal/worker-rollout.sh bootstrap blue
docker compose up -d
sh scripts/temporal/worker-rollout.sh status
docker compose ps -a

Open it and add your key

Caddy is the browser entry point, so open `https://localhost:1443` — port 13000 only redirects HTTP. Then open your profile's API configuration and paste your OpenRouter key there; it should never go into a chat message or a support log. Running from source in development instead serves `http://localhost:3001`.

bashbash
open https://localhost:1443

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Reach for it when an image or video project needs references, variants and finished assets kept together instead of scattered across download folders
  • Reach for it to iterate on a shot — refine a result into a new version — while keeping every earlier take
  • Reach for it when you want one workspace across several image and video models rather than a separate tab per provider
  • Reach for it when project data and media have to stay on infrastructure you control, with only the prompts and references for a requested task leaving the machine

How waoowaoo compares

waoowaoo alongside other open-source video generation tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
MoneyPrinterTurbo★ 134kA self-hosted WebUI, API and CLI that turns one topic or keyword into a finished short video — script, stock or generated footage, voiceover, subtitles and music.
OpenMontage★ 70.9kAn agentic video production system that gives a coding assistant 12 pipelines and 100+ tools to research, script, generate and render a video end to end.
HyperFrames★ 70kHeyGen's HTML-to-video renderer: author a composition in HTML, CSS and JS, preview it in a browser, then render the same input to a deterministic MP4 locally or on AWS Lambda.
Open Generative AI★ 31.3kMIT-licensed desktop and web studio for AI image, video and lip-sync generation that runs hosted models through the Muapi.ai API, with optional local image models in the desktop app.
Hypit★ 24.8kA markup language and compiler that lets a coding agent rebuild a reference video as an editable workflow — footage, captions, B-roll and effects anchored to words rather than timestamps — and render variants in one command.
Toonflow★ 19kInfinite-canvas workbench for AI short-drama production, taking a novel through chapter events, script, storyboards and video nodes.
waoowaoo★ 14.7kA self-hosted canvas for AI image and video work, with an assistant that develops the brief beside it
Palmier Pro★ 14.6kA Swift-native macOS video editor with generative models in the timeline and a built-in MCP server, so Claude, Codex or Cursor can edit the open project alongside you.