# busbar2297/screenit architecture

> Architecture diagram of the GitHub repository busbar2297/screenit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/busbar2297/screenit
- Repository: https://github.com/busbar2297/screenit

## Overview

screenIt is a native Windows capture, annotation, and recording application with CLI and agent automation. The main user workflow runs from capture or recording controls through engine commands to editable content, then export or library storage; other major branches include OCR, video editing, and AI tutorials. The UI excerpt confirms dispatch through Session, while the README documents product workflows and capabilities. Several crate internals and app wiring were not sampled, so uncertain implementation links are omitted or shown as unverified.

Main entry points: [`crates/engine/src/lib.rs`](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/lib.rs) (Command session), [`crates/engine/src/tutor_cmds.rs`](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/tutor_cmds.rs) (Tutorial commands), [`crates/ui-egui/src/lib.rs`](https://github.com/busbar2297/screenit/blob/main/crates/ui-egui/src/lib.rs) (Desktop UI), [`crates/engine/src/editor_cmds.rs`](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/editor_cmds.rs) (Editor commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["User interaction"]
  node_ui["Desktop UI<br/>[lib.rs]"]
  node_chrome["Capture and editor controls<br/>[chrome.rs]"]
  node_engine["Command session<br/>[lib.rs]"]
  node_editor_commands["Editor commands<br/>[editor_cmds.rs]"]
  node_capture_commands["Capture commands<br/>[capture_cmds.rs]"]
end

subgraph group_media["Capture and media"]
  node_capture["Screen capture<br/>[lib.rs]"]
  node_raster["Raster images<br/>[lib.rs]"]
  node_effects["Image effects and redaction<br/>[fx.rs]"]
  node_formats["Image and project export<br/>[lib.rs]"]
  node_video_model["Recording model and edits<br/>[lib.rs]"]
  node_video_writer["MP4 recording and playback<br/>[mf.rs]"]
end

subgraph group_services["Content services"]
  node_library[("Searchable media library<br/>[lib.rs]")]
  node_ocr["Windows and model OCR<br/>[text_cmds.rs]"]
  node_llm["Local model client<br/>[lib.rs]"]
  node_language["Interface languages<br/>[lib.rs]"]
end

subgraph group_tutorial["AI tutorial"]
  node_tutorial_commands["Tutorial commands<br/>[tutor_cmds.rs]"]
  node_tutorial_explore["Task exploration and planning<br/>[explore.rs]"]
  node_tutorial_script["Tutorial scripts<br/>[script.rs]"]
  node_tutorial_render["Tutorial video rendering<br/>[tutor_render.rs]"]
end

subgraph group_platform["Platform and automation"]
  node_cli["Command-line client<br/>[main.rs]"]
  node_automation["Automation and MCP<br/>[lib.rs]"]
  node_windows["Windows services<br/>[lib.rs]"]
end

node_user(("User"))
node_model_server["LM Studio or compatible server"]

node_user -->|"operates"| node_ui
node_ui -->|"renders controls"| node_chrome
node_chrome -->|"dispatches commands"| node_engine
node_ui -->|"dispatches through"| node_engine
node_engine -.->|"routes capture"| node_capture_commands
node_engine -.->|"routes edits"| node_editor_commands
node_user -->|"runs commands"| node_cli
node_cli -.->|"invokes commands"| node_engine
node_capture_commands -.->|"captures screen"| node_capture
node_capture -.->|"produces pixels"| node_raster
node_editor_commands -.->|"applies effects"| node_effects
node_editor_commands -.->|"exports content"| node_formats
node_user -->|"requests recording or edits"| node_video_model
node_video_model -.->|"records and writes MP4"| node_video_writer
node_user -->|"organizes captures"| node_library
node_user -->|"requests text recognition"| node_ocr
node_ocr -.->|"uses optional model"| node_llm
node_llm -->|"sends recognition request"| node_model_server
node_user -->|"starts tutorial"| node_tutorial_commands
node_tutorial_commands -.->|"explores task"| node_tutorial_explore
node_tutorial_commands -->|"plans and validates"| node_tutorial_script
node_tutorial_commands -->|"renders video"| node_tutorial_render
node_tutorial_commands -->|"adds tutorial videos"| node_library
node_user -->|"uses agent commands"| node_automation
node_automation -.->|"dispatches commands"| node_engine
node_ui -.->|"renders translations"| node_language
node_capture -.->|"uses Windows capture"| node_windows
node_video_writer -->|"uses Media Foundation"| node_windows

click node_ui "https://github.com/busbar2297/screenit/blob/main/crates/ui-egui/src/lib.rs"
click node_chrome "https://github.com/busbar2297/screenit/blob/main/crates/ui-egui/src/chrome.rs"
click node_engine "https://github.com/busbar2297/screenit/blob/main/crates/engine/src/lib.rs"
click node_editor_commands "https://github.com/busbar2297/screenit/blob/main/crates/engine/src/editor_cmds.rs"
click node_capture_commands "https://github.com/busbar2297/screenit/blob/main/crates/engine/src/capture_cmds.rs"
click node_capture "https://github.com/busbar2297/screenit/blob/main/crates/capture/src/lib.rs"
click node_raster "https://github.com/busbar2297/screenit/blob/main/crates/raster/src/lib.rs"
click node_effects "https://github.com/busbar2297/screenit/blob/main/crates/algo/src/fx.rs"
click node_formats "https://github.com/busbar2297/screenit/blob/main/crates/codecs/src/lib.rs"
click node_video_model "https://github.com/busbar2297/screenit/blob/main/crates/record/src/lib.rs"
click node_video_writer "https://github.com/busbar2297/screenit/blob/main/crates/platform/src/mf.rs"
click node_library "https://github.com/busbar2297/screenit/blob/main/crates/library/src/lib.rs"
click node_ocr "https://github.com/busbar2297/screenit/blob/main/crates/engine/src/text_cmds.rs"
click node_llm "https://github.com/busbar2297/screenit/blob/main/crates/llm/src/lib.rs"
click node_language "https://github.com/busbar2297/screenit/blob/main/crates/i18n/src/lib.rs"
click node_tutorial_commands "https://github.com/busbar2297/screenit/blob/main/crates/engine/src/tutor_cmds.rs"
click node_tutorial_explore "https://github.com/busbar2297/screenit/blob/main/crates/tutor/src/explore.rs"
click node_tutorial_script "https://github.com/busbar2297/screenit/blob/main/crates/tutor/src/script.rs"
click node_tutorial_render "https://github.com/busbar2297/screenit/blob/main/crates/engine/src/tutor_render.rs"
click node_cli "https://github.com/busbar2297/screenit/blob/main/apps/screenit-cli/src/main.rs"
click node_automation "https://github.com/busbar2297/screenit/blob/main/crates/automation/src/lib.rs"
click node_windows "https://github.com/busbar2297/screenit/blob/main/crates/platform/src/lib.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ui,node_chrome,node_engine,node_editor_commands,node_capture_commands,node_user toneBlue
class node_capture,node_raster,node_effects,node_formats,node_video_model,node_video_writer toneAmber
class node_library,node_ocr,node_llm,node_language,node_model_server toneMint
class node_tutorial_commands,node_tutorial_explore,node_tutorial_script,node_tutorial_render toneRose
class node_cli,node_automation,node_windows toneIndigo
```

## Components

### User interaction

- [Desktop UI](https://github.com/busbar2297/screenit/blob/main/crates/ui-egui/src/lib.rs): `crates/ui-egui/src/lib.rs`
- [Capture and editor controls](https://github.com/busbar2297/screenit/blob/main/crates/ui-egui/src/chrome.rs): `crates/ui-egui/src/chrome.rs`
- [Command session](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/lib.rs): `crates/engine/src/lib.rs`
- [Editor commands](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/editor_cmds.rs): `crates/engine/src/editor_cmds.rs`
- [Capture commands](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/capture_cmds.rs): `crates/engine/src/capture_cmds.rs`

### Capture and media

- [Screen capture](https://github.com/busbar2297/screenit/blob/main/crates/capture/src/lib.rs): `crates/capture/src/lib.rs`
- [Raster images](https://github.com/busbar2297/screenit/blob/main/crates/raster/src/lib.rs): `crates/raster/src/lib.rs`
- [Image effects and redaction](https://github.com/busbar2297/screenit/blob/main/crates/algo/src/fx.rs): `crates/algo/src/fx.rs`
- [Image and project export](https://github.com/busbar2297/screenit/blob/main/crates/codecs/src/lib.rs): `crates/codecs/src/lib.rs`
- [Recording model and edits](https://github.com/busbar2297/screenit/blob/main/crates/record/src/lib.rs): `crates/record/src/lib.rs`
- [MP4 recording and playback](https://github.com/busbar2297/screenit/blob/main/crates/platform/src/mf.rs): `crates/platform/src/mf.rs`

### Content services

- [Searchable media library](https://github.com/busbar2297/screenit/blob/main/crates/library/src/lib.rs): `crates/library/src/lib.rs`
- [Windows and model OCR](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/text_cmds.rs): `crates/engine/src/text_cmds.rs`
- [Local model client](https://github.com/busbar2297/screenit/blob/main/crates/llm/src/lib.rs): `crates/llm/src/lib.rs`
- [Interface languages](https://github.com/busbar2297/screenit/blob/main/crates/i18n/src/lib.rs): `crates/i18n/src/lib.rs`

### AI tutorial

- [Tutorial commands](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/tutor_cmds.rs): `crates/engine/src/tutor_cmds.rs`
- [Task exploration and planning](https://github.com/busbar2297/screenit/blob/main/crates/tutor/src/explore.rs): `crates/tutor/src/explore.rs`
- [Tutorial scripts](https://github.com/busbar2297/screenit/blob/main/crates/tutor/src/script.rs): `crates/tutor/src/script.rs`
- [Tutorial video rendering](https://github.com/busbar2297/screenit/blob/main/crates/engine/src/tutor_render.rs): `crates/engine/src/tutor_render.rs`

### Platform and automation

- [Command-line client](https://github.com/busbar2297/screenit/blob/main/apps/screenit-cli/src/main.rs): `apps/screenit-cli/src/main.rs`
- [Automation and MCP](https://github.com/busbar2297/screenit/blob/main/crates/automation/src/lib.rs): `crates/automation/src/lib.rs`
- [Windows services](https://github.com/busbar2297/screenit/blob/main/crates/platform/src/lib.rs): `crates/platform/src/lib.rs`

### Other components

- **User**
- **LM Studio or compatible server**

## Connections

- User → Desktop UI: operates
- Desktop UI → Capture and editor controls: renders controls (evidence: `crates/ui-egui/src/lib.rs`)
- Capture and editor controls → Command session: dispatches commands (evidence: `crates/ui-egui/src/chrome.rs`)
- Desktop UI → Command session: dispatches through (evidence: `crates/ui-egui/src/lib.rs`)
- Command session → Capture commands: routes capture
- Command session → Editor commands: routes edits
- User → Command-line client: runs commands
- Command-line client → Command session: invokes commands
- Capture commands → Screen capture: captures screen
- Screen capture → Raster images: produces pixels
- Editor commands → Image effects and redaction: applies effects
- Editor commands → Image and project export: exports content
- User → Recording model and edits: requests recording or edits
- Recording model and edits → MP4 recording and playback: records and writes MP4
- User → Searchable media library: organizes captures
- User → Windows and model OCR: requests text recognition
- Windows and model OCR → Local model client: uses optional model
- Local model client → LM Studio or compatible server: sends recognition request (evidence: `crates/llm/src/lib.rs`)
- User → Tutorial commands: starts tutorial
- Tutorial commands → Task exploration and planning: explores task
- Tutorial commands → Tutorial scripts: plans and validates (evidence: `crates/engine/src/tutor_cmds.rs`)
- Tutorial commands → Tutorial video rendering: renders video (evidence: `crates/engine/src/tutor_cmds.rs`)
- Tutorial commands → Searchable media library: adds tutorial videos (evidence: `crates/engine/src/tutor_cmds.rs`)
- User → Automation and MCP: uses agent commands
- Automation and MCP → Command session: dispatches commands
- Desktop UI → Interface languages: renders translations
- Screen capture → Windows services: uses Windows capture
- MP4 recording and playback → Windows services: uses Media Foundation (evidence: `crates/platform/src/mf.rs`)
