iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
Helios가 CSS 키프레임·GSAP·Framer Motion·Three.js·캔버스를 프레임별 MP4로 변환, 상업용 무료
Helios renders CSS keyframes, GSAP, Framer Motion, Three.js and canvas to MP4, frame by frame, by driving the browser’s own animation clock. Free for commercial use.
미디어TypeScript · HTMLGitHub @BintzGavin온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Programmatic video creation with web technologies you already know. CSS animations just work.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Status: 🚀 Beta
Helios is developed with AI-assisted tooling. A fleet of specialized agents handles planning, implementation, testing, and documentation — orchestrated through a structured planning-execution cycle. Human oversight directs architecture and reviews all changes before merge.
The agent prompts that drive this workflow are available in docs/prompts/ for transparency.
For project governance and roadmap, see docs/AGENTS.md.
A programmatic video engine that runs on web standards.
Stop reinventing animation in JavaScript. Use the platform.
The Thesis • Quick Start • Why Helios? • Documentation • Roadmap
The fastest way to get started. We offer guided skills so that with one prompt into Claude Code, Cursor, or Opencode, Openclaw, Pi, Hermes, etc. you can generate one of six professional video types:
1 prompt → • Launch announcement • Promo • Explainer • Product demo • Testimonial • Social cut
Run this in an existing repo (preferably your marketing site):
npx skills add BintzGavin/helios
Then tell your agent something like:
generate a product demo video using the guided helios skill.
npm install @helios-project/core @helios-project/player
import { Helios } from '@helios-project/core';
// Create a 10-second video at 30fps
const helios = new Helios({
duration: 10,
fps: 30,
autoSyncAnimations: true
});
// Subscribe to frame updates
helios.subscribe(({ currentFrame, duration, fps }) => {
const progress = currentFrame / (duration * fps);
// Use progress (0-1) to drive your animations
document.querySelector('.my-element').style.opacity = progress;
});
// Let the renderer (and the player) drive it
window.helios = helios;
// Control playback
helios.play();
helios.pause();
helios.seek(150); // Jump to frame 150
/* Your existing CSS animations just work */
@keyframes fadeIn {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
.my-element {
animation: fadeIn 1s ease-out;
}
<!-- Drop-in Web Component works anywhere -->
<helios-player src="./composition.html" width="1920" height="1080"></helios-player>
<script type="module" src="@helios-project/player"></script>
npx @helios-project/cli render ./composition.html -o output.mp4
The duration, frame rate and size come from the composition. Any page that draws its own frames renders too, with no Helios import. The renderer calls window.renderAt(t) once per frame, with t in seconds:
<canvas id="c" width="1920" height="1080"></canvas>
<script>
const ctx = document.getElementById('c').getContext('2d');
window.renderAt = (t) => {
ctx.fillStyle = '#111'; ctx.fillRect(0, 0, 1920, 1080);
ctx.fillStyle = '#f5b700'; ctx.fillRect(200 + 300 * t, 480, 120, 120);
};
</script>
npx @helios-project/cli render ./page.html -o output.mp4 --duration 5 --audio song.mp3
The history of software teaches a consistent lesson: betting on native platform capabilities almost always beats simulation.
.animate() and JS-driven motion<video> and <audio> killed FlashWhen the platform catches up, the abstractions built to work around it become legacy debt.
Remotion solved programmatic video by treating the browser as a static image generator. Stop time. Inject a frame number. Render. Screenshot. Repeat 30 times per second.
// Remotion: The browser is a screenshot machine
function MyComponent() {
const frame = useCurrentFrame(); // Frame number injected from outside
const opacity = interpolate(frame, [0, 30], [0, 1]); // YOU calculate every value
return <div style={{ opacity }}>Hello</div>;
}
This works. It's deterministic. Remotion is brilliant engineering, battle-tested, and has earned its place as the market leader.
But look at what this architecture requires: reimplementing animation in JavaScript. The browser has a world-class animation engine—CSS @keyframes, hardware-accelerated compositing, the Web Animations API—but the frame-based model says: "Ignore all of that. We'll simulate it ourselves."
Your CSS animations? Broken—the system clock drifts during render.
Your GSAP timelines? Need custom integration.
The browser's C++ compositor? Bypassed entirely.
This is a simulation-based architecture. It works despite the browser, not with it.
Helios takes a different bet: what if we drove the browser's native animation engine instead of replacing it?
The approach varies by context:
For Production Rendering: Helios uses the Chrome DevTools Protocol (CDP) to virtualize time at the environment level. The Emulation.setVirtualTimePolicy command detaches the browser's internal clock from wall-clock time, allowing the renderer to advance time frame-by-frame as fast as the CPU allows. The browser's native animation engine calculates all interpolated values—we just tell it what time it is.
For Preview/Development: Helios uses the Web Animations API to seek individual animations. Every Animation object has a writable .currentTime property:
// Seek all animations to 1.5 seconds
document.getAnimations().forEach(anim => {
anim.currentTime = 1500;
anim.pause();
});
When you set animation.currentTime, the browser's C++ rendering engine recalculates all interpolated values. Hardware-accelerated. Using the same optimized code that powers every CSS animation on the web.
The result for developers:
/* Your existing CSS. No changes. */
@keyframes fadeIn {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
.my-element {
animation: fadeIn 1s ease-out forwards;
}
// Helios drives the browser's animation engine
const helios = new Helios({ duration: 10, fps: 30, autoSyncAnimations: true });
helios.seek(45); // All CSS/WAAPI animations instantly update to frame 45
That's it. Your CSS animations, your GSAP timelines, your Framer Motion springs—they work because the browser is doing the animation, not JavaScript.
This is a native-aligned architecture, but it's not without constraints:
document.timeline.currentTime as read-only. We work around this via protocol-level control, not by violating the spec.But if history is any guide—native mobile vs PhoneGap, CSS Grid vs JavaScript layouts, fetch() vs jQuery—native-aligned architectures eventually win.
We named this engine after the sun because video is, fundamentally, light over time.
No proprietary APIs to learn. Your existing CSS animations, GSAP timelines, and Motion/Framer Motion animations work out of the box.
| Helios | Remotion |
|---|---|
@keyframes fadeIn { ... } | interpolate(frame, [0, 30], [0, 1]) |
| Standard CSS, WAAPI | Custom hooks on every frame |
| Any animation library | Must use their helpers |
// React
const { currentFrame } = useVideoFrame();
// Vue
const { currentFrame } = useVideoFrame();
// Svelte
$: currentFrame = $videoFrame.currentFrame;
// Vanilla JS
helios.subscribe(state => console.log(state.currentFrame));
Build and sell products with Helios. No per-seat fees, no render limits.
| Helios | Remotion | |
|---|---|---|
| Solo developer | Free | Free |
| 4-person team | Free | $100/mo |
| 10-person team | Free | $250/mo |
| 100 renders/mo | Free | +$10/mo |
The development of Helios is guided by foundational principles that inform every architectural decision:
As AI agents become primary users of developer tools, Helios prioritizes Agent Experience (AX)—the holistic experience AI agents have when using our APIs and platform. Great AX means:
DX and AX are deeply aligned—what works for agents works for humans too.
Start with a simple composition, preview instantly in your browser, and only worry about rendering infrastructure when you're ready to ship.
Pure TypeScript with zero framework dependencies. Use React, Vue, Svelte, or vanilla JS—whatever you're already comfortable with.
Native browser APIs over custom implementations. CSS animations, Web Animations API (WAAPI), and standard DOM APIs. Your existing web development skills transfer directly.
Hardware-accelerated rendering, in-memory data piping, and WebCodecs support for canvas-heavy work. Performance is there when you need it.
Helios is designed from the ground up for AI-assisted development. Whether you're using Claude, Cursor, GitHub Copilot, or autonomous agent systems, Helios provides first-class support.
AI-Ready Documentation:
/llms.txt.md to any doc URL for raw markdown (planned)Helios uses a Black Hole Architecture where AI agents continuously pull the codebase toward this documented vision. If you're building similar systems:
docs/status/[ROLE].md tracks each domain's progressdocs/PROGRESS.md records completed workdocs/BACKLOG.md tracks planned features.sys/llmdocs/context-*.md provides architectural summariesSee docs/prompts/ for the complete agent orchestration system.
// Check environment capabilities (useful for AI debugging)
const report = await Helios.diagnose();
console.log(report);
// {
// waapi: true, // Web Animations API
// webCodecs: true, // VideoEncoder support
// offscreenCanvas: true,
// userAgent: "..."
// }
Both Helios and Remotion enable programmatic video creation. Here's an honest comparison:
| Helios | Remotion | |
|---|---|---|
| Architecture | Native-aligned (drive the browser's engine) | Simulation-based (treat browser as screenshot machine) |
| Animation Calculation | Browser's C++ compositor | JavaScript on every frame |
| Time Control | CDP virtual time (production) / WAAPI seeking (preview) | React state propagation |
CSS @keyframes | ✅ Work natively | ❌ Clock drifts during render |
| Browser Dependency | Chromium (CDP required) | Any browser (pure JS) |
| Historical Analog | Native apps, CSS Grid, fetch() | PhoneGap, layout.js, jQuery AJAX |
| Bet | Platform capabilities will mature | Abstraction layer will remain necessary |
| Feature | Helios | Remotion |
|---|---|---|
| Framework | Any (React, Vue, Svelte, vanilla) | React only |
| Animation | CSS, WAAPI, any library | interpolate(), spring() hooks |
| Learning curve | Use what you know | Learn Remotion APIs |
| Maturity | 🟡 Beta | 🟢 Production-ready |
| Pricing | Free (ELv2) | Free ≤3 devs, then $100+/mo |
| Studio IDE | 🟢 Beta | 🟢 Available |
| Distributed rendering | 🟡 Beta (Local Orchestrator) | 🟢 Lambda, Cloud Run |
| Captions/subtitles | 🟡 Standard (SRT) | 🟢 Built-in |
| Audio mixing | 🟢 Client-side (WebCodecs) | 🟢 Advanced |
| MCP Server | 🟢 helios mcp: preview in the conversation, verify, render, analyse audio | 🟢 Available |
| Agent Skills | 🟢 npx skills add, Claude Code and Codex plugin | 🟢 npx skills add |
| Transitions library | 🟢 Available | 🟢 @remotion/transitions |
| Sequence/Series | 🔴 Not yet | 🟢 Built-in components |
Helios is designed with a modular architecture that separates logic from presentation.
The core is an instantiable JavaScript class that manages all state (currentFrame, duration, isPlaying, inputProps), exposes methods (play, pause, seek), and provides subscription-based reactivity. This decouples logic from any UI framework.
Lightweight packages expose the headless engine idiomatically for each framework:
useVideoFrame() hook$ syntaxThe <helios-player> Web Component encapsulates the preview UI. It uses a sandboxed iframe internally for isolation, ensuring it works in any HTML page without conflicts.
Helios drives the browser's native animation engine rather than simulating animation in JavaScript. The mechanism varies by context:
Uses Chrome DevTools Protocol to virtualize time:
CDP: Emulation.setVirtualTimePolicy({ policy: 'advance', budget: 33.33 })
→ Browser advances internal clock by exactly 33.33ms
→ All CSS/WAAPI animations update to new time
→ Layout and paint complete
→ Frame captured
This is deterministic: the browser cannot advance until each frame is fully rendered, regardless of scene complexity.
Uses WAAPI's writable Animation.currentTime:
// Seek all animations to target time
document.getAnimations().forEach(anim => {
anim.currentTime = targetTimeMs;
anim.pause();
});
This is an O(N) operation over animations, but lets developers preview without running a headless browser.
Advantages:
Canvas MVP Note: For canvas compositions (Three.js, Pixi.js), Helios provides
currentTimeto the canvas's internal render loop rather than controlling WAAPI.
Dual-path architecture selects the optimal strategy:
GPU acceleration is mandatory for competitive performance. The library ships with optimized browser launch flags and includes helios.diagnose() to verify hardware acceleration.
child_process.spawn (no wrappers)image2pipe demuxer (no temp files)WYSIWYG preview using the same bundled composition code as the final render:
requestAnimationFrame loop| Component | Choice | Rationale |
|---|---|---|
| Browser Automation | Playwright | Auto-waiting, cross-browser support, superior debugging (Trace Viewer, Inspector) |
| Video Encoding | FFmpeg (spawn) | Direct child_process.spawn for maximum control, stability, and performance |
| Language | TypeScript | Type safety, improved DX, maintainable codebase |
| Bundling | Vite/Rollup | Modern, fast, optimized for building libraries |
Beta: Architecture stable, API maturing, suitable for early adopters.
Helios class with timeline controlinterpolate, spring)<helios-player> Web Componenthelios.diagnose() environment checksSee docs/BACKLOG.md for the full task list.
The authoritative roadmap and project direction are defined in AGENTS.md.
This document serves as the single source of truth for:
Please refer to AGENTS.md to understand where Helios is going and how to contribute.
A robust deployment strategy is essential for a server-side rendering tool. The architecture is designed to support both simple, single-machine deployments and highly scalable, distributed rendering on cloud infrastructure.
Docker is the ideal packaging and deployment mechanism for the rendering engine. It ensures a consistent, reproducible environment containing Node.js, a headless browser, FFmpeg, and all necessary dependencies for GPU acceleration. The container can be designed as a microservice, exposing an HTTP endpoint to accept render jobs.
The architecture is designed to be container-native and platform-agnostic, giving users a choice of serverless platforms that fit their needs.
The success of a distributed rendering architecture hinges on the video concatenation strategy. Merging video chunks must be done without a costly re-encode. FFmpeg offers several methods, but only one is suitable:
| Method | How it Works | Supported Formats | Use Case for This Project |
|---|---|---|---|
| Concat Demuxer | Operates at the file level from a text file list. Can stream copy if codecs match. | All formats, including MP4. | Recommended. The only method for losslessly stitching MP4 chunks. |
| Concat Protocol | Operates at the bitstream level. | Simple stream formats (e.g., MPEG-2 PS). Not compatible with MP4. | Unsuitable. Will fail or corrupt MP4 files. |
| Concat Filter | A complex filter that decodes and re-encodes frames. | All formats. | Unsuitable. Re-encoding is slow and causes quality loss. |
The distributed workflow is as follows:
N logical chunks (e.g., frames 0-299, 300-599, etc.).N parallel workers (e.g., Lambda functions), assigning each a frame range.chunk_1.mp4, chunk_1.aac) and uploads them to a shared location like S3.concat demuxer to perform a fast, lossless merge of the video and audio chunks into the final output file.git clone https://github.com/gavinbintz/helios.git
cd helios
npm install
npm run dev
npm test # All tests
npm test -w packages/core # Core package only
npm run render:canvas-example # Test render pipeline
A seamless local development workflow is crucial for productivity. We recommend a hot-reloading environment for developers working on the library itself or on compositions using it.
npm link or yarn link to link your local library source code to a sample project (e.g., a Vite + React app). Running the library's bundler in "watch" mode alongside the sample project's dev server provides a near-instant feedback loop.--headed flag. Often, simply watching the automation unfold is the fastest way to spot an issue.--debug flag can launch the browser with a remote debugging port open. This allows you to connect the familiar Chrome DevTools to the headless instance to inspect the DOM, view console logs, and debug JavaScript live.Helios Engine is licensed under the Elastic License 2.0 (ELv2). This license is designed to encourage widespread adoption while protecting our ability to build a SaaS platform.
The agent skills in skills/ and the agent plugin in plugins/helios/ (its manifests, assets and the make-video skill) are licensed under the Apache License 2.0; each folder has its own LICENSE file. The rest of this repository is under ELv2 unless a file or folder says otherwise.
You Can:
You Cannot:
What This Means in Practice:
This license is perfect for founders building video platforms. You can:
You just can't offer Helios Engine itself as a managed/hosted service to others.
We chose Elastic License 2.0 because:
This license allows us to build a SaaS platform around Helios while enabling a thriving ecosystem of products built on top of it.
If you need to offer Helios Engine as a managed service or have questions about commercial licensing, please contact us.
See LICENSE for full text.
We welcome contributions! This project is primarily developed by an autonomous AI agent fleet, but human contributions are valued.
☀️ Video is light over time.
Documentation • Examples • Backlog • Progress
Built with AI agents by Gavin Bintz