Skip to content

Application Architecture

CutReady application overview CutReady application overview
CutReady's main interface with sidebar, sketch editor, and chat panel

CutReady is a Tauri v2 desktop application with a split architecture:

┌─────────────────────────────────────────────────────────┐
│ CutReady Desktop App │
├─────────────────────────┬───────────────────────────────┤
│ Frontend (WebView) │ Backend (Rust) │
│ │ │
│ React 19 + TypeScript │ Tauri Commands │
│ Zustand State Store │ ├── project.rs │
│ Tailwind CSS │ ├── sketch.rs │
│ CodeMirror │ ├── storyboard.rs │
│ @dnd-kit │ ├── note.rs │
│ │ ├── interaction.rs │
│ │ ├── screenshot.rs │
│ │ ├── import.rs │
│ │ ├── agent.rs │
│ │ └── draftline.rs │
│ │ │
│ │ AI Layer │
│ │ └── agentive crate │
│ │ (Foundry/Azure/OpenAI/ │
│ │ Anthropic via reqwest) │
│ │ │
│ │ Sidecars │
│ │ └── Node.js automation │
├─────────────────────────┴───────────────────────────────┤
│ Tauri v2 Runtime │
│ (WebView + Rust + IPC Bridge) │
└─────────────────────────────────────────────────────────┘

CutReady also depends on three sibling projects that provide core product capabilities:

ProjectRole in CutReady
DraftlineWorkspace persistence, snapshots, timelines, branching, merge flows, and GitHub remote sync. CutReady hides git behind Draftline commands and content policy.
ElucimSemantic visual DSL and renderer for framing graphics in sketch rows. Designer-agent outputs are stored as Elucim JSON under .cutready/visuals/.
AgentiveShared LLM provider layer, agent loop, tool execution, streaming, OAuth helpers, and Responses API routing.

That means the app shell owns demo-specific UX and file formats, while Draftline, Elucim, and Agentive own persistence, visuals, and AI orchestration respectively.

The frontend is a React 19 single-page application bundled with Vite:

TechnologyPurpose
React 19UI component framework
TypeScriptType-safe frontend code
ZustandCentralized state management
Tailwind CSSUtility-first styling
CodeMirrorMarkdown editing (notes)
@dnd-kitDrag-and-drop (storyboard list, table rows)
react-markdownMarkdown preview rendering
@elucim/dslVisual rendering for generated framing graphics

All application state flows through a single Zustand store (appStore.ts):

  • Project state (current project, recent list)
  • Document state (sketches, storyboards, notes)
  • UI state (sidebar, tabs, panels, theme)
  • Workspace state (single-project vs. multi-project, active project, project manifest)
  • Browser interaction recording state (profiles, active session)
  • Version history (snapshots, timeline, dirty flags)

The store dispatches Tauri commands to the Rust backend for all filesystem and system operations.

The Rust backend handles:

ModuleResponsibility
project.rsProject CRUD, recent projects, sidebar persistence
sketch.rsSketch document CRUD, list summaries
storyboard.rsStoryboard CRUD, sketch ordering
note.rsMarkdown note CRUD
interaction.rsBrowser profile detection and in-progress browser interaction recording
screenshot.rsMonitor detection, screen/region capture
import.rsDocument import (docx, pdf, pptx conversion)
agent.rsAI chat and agent commands
draftline.rsDraftline-backed snapshot save/restore, timelines, remotes, and merge/apply flows

Lower-level implementations:

  • interaction.rs — browser profile detection and sidecar-backed interaction capture
  • screenshot.rs — Native screen capture via xcap crate
  • project.rs — safe project I/O, single-project and multi-project workspace manifests, asset scanning
  • draftline_adapter.rs — CutReady content policy and product-facing facade over Draftline persistence
  • visuals — Elucim DSL JSON assets stored under .cutready/visuals/ and referenced by sketch rows
  • recording.rs, automation.rs, export.rs — placeholders for future FFmpeg capture, replay automation, and FCPXML output

Draftline owns the workspace repository. In a single-project workspace, the workspace root is also the project root. In a multi-project workspace, .cutready/projects.json lists project subdirectories and each project keeps its own sketches, storyboards, notes, screenshots, and visuals.

CutReady snapshots versioned project content through Draftline and keeps local runtime state under .git/cutready/, so normal chat, agent, tab, and ordering activity does not dirty the content timeline.

CutReady uses the agentive crate to power AI features across 4 providers:

  • API communication via reqwest with configurable endpoints and OAuth support
  • Function calling for structured sketch manipulation (add rows, update fields)
  • Streaming responses delivered to the frontend via Tauri channels
  • Silent mode for sparkle buttons — results are applied directly without chat UI
  • Responses API auto-routing for codex/pro-series models

Supported providers: Microsoft Foundry, Azure OpenAI, OpenAI, Anthropic.

The AI layer supports four built-in agents (Planner, Writer, Editor, Designer) plus user-defined custom agents.

Shared data types:

  • action.rs — Tagged union of browser/native actions
  • script.rs — Script rows with metadata
  • session.rs — Recording session with captured actions
  • sketch.rs — Sketch, Storyboard, VersionEntry, GraphNode

Browser interaction recording is being built around a Node.js sidecar process managed by Tauri:

  1. The Rust backend spawns a Node.js automation process
  2. Communication happens over stdio (JSON messages)
  3. The sidecar connects to supported browsers for observation and replay
  4. Actions are streamed back to the Rust backend in real time

This architecture isolates browser observation from the main process, preventing UI freezes during recording. The user-facing production workflow for recording, automated replay, and self-healing automation is still planned.

FeatureWindowsmacOSLinux
UI & NavigationAvailableAvailableAvailable
Sketch EditorAvailableAvailableAvailable
Screen CaptureAvailableAvailableAvailable with PipeWire
Browser Interaction RecordingIn developmentIn developmentIn development
Version HistoryAvailableAvailableAvailable

CutReady uses GitHub Actions for automated cross-platform builds:

  • macOS — ARM (Apple Silicon) + Intel (x86_64) builds
  • Windows — MSI + NSIS installers
  • Linux — DEB + AppImage packages (Ubuntu 24.04)

Releases are triggered by pushing a v* git tag and create draft GitHub releases with all platform artifacts.