Project Workspace

OpenMontage creates a dedicated workspace for every video production. The structure keeps generated media, stage artifacts, and pipeline state separate from the repository source so that each run is self-contained and easy to resume or audit.

Project Directory Layout

Productions live under projects/<kebab-name>/, where the name is derived from the approved title in kebab-case (for example hidden-math-of-nature or how-music-rewires-brain).

projects/<kebab-name>/
├── artifacts/                  # Canonical JSON artifacts from each stage
│   ├── research_brief.json
│   ├── proposal_packet.json
│   ├── script.json
│   ├── scene_plan.json
│   ├── asset_manifest.json
│   ├── edit_decisions.json
│   ├── render_report.json
│   └── publish_log.json
├── assets/
│   ├── images/                 # Generated images (PNG)
│   ├── video/                  # Generated video clips (MP4)
│   ├── audio/                  # Narration segments + final mix
│   ├── music/                  # Background music track
│   └── subtitles.srt           # Generated subtitles
└── renders/
    └── final.mp4               # Final rendered video (the deliverable)

artifacts/ holds the validated JSON outputs written by each stage. assets/ is the working directory for media produced during the assets stage. The single expected deliverable is always renders/final.mp4.

Checkpoint and Decision Storage

Pipeline state and audit logs live outside the project assets directory:

pipeline/<project-id>/
├── checkpoint_<stage>.json     # One file per stage
├── decision_log.json           # Cumulative decisions across stages

Each checkpoint_<stage>.json records status, the canonical artifact, review notes, and a cost snapshot. The decision_log.json accumulates choices such as render runtime selection and provider rankings. See the checkpoint system for details on how these files are written and read.

Naming and Creation Rules

  • Project IDs use kebab-case derived from the video title or approved brief.
  • The projects/<kebab-name>/ directory and its subdirectories must exist before the first stage runs.
  • Tools and stage directors write only to the paths above. Do not place generated content in the repository root, output/, library/, or ad-hoc temporary directories.

Gitignore Practices

The entire projects/ tree is gitignored. All contents are regenerable from the pipeline manifests, checkpoints, and any user-supplied source media. A top-level music_library/ directory (also gitignored) may hold user-provided royalty-free tracks for reuse across projects.

For the commands that create and advance workspaces, see running pipelines.