mcut

Package architecture

How the public packages fit together today.

mcut is split by ownership. Lower packages do not know about higher packages.

PackageOwns
@mcut/timelineProject model, commands, engine, selectors, timing helpers
@mcut/editorUser-level editing operators and gesture planning
@mcut/compositorFrame rendering, hit testing, text layout, compositor extension points
@mcut/mediaMedia probing, thumbnails, preview pools, browser export
@mcut/reactReact provider, hooks, PlayerCanvas, gesture helpers
@mcut/transcriptionTranscript model, caption generation, subtitle output
provider packagesAssemblyAI, AI SDK, and local Whisper adapters
@mcut/cliHeadless project-file workflows
@mcut/mcp-serverMCP tools and local browser bridge

Dependency direction

Use the lowest package that owns the behavior:

  • Pure project edits belong in @mcut/timeline.
  • UI-like edit intent belongs in @mcut/editor.
  • React state and canvas bindings belong in @mcut/react.
  • Browser media and export helpers belong in @mcut/media.
  • CLI and MCP should expose lower-level behavior, not duplicate it.

This keeps project behavior reusable in Bun, Node, browsers, MCP tools, and React apps.

On this page