Skip to content

How it works ​

lakreet-swarm orchestrates batch rendering by driving EffectCraft's CLI (effectcraft-cli) for each data row.

The pipeline ​

mermaid
flowchart TD
    A[EffectCraft Template\n.ectemplate] --> B[lakreet-swarm]
    C[Data File\nCSV / JSON / JSONL] --> B
    B --> D[Validate all rows]
    D --> E[For each row:\n1. Build values JSON\n2. Call effectcraft-cli render\n3. Collect output]
    E --> F[Video 1]
    E --> G[Video 2]
    E --> H[Video N]
    E --> I[report.json\nreport.csv]

What lakreet-swarm does ​

PhaseAction
1. LoadRead template (via effectcraft-cli inspect), read data file
2. ValidateCheck every row against controls: types, required fields, media paths
3. MapApply column mapping (lakreet.config.json → columns)
4. SelectFilter rows (--only, --limit, --skip-existing)
5. RenderSequential loop: write .values.json → spawn effectcraft-cli render → wait
6. ReportWrite report.json, report.csv; stream NDJSON if --json

What EffectCraft does ​

ComponentRole
effectcraft-cli inspectExtract manifest from .ectemplate (controls, media, comp info)
effectcraft-cli renderRender one frame or full video from project + values JSON
effectcraft-cli render-frameUsed by preview for quick PNG frames

Values JSON ​

For each row, lakreet-swarm writes a temporary .values.json:

json
{
  "Source Text": "Budi",
  "Opacity": 75
}

This is passed to EffectCraft via --values flag.

Render modes ​

CommandEffectCraft subcommandOutput
renderrenderFull video (MP4, WebM, etc.)
previewrender-frameSingle PNG frame at --time

Concurrency ​

Default: sequential (1 job). Each render waits for the previous to finish.

  • Tested parallel speedup: 1.11× with 2 workers on author's machine (below 1.5× threshold → no --jobs flag)
  • Progress is an estimate — EffectCraft doesn't report frame progress when output is captured
  • Varies significantly by machine, template complexity, codec

Exit codes ​

CodeMeaning
0All succeeded
1At least one render failed
2Usage error (bad flags)
3Invalid data (validation failed)
4effectcraft-cli not found
5Template unreadable
130Interrupted (Ctrl+C) — partial report written

Next steps ​

Independent project. Not affiliated with the ArtCraft team or the EffectCraft project.