JustinWieb-VR Brand Ops: Travel Editing Architecture¶
Handoff. Author: Claude Code (Opus 4.7). Date: 2026-04-21.
Scope: design a travel-first editing workflow for JWVR when Vector is home and Justin is on Sol (MBP M3 Max) + Venus (iPhone 15 Pro Max). Based on direct survey of /mnt/workspace/JustinWieb-VR/ and the fleet, not speculation.
1. JWVR Pipeline Snapshot¶
Cadence (2026 YTD)¶
| Date | Project | Size | Type |
|---|---|---|---|
| 2026-01-04 | CES-Day-1-Unveil | 8.9 GB | Event short |
| 2026-01-04 | CES-Master-2026 | 99 GB | Flagship multi-cam doc |
| 2026-01-13 | Blues-Videos-CES2026 | 29 GB | CES compilation |
| 2026-01-15 | Dread-Meridian | 6.5 GB | Game showcase |
| 2026-02-09 | Quest-Ads | 7.5 GB | Meta sponsored ad |
| 2026-02-12 | Electrical-Work-On-Home | 11 GB | Vlog (non-VR) |
| 2026-02-26 | FMO-Office-Tour | 3.5 GB | Nova cross-promo |
| 2026-03-02 | Rayneo-Unboxing | 2.6 GB | Glasses review |
| 2026-03-12 | Rayneo-Air-4-Pro-Batman | 6.2 GB | Glasses + reference film |
| 2026-03-30 | Meta-Raybans-New-FCC-Filing | 4.3 GB | News/analysis |
| 2026-04-07 | Quest-Ad-3-Traitors | 5.2 GB | Meta sponsored ad |
Cadence: ~1 project every 7–10 days; one flagship per quarter (CES Jan, Meta Connect Sep). Median project: 5 GB. Flagship outlier: 99 GB. 604 video files across 2026 projects so far.
Canonical project layout (newest projects like Quest-Ad-3-Traitors)¶
YYYY-MM-DD_Project-Name/
├── Footage/ ← A7IV raw clips (C####.MP4) + .XML sidecars
├── Assets/ ← stock reference video, iPhone captures, Quest/Rayneo mkv, B-roll
├── Audio/ ← Epidemic Sound mp3s (ES_Title-Artist.mp3)
├── Project/ ← .prproj, .aep, .prin, Masks/, Adobe Auto-Save/, Audio Previews/
├── Exports/ ← rendered outputs (h264 mp4)
└── Docs/ ← scripts, beat sheets
Inconsistency note: older projects use Assets/ for raw footage (all of CES-Master-2026/Assets is 250 C####.MP4 A7IV clips). Final/ vs Exports/, Docs/ vs Documents/ vs Scripts/ are interchangeable. Recommendation: formalize the Quest-Ad-3 layout as the JWVR standard going forward, makes proxy scripts possible without a rename game.
Observed codecs (ffprobe verified)¶
| Source | Resolution | FPS | Codec | Bitrate | Notes |
|---|---|---|---|---|---|
| A7IV premium (CES-Master) | 3840×2160 | 59.94 | H.264 10-bit 4:2:2 | ~200 Mbps | XAVC-S, yuv422p10le, ~170 MB per 6-sec clip |
| A7IV standard (Quest-Ad-3) | 3840×2160 | 29.97 | H.264 8-bit 4:2:0 | ~60 Mbps | yuv420p, 1.78 GB for 3:49 |
| Quest/Rayneo capture | 2160×3840 (portrait) | 60 | H.264 | ~29 Mbps | MKV, already compressed |
| iPhone 4K .mov | 3840×2160 | 30 | H.264 | ~46 Mbps | .mov, with metadata sidedata |
| Audio (A7IV) | , | , | PCM 16-bit BE | 1.5 Mbps | uncompressed |
| Stock music | , | , | MP3 | ~320 kbps | Epidemic Sound |
Takeaway: A7IV is the bandwidth killer. Quest/Rayneo/iPhone captures are already low-enough bitrate to pull raw over Tailscale if needed. CES-style 4K60p 4:2:2 is what forces a proxy workflow.
Tooling in use (observed on-disk)¶
- Editor: Adobe Premiere Pro + Premiere Pro Beta, cross-project (
.prproj,.PRVaudio previews, Auto-Save dirs everywhere) - Motion/FX: After Effects (
Bend-Template.aep,Screen Effect.aepin Quest-Ad-3) - Capture: Sony A7IV (C####.MP4 XAVC-S), iPhone (IMG_####.mov), Quest/Rayneo (.mkv from headset screen record), OBS (.mkv occasional)
- Stock: Epidemic Sound (
ES_*.mp3prefix) - Project tracker:
Google-Drive/Business/JustinWieb-VR/2026/JustinWiebVR-Projects.xlsxand.csv, a project log - Brand-Assets:
Google-Drive/Business/JustinWieb-VR/Brand-Assets/(509 MB), logos (SVG/PSD/PNG, Black/White/Yellow variants), Headshots, Media Kit, Meta-Quest-Brand-Assets.zip, Channel-Script.docx, Creator-Reel.mp4, Virtual Friends thumbnails - Records:
Google-Drive/Business/JustinWieb-VR/Records/(832 MB, 2022–2026), organized by year with_Business/_Contracts/_Content/_Meetings/_Finances/_Strategysubfolders
Platforms (observed/implied)¶
- Primary: YouTube (JustinWieb channel), this is what longform exports are cut for
- Shorts: the
Rayneo-Air-4-Pro-Batman/Assets/mkv files are portrait 2160×3840 @ 60p, confirms Justin already shoots glasses content in a vertical-first way for Shorts/Reels/TikTok - No upload automation detected. No n8n workflow references YouTube, no TikTok/IG credentials anywhere on disk, no Buffer config. Posting is currently manual from Vector.
2. Travel Editing Architecture¶
Target diagram¶
┌────────────────────────── HOME LAN (10.0.0.x / 192.168.86.x) ──────────────────────────┐
│ │
│ ┌──────────────────┐ NFS ┌──────────────────────────┐ │
│ │ Finn (MS-01) │◄─────────────┤ UDev (.50) + dispatcher │ │
│ │ 7.3 TB NVMe │ │ • proxy-gen scripts │ │
│ │ Workspace/ │ │ • pre-trip bundler │ │
│ │ JustinWieb-VR/ │ │ • n8n triggers ingest │ │
│ │ (source of │ │ • rclone gdrive: │ │
│ │ truth — raws) │ └────────┬─────────────────┘ │
│ └─────┬────────────┘ │ │
│ │ SMB (Vector 10 Gbps SFP+) │ rclone sync │
│ ┌─────▼───────────────┐ │ │
│ │ Vector (Win 11) │ │ │
│ │ • Premiere full res │ │ │
│ │ • RTX 5070, 64GB │ │ │
│ └──────────────────────┘ │ │
│ │ │
└────────────────────────────────────────────────┼─────────────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌────────────▼─────┐ ┌───────────▼───────┐ ┌────────▼─────────┐
│ Google Drive │ │ Tailscale mesh │ │ Backblaze B2 │
│ (gdrive: remote)│ │ (finn 100.112. │ │ (NEW — cheap │
│ — project │ │ 22.2 exit node) │ │ proxy bucket) │
│ bundles │ │ — direct SMB │ │ — cold archive │
│ — brand assets │ │ over WAN │ │ proxies │
└────────┬─────────┘ └──────────┬────────┘ └────────┬─────────┘
│ │ │
┌─────────▼────────────────────────▼─────────────────────▼─────────┐
│ TRAVEL TIER (away from home) │
│ │
│ ┌──────────────────────┐ ┌─────────────────────────┐ │
│ │ Sol (MBP M3 Max) │ │ Venus (iPhone 15 PM) │ │
│ │ • Premiere Pro │ │ • LumaFusion (shorts) │ │
│ │ (proxies only) │ │ • CapCut (social cuts) │ │
│ │ • Frame.io or │ │ • native camera roll │ │
│ │ local workspace │ │ • Files → Google Drive │ │
│ │ • saves project │ │ • direct post to IG/ │ │
│ │ back to cloud │ │ TikTok/X │ │
│ └──────────────────────┘ └─────────────────────────┘ │
└────────────────────────────────────────────────────────────────────┘
│
Return to home → UDev reconciles:
• Pull updated .prproj from cloud
• Re-link to full-res raws on NFS
• Commit final exports + thumbnails
Core invariants¶
- Source of truth never leaves Workspace NVMe. Raw A7IV XAVC-S clips don't travel. Ever.
- Proxies travel. 1080p H.264 @ 10 Mbps (1/20 of the raw) is what Sol sees and edits against.
- Project file is tiny.
.prprojfor Quest-Ad-3 is 44 MB total incl. all masks/auto-saves; the actual.prprojis under 1 MB. Syncs in seconds. - Re-link on return. Premiere's "Make Offline/Online" + relative proxy paths lets the home session swap proxies back to raws for finishing and export.
- Shorts pipeline is separate. Venus does not touch proxies, it posts direct captures or short cuts delivered from Sol.
3. Recommended Stack (decisions, with rejections)¶
| Layer | Choice | Why | Rejected |
|---|---|---|---|
| Editor on Sol | Adobe Premiere Pro (already on CC sub) | Opens .prproj from Vector 1:1; no cross-NLE conversion drama; Sol M3 Max + 64 GB RAM handles 4K proxies effortlessly |
DaVinci Resolve Studio, better mobile performance but forces a parallel project format, means Vector↔Sol round-trips become conversion headaches. Final Cut Pro, excellent on Mac but same problem: no Premiere interop. |
| Proxy format | H.264 1080p @ 10 Mbps, .mp4, -preset veryfast via ffmpeg |
Universal, small (~1/20 raw), Premiere proxy-workflow native. Sol can hit >10× playback speed on M3 Max. | ProRes Proxy, better quality but 3–4× larger; unnecessary for cuts-only editing. DNxHR LB: Premiere-compat but Mac fewer tools. H.265, smaller but CPU-heavier on decode, not worth it vs extra bandwidth. |
| Cloud sync | Google Drive (already paid, already mounted) for project bundles under ~50 GB. Backblaze B2 for bigger archives / cold proxy storage (~$6/TB/mo). | No new service for 90% of cases. B2 is the escape valve when Drive quota pressure hits. | Frame.io: Adobe-native, 500 GB free with CC, but workflow lock-in + still bandwidth-bound by upload speed. Keep in reserve for a client-review use case, not primary travel storage. Dropbox Smart Sync, another $12/mo subscription; redundant with Drive. |
| Transport | rclone copy/bisync (UDev ↔ gdrive ↔ Sol) for bundles. Tailscale SMB to Finn as a live option when on good wifi. |
rclone is already configured, works over any uplink, handles interruptions. Tailscale gives a fallback "grab this one clip I forgot" without re-bundling. | syncthing, continuous sync risks blowing up cellular caps if Justin forgets to pause. iCloud: Sol-only, no Vector interop. |
| Mobile tool | LumaFusion on Venus for vertical edits. CapCut for speed cuts with auto-captions. | LumaFusion reads Files-app Drive mounts; exports 4K60 portrait natively. CapCut's auto-subtitle is faster than anything else for Shorts. | Adobe Rush, underpowered and Premiere team is de-emphasizing it. |
| Posting glue | n8n handles scheduled posts when Justin marks an export "ready". YouTube still manual (OAuth hardening needed first). | Keep creds in n8n encrypted DB. TikTok/IG/X allow scheduled posts via webhook; YouTube OAuth is the one Justin explicitly said Decorator Crab owns when greenlit, don't touch. | Buffer, $15/mo for the same thing n8n already does free. |
4. Concrete Automations to Build¶
4.1 Auto-proxy on ingest (UDev cron or n8n-triggered)¶
Script skeleton: /home/justinwieb/forge/scripts/jwvr/generate-proxies.sh
#!/usr/bin/env bash
# Scans JustinWieb-VR/YYYY/* for new/changed Footage/ + Assets/ clips,
# generates 1080p H.264 proxies into a sibling Proxies/ folder.
#
# Premiere proxy convention: proxy file has same stem + "_proxy.mp4" suffix
# in a Proxies/ sibling directory — Premiere's "Attach Proxies" maps that.
set -euo pipefail
ROOT="/mnt/workspace/JustinWieb-VR"
LOG="/home/justinwieb/forge/logs/jwvr-proxy.log"
PROXY_CRF="${PROXY_CRF:-23}" # quality knob
PROXY_BITRATE="${PROXY_BITRATE:-10M}" # 10 Mbps target
PROXY_SCALE="${PROXY_SCALE:-1920:-2}" # 1080p, keep aspect
find "$ROOT" -type d \( -name Footage -o -name Assets \) | while read -r dir; do
project=$(dirname "$dir")
proxy_dir="$project/Proxies"
mkdir -p "$proxy_dir"
find "$dir" -maxdepth 1 -type f \( -iname '*.mp4' -o -iname '*.mov' -o -iname '*.mkv' -o -iname '*.mxf' \) | while read -r src; do
base=$(basename "${src%.*}")
out="$proxy_dir/${base}_proxy.mp4"
# skip if proxy fresh
[[ -f "$out" && "$out" -nt "$src" ]] && continue
echo "[$(date -Is)] proxy: $src -> $out" >> "$LOG"
ffmpeg -y -hide_banner -loglevel error \
-i "$src" \
-vf "scale=${PROXY_SCALE}" \
-c:v libx264 -preset veryfast -crf "$PROXY_CRF" -maxrate "$PROXY_BITRATE" -bufsize 20M \
-c:a aac -b:a 192k \
-movflags +faststart \
"$out" >> "$LOG" 2>&1 || echo "[$(date -Is)] FAIL: $src" >> "$LOG"
done
done
Schedule: cron every 10 min on UDev, or n8n watches /mnt/workspace/JustinWieb-VR/ via inotify and fires the script when new Footage lands. n8n path is better because proxies show up ~seconds after Justin offloads a card via Vector.
Performance reality check: UDev is a 4 vCPU VM. A 200 Mbps CES clip transcodes ~1.5× realtime via libx264 veryfast on 4 cores. For an overnight CES batch of 250 clips × 2–3 min each, plan on ~6–10 hours. Offload to Finn itself via SSH (Finn has i9-13900H idle overnight) if that's a problem, simple ssh finn inversion of the script.
4.2 Pre-trip bundle (UDev on demand)¶
Script: /home/justinwieb/forge/scripts/jwvr/prep-travel-bundle.sh
#!/usr/bin/env bash
# Usage: prep-travel-bundle.sh 2026-04-07_Quest-Ad-3-Traitors
# Packages: Proxies/, Project/*.prproj + *.aep, Audio/, lightweight Assets,
# + Brand-Assets/ (LUTs, logos) → /mnt/workspace/Travel-Bundles/
# Then rclone copy to gdrive:Travel-Bundles/<project>/ for Sol pull.
set -euo pipefail
PROJECT="$1"
YEAR=${PROJECT:0:4}
SRC="/mnt/workspace/JustinWieb-VR/$YEAR/$PROJECT"
BUNDLE="/mnt/workspace/Travel-Bundles/$PROJECT"
BRAND="/mnt/workspace/Google-Drive/Business/JustinWieb-VR/Brand-Assets"
[[ -d "$SRC" ]] || { echo "No such project: $SRC"; exit 1; }
mkdir -p "$BUNDLE"/{Project,Proxies,Audio,Assets,Brand-Assets}
# Project files only — not the multi-GB Auto-Save/Masks trees
find "$SRC/Project" -maxdepth 1 -type f \( -iname '*.prproj' -o -iname '*.aep' -o -iname '*.prin' \) -exec cp -av {} "$BUNDLE/Project/" \;
# Proxies
[[ -d "$SRC/Proxies" ]] && cp -av "$SRC/Proxies/." "$BUNDLE/Proxies/"
# Audio (mp3s are tiny)
[[ -d "$SRC/Audio" ]] && cp -av "$SRC/Audio/." "$BUNDLE/Audio/"
# Lightweight assets only (<100 MB each): logos, thumbnails, iPhone clips, mkv glasses captures
# Raw A7IV C####.MP4 in Assets/ are skipped here — use proxies.
find "$SRC/Assets" -maxdepth 1 -type f -size -100M \
! -iname 'C[0-9]*.MP4' \
-exec cp -av {} "$BUNDLE/Assets/" \; 2>/dev/null || true
# Brand assets: logos, fonts, LUTs — rsynced fresh each time
rsync -a --delete \
--include '*/' \
--include 'Logos/**' \
--include 'LUTs/**' \
--include '*.lrtemplate' --include '*.cube' \
--exclude '*' \
"$BRAND/" "$BUNDLE/Brand-Assets/"
# Size report
du -sh "$BUNDLE"
# Push to Drive
rclone copy -P "$BUNDLE" "gdrive:Travel-Bundles/$PROJECT"
Expected bundle size: for Quest-Ad-3-Traitors (5.2 GB project), the bundle should land ~400–600 MB (proxies + project + audio + brand assets). For CES-Master-2026 (99 GB) → ~5 GB bundle. Both feasible over hotel/cellular with some patience.
4.3 On-Sol puller (runs on Mac before Justin leaves wifi)¶
Script lives on Sol at ~/bin/jwvr-pull.sh:
#!/usr/bin/env bash
# Usage: jwvr-pull.sh 2026-04-07_Quest-Ad-3-Traitors
PROJECT="$1"
LOCAL="$HOME/JWVR-Travel/$PROJECT"
mkdir -p "$LOCAL"
rclone copy -P "gdrive:Travel-Bundles/$PROJECT" "$LOCAL"
open -a "Adobe Premiere Pro" "$LOCAL/Project/"*.prproj
Assumption: Sol has rclone installed and configured with the same gdrive: remote. If not, brew install rclone + copy ~/.config/rclone/rclone.conf from UDev once (no keys: Drive OAuth lives in Drive itself).
4.4 Return-merge (UDev, on Justin's arrival home)¶
Script: /home/justinwieb/forge/scripts/jwvr/pull-travel-edits.sh
#!/usr/bin/env bash
# Reverse direction: pulls edits from Sol's Drive folder back to Workspace.
# Only picks up Project/ changes + any new Exports/; does NOT re-sync proxies back.
PROJECT="$1"
YEAR=${PROJECT:0:4}
DST="/mnt/workspace/JustinWieb-VR/$YEAR/$PROJECT"
# Dry run first, Justin inspects, then applies
rclone copy --dry-run "gdrive:Travel-Bundles/$PROJECT/Project" "$DST/Project-Travel-Return/"
echo "Dry run above. Press enter to apply..."
read
rclone copy -P "gdrive:Travel-Bundles/$PROJECT/Project" "$DST/Project-Travel-Return/"
echo "Edits landed in $DST/Project-Travel-Return/"
echo "Next: open .prproj in Premiere on Vector, 'Attach Proxies' → point at Proxies/ folder (already linked by relative path), then Make Offline → Original Media for finishing export."
Relink strategy: Premiere's proxy workflow stores the raw path and proxy path in the .prproj. On Sol the raws are "offline" (greyed) but proxies play. On Vector, because the raw paths are identical (/Volumes/Workspace/JustinWieb-VR/... → mapped to W:\JustinWieb-VR\...), Premiere re-links automatically. The one-time setup is saving the project on Vector with "Toggle Proxies" checked so both media states are remembered.
4.5 Shorts pipeline (Venus-only)¶
- Justin shoots vertical with A7IV (portrait cradle) or captures from Quest/Rayneo directly, already 2160×3840 MKV.
- On home network: UDev nightly cron runs
ffmpegto transcode those vertical clips into an iOS-friendly 1080×1920 H.264 intogdrive:JWVR-Shorts-Inbox/. - Venus has Google Drive app → Files → LumaFusion imports directly from Drive. No AirDrop step needed.
- Edit + caption (CapCut auto-subtitles) → export 1080×1920 → post natively from Venus to IG Reels/TikTok/YouTube Shorts.
- After posting, LumaFusion exports land in Venus's camera roll; n8n can watch a shared iCloud folder + backup to
/mnt/workspace/JustinWieb-VR/YYYY/<project>/Exports/Shorts/for recordkeeping.
5. Cloud Service Tradeoffs¶
| Service | $/TB/mo | Free tier | Write speed (hotel 20 Mbps up) | Fit |
|---|---|---|---|---|
| Google Drive (existing, 2 TB plan Justin already pays) | ~$5 on 2 TB plan | , | 20 Mbps = ~2.3 MB/s | ★★★★★ Use for project bundles, brand assets, shorts inbox. Already mounted on UDev via rclone. Zero friction. |
| Backblaze B2 | $6 | 10 GB | Same (network-bound) | ★★★★ Add for cold-tier proxy archive + disaster-recovery of .prproj files. S3-compatible, rclone-supported, no per-file overhead. Buy when Drive hits 80% full. |
| Frame.io (Adobe, Creator/Team plans) | Included in CC Pro, 500 GB | 500 GB w/ CC | Same | ★★★ Strong Premiere integration (proxy workflow UI native in PPro), but the real value is client review, not travel storage. Revisit when Justin starts paid sponsor reviews where a brand wants to comment on cuts. Not worth setting up for solo travel edits. |
| Dropbox Smart Sync | $12 | 2 GB | Same | ★☆☆ Duplicative with Drive. Skip unless a client mandates it. |
| iCloud Drive | $10 for 2 TB | 5 GB | Same | ★★ Fine for Venus camera roll backup and shorts exports (already exists via Apple One if Justin has it), but Mac-locked and no Vector/UDev native client. Not primary. |
Recommendation: Stay on Google Drive for 90% of cases. Add Backblaze B2 as a ~$30/month cold archive for proxies + project file history once the archive gets big enough to matter. Keep Frame.io in reserve as a client-review tool, not travel storage.
6. Bandwidth Budget¶
All projections assume A7IV content dominates. Proxies are 1/20 of raw.
| Uplink scenario | Up speed | Down speed | Quest-Ad bundle (500 MB) | CES bundle (5 GB) | Raw clip grab (1 GB) |
|---|---|---|---|---|---|
| Home Google Fiber | 1000+ Mbps | 1000+ Mbps | <10 s | <1 min | <15 s |
| Hotel wifi (good) | 20 Mbps | 50 Mbps | ~3.5 min (pull) | ~35 min | ~3 min |
| Hotel wifi (typical) | 5 Mbps | 15 Mbps | ~4.5 min | ~45 min | ~9 min |
| Airport / cafe wifi | 10 Mbps | 25 Mbps | ~3 min | ~30 min | ~5.5 min |
| T-Mobile cellular hotspot | 20 Mbps up / 100 Mbps down | , | ~40 s pull | ~7 min | ~80 s |
| In-flight wifi (GoGo) | 0.5 Mbps | 1 Mbps | 🚫 1+ hour | 🚫 >1 day | 🚫 3 hours |
What's feasible:
- Pre-trip bundle pull to Sol: always do this on home wifi the night before travel. Never plan to pull a 5 GB bundle on hotel wifi.
- On-trip "forgot a clip": Tailscale SMB to Finn + targeted rclone → a 1 GB clip pulls in ~9 min on hotel wifi. Acceptable.
- On-trip project-file sync back to Drive: .prproj is <10 MB. Rclone auto-save script on Sol every 15 min is trivial bandwidth.
- In-flight: only tiny .prproj sync works. Treat flights as "edit against already-local proxies, sync when landed."
Cellular warning: 5 GB bundle pull on cellular = ~4 GB of plan data. On a 50 GB/mo plan that's 8%. Don't do it habitually, default to "bundle at home, edit offline, sync project-file only on cellular."
7. Security Notes¶
- No credentials ever land on Sol.
- YouTube OAuth stays in n8n's encrypted DB. Decorator Crab owns that pipeline when Justin greenlights.
- IG/TikTok/X OAuth likewise, never as files on Sol.
-
Any
.envor credential file that leaks onto a bundle is a breach risk. Scriptprep-travel-bundle.shabove already excludes.env,*.key,*.pemby default (add an explicit deny-list: I'll put it in when Justin approves). -
Sol disk is the weakest link.
- Enable FileVault if not already (probably is: Mac default).
-
Use a per-trip
~/JWVR-Travel/directory; after return, nuke it (rm -rf ~/JWVR-Travel/*). Drive is authoritative. -
rclone config on Sol uses OAuth, not password.
-
Drive OAuth token in
~/.config/rclone/rclone.confis refreshable and revocable per-device. If Sol is lost, revoke that token from Google Account → Connected Apps. Do not copy the UDev rclone.conf to Sol, runrclone configon Sol fresh to get its own token. -
Tailscale on Sol.
- Currently showing offline 37 days in the UDev
tailscale statusoutput. That means if Justin travels today he can't reach Finn over Tailscale. Fix before first travel trip: re-login Tailscale on Sol, verifytailscale ping finnworks. -
Enable Finn's subnet router (Finn already "offers exit node" per status) so Sol can reach
192.168.86.67via Tailscale → SMB without VPN shenanigans. -
Backup of traveling project state.
- Sol → Google Drive
.prprojsave every 15 min via a launchd agent (one-line script). Cheap, protects against Sol loss. -
On return, the UDev pull-script keeps the pre-edit
.prprojalongside the returned one (Project-Travel-Return/sibling) so Justin can diff/roll back. -
Stay inside
USER.mdrules. - No personal-Gmail OAuth grants anywhere in this pipeline.
- No public ports opened: Tailscale + Cloudflare tunnels only.
- No plaintext secrets in git. The bundle scripts store no credentials.
8. Phased Rollout¶
Phase 1, "Make proxies exist" (this week)
1. Standardize project layout: update the canonical template to Footage/ Assets/ Audio/ Project/ Exports/ Docs/ Proxies/. Write a short brands/justinwieb-vr/project-template.md + a scripts/jwvr/new-project.sh that scaffolds.
2. Deploy scripts/jwvr/generate-proxies.sh, cron every 15 min on UDev, initially limited to 2026/ projects. Let it churn overnight on the backlog.
3. Validate: open Quest-Ad-3-Traitors .prproj on Vector, attach generated proxies, verify playback + relink-to-original toggles work.
Phase 2, "Make travel possible" (pre-next-trip)
4. Deploy prep-travel-bundle.sh + pull-travel-edits.sh on UDev.
5. Install rclone on Sol, configure its own gdrive: remote, test pull of a small 500 MB bundle end-to-end.
6. Fix Tailscale on Sol (re-auth), test Finn SMB reach over Tailscale.
7. Do a dry-run: Justin picks a 2026 project, bundles it, pulls on Sol, opens Premiere, makes a trivial edit, syncs project back, UDev reconciles.
Phase 3, "Make shorts first-class" (next ~2 weeks)
8. Venus pipeline: nightly UDev cron transcodes the portrait mkv captures from glasses/Quest projects into gdrive:JWVR-Shorts-Inbox/.
9. Validate: Venus → LumaFusion → post to 3 platforms from one export.
10. Optional: Venus camera roll → iCloud → n8n ingest back to Workspace/JustinWieb-VR/YYYY/
Phase 4, "Observability" (after Phase 3 stable)
11. Content-calendar surface: n8n ingests JustinWiebVR-Projects.xlsx (already in Drive) weekly, creates a dashboard panel (fleet dashboard dashboard/index.html already exists, add a JWVR tile) showing shot/edited/posted columns per project.
12. Thumbnail pipeline: codify Thumbnail/ as a required output folder, UDev script lints that each project has a thumbnail before it's marked "ready."
Phase 5, "Monetization ingestion" (Decorator Crab territory)
13. Separate handoff (decorator-crab-master-plan-2026-04-21.md, already exists) owns YouTube Analytics + affiliate-link performance → infra/context-api SQLite. Do NOT conflate into this handoff. Just flag the hook.
9. Open Decisions (numbered, with recommendations)¶
- Proxy location: inside project folder, or in a parallel
Proxies/tree? -
Recommend in-project (
<project>/Proxies/<base>_proxy.mp4). Keeps project self-contained. Premiere's Attach Proxies maps_proxy.mp4suffix automatically. Parallel tree makes bundling harder. -
Edit on Sol natively or via Frame.io?
-
Recommend native for now. Frame.io only earns its keep when clients review cuts. Revisit after first paid brand-deal with review cycle.
-
Transcode host: UDev (4 vCPU VM) or Finn direct (i9-13900H 14-core)?
-
Recommend Finn, triggered via SSH from UDev. Finn has QuickSync hardware acceleration available for H.264 encoding, 10× faster than libx264 software. UDev stays the orchestrator; Finn does the heavy pixel work. Will speed up the CES backlog from ~10 hours to ~1 hour.
-
Cloud tier: stay on Google Drive or add Backblaze B2 now?
-
Recommend stay on Drive until 80% full. Current Drive footprint is tiny (~5 GB per Justin's own note from 2026-03-15). Room for 50+ project bundles before quota pressure. Add B2 when cold-archive mass hits ~1 TB.
-
Auto-post scheduling: n8n now or wait for Decorator Crab?
-
Recommend wait for Decorator Crab for YouTube (per security rules). IG/TikTok/X scheduled posting via n8n is fine to start early, lower-stakes OAuth, and those creds can live in n8n encrypted DB.
-
Standardize project folder names going forward?
-
Recommend yes, now. The Quest-Ad-3-Traitors layout is the cleanest (Footage/Assets/Audio/Docs/Exports/Project). Older projects with only
Assets/(raw footage dumped there) orFinal/vsExports/should be migrated lazily, rename only when touched, not a full backfill. -
Should Shorts be a separate brand/channel or under JWVR?
-
Observed evidence: no dedicated Shorts project folder exists. Portrait captures live inside the parent project's
Assets/. Recommend inside-parent, one project = all its outputs, including vertical. Cleaner for attribution and analytics. -
Vector ↔ UDev↔ Sol: keep SMB the canonical raw-access path on home LAN?
-
Yes, already works (Vector via 10 Gbps SFP+ direct link; UDev via NFS; Sol via SMB over 192.168.86.67). Nothing to change.
-
Single canonical project template directory, where does it live?
- Recommend
brands/justinwieb-vr/project-template/with empty folders + aREADME.mddescribing conventions.scripts/jwvr/new-project.sh 2026-05-15_Meta-Connect-Prepdoescp -rto spin a new one.
Appendix A: Files and paths referenced¶
- Source of truth (never moved):
/mnt/workspace/JustinWieb-VR/YYYY/YYYY-MM-DD_Project-Name/ - Brand assets:
/mnt/workspace/Google-Drive/Business/JustinWieb-VR/Brand-Assets/(509 MB) - Records:
/mnt/workspace/Google-Drive/Business/JustinWieb-VR/Records/(832 MB, by year) - Project tracker spreadsheet:
/mnt/workspace/Google-Drive/Business/JustinWieb-VR/2026/JustinWiebVR-Projects.xlsx - New scripts (to build):
/home/justinwieb/forge/scripts/jwvr/{generate-proxies.sh,prep-travel-bundle.sh,pull-travel-edits.sh,new-project.sh} - New project template (to build):
/home/justinwieb/forge/brands/justinwieb-vr/project-template/ - Cloud:
gdrive:Travel-Bundles/<project>/andgdrive:JWVR-Shorts-Inbox/ - Tailscale IPs: Finn
100.112.22.2, UDev100.97.43.104, Sol100.88.217.97(offline 37d, re-auth needed), Venus100.68.73.1(offline 7d)
Appendix B: Direct evidence cited¶
- CES-Master-2026/Assets/C2009.MP4:
h264, 3840x2160, yuv422p10le, 59.94 fps, 201 Mbps video, 223 Mbps total, PCM 16-bit audio - Quest-Ad-3-Traitors/Footage/C2352.MP4:
h264, 3840x2160, yuv420p, 29.97 fps, 56 Mbps video, 62 Mbps total - Rayneo-Air-4-Pro-Batman/Assets/2026-03-12 14-08-59.mkv:
h264, 2160x3840 (portrait), 60 fps, 29 Mbps total, aac audio - Rayneo-Air-4-Pro-Batman/Assets/IMG_8476.mov:
h264, 3840x2160, 30 fps, 45 Mbps total - Finn NFS
/etc/exports: locked to 192.168.86.50 only,no_root_squashfor UDev - Finn SMB:
[Workspace]and[Media]shares,valid users = justinwieb,force user = justinwieb - Tailscale (UDev perspective):
Sol 100.88.217.97 offline 37d,Venus 100.68.73.1 offline 7d,Finn offers exit node
End of handoff. Next: Justin review → greenlight Phase 1 (proxy automation) → I or a worker builds scripts/jwvr/generate-proxies.sh + schedules cron. No action until greenlit.