Status: decided 2026-06-01. Principle: the publish layer reads addressable URLs, never embeds blobs · keep the cloud footprint to the absolute minimum · content is generated and lives on-device by default.
| Layer | Store | Why |
|---|---|---|
Source / composition / code — blog .md, calendar YAML, storyboards, registry, manifests | GitHub (this repo) | Free, versioned, the source of truth the harness reads. |
| 4K masters · raw · working renders | On-device (+ a backup drive) | Generated locally; manual handoff when a human needs them. Never in git (100 MB limit, bloat). |
| Blog images on temerarii.com | Duda (native asset hosting) | The blog CMS hosts its own images — no external media host needed for the blog. |
| Publish-grade social video / email images | Cloudinary (cloud dyd14xqtg, free tier) | The one external service, and only because Blotato pulls media by URL — it can't fetch from your device or a private repo. A thin public video/image URL host. |
box entry in .claude/mcp.json can be removed; no Box integration is wired.--skip-4k on the publish render)..env only.A scheduled autonomous publisher shouldn't depend on the laptop being awake. Run the scheduler on GitHub Actions (free cron) or a cheap always-on runner so the machine fires on time regardless of the device.
studio/<brand>/<week>/<type>.