Skip to main content
Glama

Uploop Vided is an AI-native video composition and VFX engine. Built on uploop-ge for GPU rendering and uploopjs for HyperGraph orchestration. Exposes its engine as AI-callable tools (MCP) — the AI acts as the director, uploop-vided is the VFX engine.

Quick Start

git clone https://github.com/iuploop/uploop-vided.git
cd uploop-vided
pnpm install
pnpm dev

Open http://localhost:3002 — you'll see the examples gallery.

🌐 Live demo: iuploop.github.io/uploop-vided

Related MCP server: VidMCP

Vided DSL — Component Tag Syntax

Uploop Vided uses an HTML-like tag syntax for video composition. Compose timelines, tracks, clips, 3D scenes, and effects using familiar declarative tags — no imperative API required.

Video Composition

import { vided } from '@uploop/vided'

const { timeline, composition } = vided`
  <Timeline name="My Video" width=${1920} height=${1080} fps=${30}>
    <Track type="video">
      <Clip source="intro.mp4" inPoint=${0} outPoint=${5} />
      <Clip source="content.mp4" inPoint=${5} outPoint=${12} opacity=${1} />
    </Track>
    <Track type="audio" muted=${false}>
      <Clip source="music.mp3" inPoint=${0} outPoint=${12} volume=${0.8} />
    </Track>
    <Track type="text">
      <Clip source="My Title" inPoint=${0} outPoint=${12} y=${80} opacity=${1} />
    </Track>
  </Timeline>
`

// Render with html-video:
import { renderVideo } from '@uploop/html-video'
await renderVideo({ composition, output: 'output.mp4' })

3D Scene Composition (uploop-ge)

import { vided } from '@uploop/vided'

const { scene, renderer } = vided`
  <Scene width=${1920} height=${1080} background="gradient">
    <Camera type="orbit" distance=${5} angle=${-0.4} pitch=${0.35} />
    <AmbientLight color="#334" intensity=${0.5} />
    <DirectionalLight direction=${[0.5, 0.4, 0.7]} color="#fff" intensity=${1.2} />
    <Model src="brain.glb" position=${[0, 0, 0]} scale=${1} />
    <Shape type="sphere" radius=${1} position=${[0, 1, 0]} color="#f44" />
    <Skybox top="#4a8fcf" mid="#c8dcf0" bottom="#1a3050" />
    <PostFX bloom=${true} tonemap=${true} />
  </Scene>
`

Hybrid: Video + 3D

import { vided } from '@uploop/vided'

const { timeline, composition } = vided`
  <Timeline name="3D Product Ad" width=${1920} height=${1080} fps=${30}>
    <Track type="video">
      <Clip source="background.mp4" inPoint=${0} outPoint=${30} />
    </Track>
    <Track type="3d">
      <Scene>
        <Camera type="orbit" distance=${4} angle=${-0.4} />
        <Model src="product.glb" />
        <DirectionalLight direction=${[0.5, 0.6, 0.4]} intensity=${1.5} />
      </Scene>
    </Track>
    <Track type="text">
      <Clip source="New Arrival" inPoint=${5} outPoint=${15} y=${80} />
    </Track>
    <Track type="audio">
      <Clip source="soundtrack.mp3" inPoint=${0} outPoint=${30} />
    </Track>
  </Timeline>
`

Tag Reference

Tag

Description

Key Props

<Timeline>

Multi-track timeline container

name, width, height, fps

<Track>

Single track (video/audio/text/3d)

type, muted, volume

<Clip>

Media clip with time range

source, inPoint, outPoint, opacity, scale, x, y, rotation

<Sequence>

Sequential timeline player

timelines, json

<Scene>

3D scene (uploop-ge)

width, height, background

<Camera>

Viewpoint camera

type (orbit/perspective), distance, angle, pitch, fov

<Model>

glTF 3D model

src, position, rotation, scale

<Shape>

Primitive geometry

type (sphere/cube/plane), radius/size, color

<DirectionalLight>

Parallel light source

direction, color, intensity

<AmbientLight>

Uniform fill light

color, intensity

<PointLight>

Omni-directional light

position, color, intensity, range

<Skybox>

Background environment

top, mid, bottom colors or 6-face cube URLs

<PostFX>

Post-processing pipeline

bloom, tonemap, vignette, ssao

<Particles>

Particle system

count, size, color, lifetime

Imperative API (no tags)

import { Timeline, Track, Clip } from '@uploop/timeline'
import { Compositor, Layer, createTransition } from '@uploop/compositor'
import { renderVideo } from '@uploop/html-video'

const timeline = new Timeline({ fps: 30, width: 1920, height: 1080 })
timeline.addTrack(new Track({ id: 'main', type: 'video', clips: [
  new Clip({ id: 'intro', source: 'intro.mp4', inPoint: 0, outPoint: 5 }),
  new Clip({ id: 'body',  source: 'body.mp4',  inPoint: 3, outPoint: 10 }),
]}))

const fade = createTransition('fade', { duration: 1 })
await renderVideo({ composition: createTimelineComposition({ timeline }), output: 'output.mp4' })

šŸ“– Full DSL reference: docs/VIDED-DSL.md

Why Uploop Vided?

Remotion

Motion Canvas

Uploop Vided

Framework

React

Generator functions

Component Tags (HTML-like)

License

Source-available, paid ≄5 devs

MIT

MIT — always free

GPU

Via Three.js (external)

Canvas2D only

Native WebGL2 + WebGPU (uploop-ge)

AI-native

Manual API calls

āŒ

MCP server + tool registry + advisor

3D Scenes

External React-Three-Fiber

āŒ

Built-in <Scene>, <Model>, <Skybox>

Timeline

<Sequence>

Thread.main()

Multi-track <Timeline> + <Track> + <Clip>

Transitions

CSS/JS

Tween functions

36 GPU-ready transition types

Compositor

React component stacking

Layout nodes

Layers with blend modes, masks, effects

Output

ffmpeg (Chromium)

ffmpeg (Chromium)

WebCodecs + ffmpeg + streaming (WebRTC/RTMP)

Editor UI

Remotion Studio (React)

Editor (Electron)

5 Custom Elements (player, timeline, inspector, etc.)

CLI

npx remotion

npm start

uploop-video init/dev/render/serve

HyperGraph

āŒ

āŒ

Typed graph of nodes — inspectable by AI

Packages

Package

Description

Status

@uploop/media

Image/video/audio decode, frame extraction, codec registry

āœ…

@uploop/timeline

Multi-track timeline, clips, keyframes, easing, sequence

āœ…

@uploop/compositor

GPU-accelerated layer compositing, 36 transitions, 8 blend modes

āœ…

@uploop/vided

Component tag DSL — HTML-like composition for video + 3D

āœ…

@uploop/common-elements

72 reusable UI components, hooks, and graphics primitives

āœ…

@uploop/toolset

AI-callable tool registry + OpenAI-compatible advisor + MCP server

🟔

@uploop/output

WebCodecs encoder, stream output, export presets

🟔

@uploop/vided-ui

5 Web Components: player, timeline editor, preview, inspector, library

āœ…

@uploop/html-video

Remotion-style HTML → MP4 via Puppeteer + ffmpeg

āœ…

@uploop/cli

CLI: uploop-video init/dev/render/serve/info/list

āœ…

@uploop/project

Project management: folders, config, assets, renders

āœ…

@uploop/editor

Standalone editor workspace (launch via CLI)

āœ…

12 packages — all MIT licensed, pure ESM.

AI-Native: The AI is the Director

pnpm uploop-video serve --port 3004
// POST /mcp → { "method": "tools/list" }
[
  { "name": "timeline.addTrack", "parameters": { "type": { "enum": ["video","audio","image","text","3d"] } } },
  { "name": "timeline.addClip",  "parameters": { /* inPoint, outPoint, source, props */ } },
  { "name": "scene.create",      "parameters": { /* width, height, background */ } },
  { "name": "scene.addModel",    "parameters": { /* src, position, rotation, scale */ } },
  { "name": "compositor.renderFrame", "parameters": { /* time, width, height */ } },
  { "name": "output.encode",     "parameters": { /* format, codec, bitrate */ } },
]

Architecture

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│                    uploopjs (UI Layer)                    │
│  @uploop/html — declarative component model             │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│                  uploop-vided (VFX Layer)                 │
│  vided DSL → timeline → compositor → output → html-video │
│  common-elements → scene → camera → model → postfx       │
│  project → cli → editor → toolset → vided-ui             │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│                   uploop-ge (GPU Layer)                   │
│  math → geometry → shader → renderer → scene → physics   │
│  WebGL 2.0 + WebGPU engine from scratch                  │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

Docs

Document

Description

VIDED-DSL.md

Full component tag reference — all tags, props, patterns

PLANNING.md

Package map, dependency graph, AI toolset design

ARCHITECTURE.md

Composition pipeline, protocols

TODO.md

Living task list — phases, status

Examples

63 interactive examples organized by category:

Category

Count

Description

examples/basic/

20

Core timeline, compositor, transitions, effects

examples/advanced/

10

Calculus, geometry, physics, chemistry

examples/multimedia/

20

Music, video effects, glitch, text animation

render-examples/

11

Render-ready compositions with common-elements (WebGL 3D)

examples/editor/

1

Full editor workspace

examples/render-demo/

1

Solar system educational video

License

MIT

F
license - not found
-
quality - not tested
A
maintenance

Maintenance

–Maintainers
<1hResponse time
–Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Build and run visual creative-production workflows from your AI agent.

  • Agentic video editing on real footage: cut, caption, reframe, score, and export at full quality.

  • A real timeline video editor for AI agents: journaled edits, FFmpeg/MLT rendering, exports

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/iuploop/uploop-vided'

If you have feedback or need assistance with the MCP directory API, please join our Discord server