# MotionActor

> A generator-driven actor runtime for deterministic, frame-based video.

## Docs

- [Introduction](https://docs-blume.motion.actor/docs): A generator-driven actor runtime for deterministic, frame-based video. Author motion once as code; resolve any frame as a pure function.

## Start here

- [Getting started](https://docs-blume.motion.actor/docs/getting-started): Install the packages, compile a scene, resolve a frame, and render it with Remotion.
- [How it works](https://docs-blume.motion.actor/docs/mental-model): Compile records authored intent once. Resolution reconstructs actor state for any frame from that record. Nothing else may influence a frame.

## Reference

### Reactivity

- [Reactivity](https://docs-blume.motion.actor/docs/reactivity): Writable state, computed reads, host-published values and coordination are separate primitives. Picking the right one is most of actor design.

#### State

- [Signals](https://docs-blume.motion.actor/docs/reactivity/signal): One writable value, and the five verbs that change it — set, tween, play, animate and transition.
- [Reactive signals](https://docs-blume.motion.actor/docs/reactivity/reactive-signal): One nested writable state bag whose individual leaves can be animated independently.
- [Groups](https://docs-blume.motion.actor/docs/reactivity/group): Namespaces related fields into one actor-facing surface.

#### Computed values

- [Derived values](https://docs-blume.motion.actor/docs/reactivity/derived): Read-only values computed from other actor reads, evaluated at resolution time.
- [Overlay and offset signals](https://docs-blume.motion.actor/docs/reactivity/overlay-signal): Layer temporary or additive motion over a base value without touching the base.

#### Inputs and coordination

- [Channels](https://docs-blume.motion.actor/docs/reactivity/channel): The host-published live-value primitive. Something outside the timeline owns the value and publishes it; resolution reads the publication.
- [Watch](https://docs-blume.motion.actor/docs/reactivity/watch): Actor-local reactive response — run code when a local read changes.
- [Events and subscribe](https://docs-blume.motion.actor/docs/reactivity/events-and-subscribe): Typed semantic coordination between actors, without reaching through to write another actor's state.

### Runtime

- [Runtime](https://docs-blume.motion.actor/docs/runtime): The scene APIs — authoring orchestration, frame resolution, the hosting model, effects and transitions.

#### Scenes

- [Scene orchestration](https://docs-blume.motion.actor/docs/runtime/scene-orchestration): Recording authored intent — spawning actors, consuming time, and composing concurrent work.
- [Compiled scenes](https://docs-blume.motion.actor/docs/runtime/compiled-scene): Resolving frames, reading typed exports, looking up actors, memoizing, and reflecting for editors.
- [Determinism](https://docs-blume.motion.actor/docs/runtime/determinism): What at(frame) may depend on, what breaks it, and how host-observed values enter without breaking it.

#### Structure

- [Structure and hosting](https://docs-blume.motion.actor/docs/runtime/structure-and-hosting): One hosting model — slots are named positions, child declarations are their occupants.
- [Slots](https://docs-blume.motion.actor/docs/runtime/slots): Named positions where children can be placed.
- [Children](https://docs-blume.motion.actor/docs/runtime/children): Declared occupants of slots, including owner-aware factories for live parent-to-child bindings.

#### Effects and transitions

- [Effects](https://docs-blume.motion.actor/docs/runtime/effects): Typed timeline records the renderer reads as overlays, with normalized progress resolved per frame.

### Actors

- [Actors](https://docs-blume.motion.actor/docs/actors): The two base classes, the built-in primitive actors, and the decorator that makes a command editor-facing.

#### Base classes

- [Actor](https://docs-blume.motion.actor/docs/actors/actor): The root runtime unit — state, commands, events, lifecycle hooks, and orchestration helpers.
- [LayoutActor](https://docs-blume.motion.actor/docs/actors/layout-actor): The default base class for renderable actors — canonical layout, transform, appearance and item groups, plus measured geometry.

#### Built-in actors

- [ClockActor](https://docs-blume.motion.actor/docs/actors/clock-actor): The built-in timer actor from @motionactor/primitives — elapsed time, stopwatch, pause and resume.
- [Camera2D](https://docs-blume.motion.actor/docs/actors/camera2d): The built-in 2D scene camera from @motionactor/primitives — pan, zoom, rotation, focus and follow.
- [ComponentActor](https://docs-blume.motion.actor/docs/actors/component-actor): The render-callback bridge from @motionactor/primitives, for drawing that does not warrant its own actor family.
- [Audio and sound effects](https://docs-blume.motion.actor/docs/actors/audio): The audio family from @motionactor/media — Audio for long-form clips, AudioManager and AudioTrack for one-shot sound effects.

#### Authoring

- [@command](https://docs-blume.motion.actor/docs/actors/command): Marks a generator method as an editor-facing command, with labels, typed parameter metadata and duration defaults.

## Build

### Guides

- [Guides](https://docs-blume.motion.actor/docs/guides): Task-shaped walkthroughs — authoring an actor, rendering a scene, and testing without a renderer.
- [Creating actors](https://docs-blume.motion.actor/docs/guides/creating-actors): Where an actor belongs, how to lay out its state, what its render path must be, and the rules that keep it reusable.
- [Rendering](https://docs-blume.motion.actor/docs/guides/rendering): Turning a compiled scene into pixels — SceneRenderer, defineSceneComposition, and the backend seam.
- [Testing](https://docs-blume.motion.actor/docs/guides/testing): Compile a real scene, resolve frames, assert on resolved actors — and never hand-build a fixture.

### Examples

- [Examples](https://docs-blume.motion.actor/docs/examples): Two worked examples — a minimal complete composition, and one real library actor exercising every core pattern.
- [Remotion card](https://docs-blume.motion.actor/docs/examples/remotion-card): A complete composition in two files — slots, a declared child, a channel, derived state, scene exports and the Remotion seam. Typechecked and behavior-checked in CI.
- [Desktop](https://docs-blume.motion.actor/docs/examples/desktop): One real library actor end to end — writable state, derived presentation, slot hosting, and generator commands.

## Ecosystem

- [Packages](https://docs-blume.motion.actor/docs/packages): What each @motionactor/* package owns, and which ones an application actually installs.
- [Component library](https://docs-blume.motion.actor/docs/component-library): The MotionActor actor families, distributed as a shadcn registry you install into your own repo.

## Agent resources

- [llms-full.txt](https://docs-blume.motion.actor/llms-full.txt): The full Markdown of every page in one file.
- [Page Markdown](https://docs-blume.motion.actor/index.md): Append `.md` to any page URL to fetch that page as raw Markdown.
- [JSON API](https://docs-blume.motion.actor/api/docs/pages.json): Page index of the JSON docs API; each entry links the page's JSON and Markdown forms. Described by the OpenAPI document at https://docs-blume.motion.actor/openapi.json.
- [MCP server](https://docs-blume.motion.actor/mcp): Streamable HTTP Model Context Protocol server with search_docs, get_page, list_pages, and get_navigation tools, plus every page as a resource. Discovery document: https://docs-blume.motion.actor/.well-known/mcp.json
- [Agent skills](https://docs-blume.motion.actor/.well-known/agent-skills/index.json): Agent Skills discovery index of the skills this site publishes.
- [API catalog](https://docs-blume.motion.actor/.well-known/api-catalog): RFC 9727 linkset of the APIs documented here.
- [AI catalog](https://docs-blume.motion.actor/.well-known/ai-catalog.json): ARD manifest of the agent-facing resources on this site (MCP server, skills, APIs).
- [agent-readability.json](https://docs-blume.motion.actor/agent-readability.json): Manifest of every agent-facing artifact on this site.
- [Sitemap](https://docs-blume.motion.actor/sitemap.xml): Every indexable page URL with its last-modified date.
