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.