cetus

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 8, 2026 License: AGPL-3.0, AGPL-3.0-or-later, AGPL-3.0, + 1 more

README

Cetus

Cetus is a self-contained CLI tool that renders HTML compositions into video files. It ships a platform-specific headless browser and static ffmpeg binary inside one Go executable, extracts them once into ~/.cenvero-cetus, and renders frames deterministically through Chrome DevTools Protocol.

Install

curl -fsSL https://cetus.cenvero.org/install | sh

Prerelease testers can install a channel-specific build:

curl -fsSL https://cetus.cenvero.org/install-beta | sh
curl -fsSL https://cetus.cenvero.org/install-rc | sh

Usage

cetus render cetus.html -o out.mp4
cetus render cetus.html -o out.webm

# Override HTML defaults only when needed
cetus render cetus.html -o out.mp4 --fps 60
cetus preview cetus.html
cetus update check
cetus update apply
cetus version

cetus.html is the recommended default filename. Any HTML path works. Self-updates stay on the installed release channel by default. Stable builds check stable releases, beta builds check beta releases, and RC builds check RC releases.

During render, Cetus prints stage updates and frame progress to stderr: asset preparation, composition parsing, browser launch, frame count, elapsed time, ETA, and final encoding. The final Rendered ... line remains on stdout for scripts. Preview prints the served URL, watched directories, browser launch, and live-reload events.

If Cetus is installed with Homebrew, updates are handled by Homebrew:

brew update && brew upgrade cenvero-cetus

--no-gpu disables GPU acceleration. GPU remains enabled by default so WebGL, Three.js, and shader-based compositions work on platforms with usable graphics drivers.

Composition Format

<div id="root"
     data-composition-id="intro"
     data-width="1920"
     data-height="1080"
     data-duration="5"
     data-fps="30">
  <h1 class="clip"
      data-start="0.5"
      data-duration="4"
      data-track-index="0">
    Hello World
  </h1>
</div>

The root element requires:

  • data-composition-id
  • data-width
  • data-height
  • data-duration

Timed elements use class="clip" plus:

  • data-start
  • data-duration
  • data-track-index
  • optional data-volume

GSAP timelines should be paused and registered on window.__timelines.

<script>
  window.__timelines = window.__timelines || [];
  const tl = gsap.timeline({ paused: true });
  tl.from("#title", { opacity: 0, duration: 0.6 });
  window.__timelines.push(tl);
</script>

Development

go test ./...
go run ./cmd/cetus version

Release builds require real embedded assets. Generate them for a target platform:

./scripts/prep-assets.sh linux amd64

The checked-in .br files are placeholders so the package structure exists in a fresh checkout. They must be replaced before any real render build.

License

Copyright (C) 2026 Cenvero email@cenvero.org Copyright (C) 2026 Shubhdeep Singh shubhdeep@cenvero.org shub@cenvero.org

AGPL-3.0-or-later. See LICENSE and COPYING.

Directories

Path Synopsis
cmd
cetus command
internal
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL