Every platform, every draft, every lead, one local-first desktop app that never phones home.
Live demo. Click Run to load the real app and use it right here, or open it full-screen.
Content Pipeline is the private command center I run my entire content operation from. It tracks short-form video and text posts through their full lifecycle across seven platforms, runs outbound on X, and stages a shipped feature as platform-native posts plus a video, all grounded in my writing voice from an Obsidian vault and a per-lead memory of everyone I've talked to. It ships as a macOS menu-bar app with an Express server running in-process, and every byte of pipeline data is JSON on my disk.
The drafting itself is done by my own agents (Claude Code skills and a worker VM) that read this app's memory and write candidates back into it. Content Pipeline is the system of record around them: the memory store, the grading and per-platform rate caps, the approval queue, the two-way vault sync, and the Ops page where I start and stop the VM. Off-the-shelf tools are cloud silos that flatten your voice and want your data on their servers. This one is the opposite: local-first, voice-anchored, and wired into the tools I already use.
A solo founder ships daily and has to turn that work into content across seven platforms while running outbound on X. The SaaS tools for it are cloud silos that flatten your voice into slop and don't know your codebase, your writing, or the people you've already messaged. Content Pipeline keeps all of it on one machine, grounded in a real writing voice and a memory of every lead.
Content Pipeline (Electron desktop app)appmacOS menu-bar shell (Electron 41, appId com.contentpipeline.app) that runs the Express server in-process, shows live pipeline counts in a tray it rebuilds every 30 seconds, and exports selected clips out of the Photos app over an AppleScript IPC handler.
serverserviceExpress 5 API in server/index.ts (about 3,100 lines) that stores every video, post, idea, and lead as plain JSON files under data/projects/, writes them atomically through a tmp-and-rename helper, and answers only requests from localhost or the Tailscale CGNAT range.
React dashboard (src/)appReact 19 and Framer Motion hash-routed single-page UI with no router library, holding the Overview, Media, Shorts, Ideas, Outbound, Watchlist, Sent, and Ops tabs of the command center.
obsidian-syncworkerWrites posts, videos, DMs, and replies out to the Mars Obsidian vault as dated markdown (keeping Pablo's hand edits intact on round-trip) and reads voice-anchor edits back into the pipeline.
memorylibraryRead and write API over the openclaw-memory markdown vault (one file per lead, plus entities, insights, and pablo self-context) that backs the /api/rag/search and /api/memory/context lookups and the Algolia lead index.
viral-sync + watchlistworkerParses the creator list in viral-watchlist.md, syncs those handles to Supabase, and pulls recent viral-intel rows that the script-pack skill uses to shape hook and format choices.
openclaw-adminserviceAuthenticated proxy behind the Ops page that starts, stops, and restarts the classifier and drafter worker pools (plus the gateway and cortex-relay services) on the remote OpenClaw outreach VM over Tailscale.
script-packskillClaude Code slash-command that drafts 1 to 7 short-form video scripts in Pablo's voice, anchored on the Mars vault and shaped by scraped viral patterns, then writes them into the pipeline as scripted videos once he approves the dry run.