A pipeline Chief of Staff agent on the VPS decides which agent runs and when, reviews every run, is the only voice in Slack and owns the approval gate. A clock only wakes the Chief. Nothing publishes without Mphoka's check mark. Click any box to open it.
This pipeline is a standalone system beside the cockpit. It is not routed through the shared coordinator, is not a registered cockpit capability and does not replace the cockpit's technical income.stealth scope. The internal lane identifier remains is. It is built from the Cold Take pattern, with one difference: the Chief of Staff leads, so the agents have no timers of their own. Built 9 and 10 October 2026, switched on 10 October; this page reflects the state of 12 October 2026 (ticker, feedback loop and simple approvals added 11 October) and contains no credentials.
The sections below describe the lane as built in October. Where they differ, this block is current.
Claude Code on the VPS under a dedicated, unprivileged user. It is not the cockpit's Chief of Staff, not the Cold Take Chief and not the YouTube one.
Its own channel since 11 Oct, on the bot shared with Cold Take (Cold Take sometimes answers an IS message; harmless). No agent holds the Slack token.
Scans theme-page and income-niche accounts on Instagram for posts that beat their account's normal reach. Writes candidates with the post's media link, and notes proof sources such as attributed creator results.
Breaks each candidate into hook, structure, pacing and why it worked, and keeps the skeleton only. Transcribes video with ElevenLabs. Also derives the fixed look for the Reel and Story card shell from the winners.
Derived from analysis, never guessed, then set by Mphoka's approved changes C2 to C4: a static text block in Liberation Serif Bold on the theme colours, 7 s, 1080 by 1920, a lighter overlay with a soft gradient, 4 to 8 lines of at most 8 words. The renderer refuses rather than truncates.
Writes the 3 daily posts in the aspirational voice: two Reels and one Story card. Borrowed proof is always attributed. Reworks a post at most twice when Mphoka asks for changes.
Builds the Reel on the fixed shell with the signature clip and a music track. Draws the Story card as a 1080 by 1920 image from a written spec, with headless Chromium on the VPS. Uploads the media to the VPS upload host and checks it is reachable. Reel overlay text goes through reel.py, which needs the post's page id and refuses any word that is not in that post's own hook or caption. This blocks cut-off words and lines copied from another post (since 12 October).
Statuses: drafted, rendered, approved, scheduled, published. The Publisher writes scheduled only after it verifies the schedule, and published only on live confirmation.
Metrics are never stored here.
One message per post: name, hook, full caption, the media and a link to its Notion record. Posted by the Chief.
approve, approved, yes: approved.reject, skip, no: rejected.The Chief reads the decision, records it on the post in Notion and writes a work order. Used for the first 14 approvals on 11 Oct.
Re-checks the order against Notion, hands the media URL to the IS gate and schedules the post. Decides nothing and never touches Slack. A watcher starts it when an approved order is waiting.
Published through the self-hosted Postiz on the same VPS, through the IS gate only. Stories are Instagram only.
Pulls reach, views, saves, shares, likes and comments at 24 hours and 7 days through the IS gate. Reach is the headline number. Stories are read before they expire, or marked story expired, not measured.
Ranks the measured rebrand posts and writes numbered directives. Skips the week when fewer than 5 rebrand posts are measured in the last 7 days. Read-only on Notion. Anything beyond its remit is flagged for Mphoka's sign-off.
The last week before the rebrand ends on 10 Oct. Its numbers are pulled once at 24 hours and once at 7 days and logged as old-brand.
24 h pull done 11 Oct: 5 old Reels logged (Instagram views 132, 7, 121, 48 and 0 for a post under 24 h old; no saves, shares or likes; Facebook near zero). The 7 d pull follows on 17 Oct. A comparison line only, not the rebrand baseline.
Timed for the US scrolling hours.
What posted, what failed, what is waiting for you, and the agent runs it queues for the day.
Between the two Reels. No link sticker.
Scout on Mondays and Thursdays, then the DNA Analyst when candidates exist.
Only when there are published posts to measure. Signal follows on Mondays at 12:00.
Copywriter at 14:00, Renderer at 16:50.
The Chief posts the three posts for approval and runs its evening check.
Evening Reel. Clocks change on 25 October; the times stay in Brussels time.
On a post not yet approved it also counts as the approval.
Removes the queued post and schedules it at that Brussels time. An unclear time is asked back, never guessed.
Removes the post from the queue and closes it, so an old check mark cannot bring it back.
Checks in Postiz what actually exists, then schedules only the account that has nothing.
For a staged change C<n>: a check mark or approve applies it within about 5 minutes; a cross or reject closes it unchanged; undo rolls back the last applied change within 7 days. With two changes waiting, name one (approve C12). apply C<n>, drop C<n> and undo C<n> still work; misspellings are ignored on purpose. First reaction approval (C12) worked end to end on 11 Oct.
A small local service, separate from Cold Take's, holds the Postiz key and the Meta token. No agent holds either.
IS proves the Chief-led setup first. Cold Take is converted only afterwards, and only if Mphoka asks. IS never uses Cold Take's gate or accounts.
Every post waits for a check mark or an exact approving word. Questions go to Mphoka and are not treated as answers.
A root-owned, no-AI desk the Chief cannot edit, woken by the ticker. The Chief stages a change (C2 to C12 so far); a diff review is posted in the Chief's thread in #is-pipeline; nothing is applied until Mphoka approves it there. Only agent prompts, task scripts, the Reel and Story renderers and the rules files can be changed this way. Claude never applies changes for him.
A check mark or an approving word from Mphoka in Slack, or Status set to approved by him in Notion. An approval relayed from another chat is not accepted (tested 11 Oct).
The gate refuses more than 12 schedule requests a day (HTTP 429). Bigger batches are split over two days. The Publisher logs the refusal and does not retry. The next morning, once the limit has reset, the Chief queues one re-send for the refused posts. If that run also leaves them unscheduled, it alerts Mphoka instead of trying again.
A post cannot be marked rendered until its Media link is written and read back (set-media step, change C7). The Chief repairs an empty Media field before alerting. Before it schedules, the Publisher checks Media only with get-media.py, which reads the link from Notion and confirms it returns 200 (since 12 October; it had once misread a set link as empty).
The same Notion key, Slack bot and Postiz are used. IS has its own gate, its own Notion databases and its own [IS] tag in Slack. Metrics live in the shared Social Media Posts Log.
About 250 MB of free memory plus cache, shared with Cold Take. This is why agents start at least 25 minutes apart.
Reels to Instagram and Facebook, Story cards to Instagram only. Each was read back from Postiz at the right time (UTC is Brussels minus 2 h until 25 Oct). The first post goes out Mon 12 Oct 04:00.
Approved by Mphoka, but the gate's daily limit of 12 was used up. They are retried on Mon 12 Oct after the reset.
Scheduling is proven. The first real publish on both accounts is still to be checked.
Scout runs Mondays and Thursdays, then the DNA Analyst, to fill the following week.
The old posts are not in IS Posts, so Metrics does not pick them up. They are pulled by hand through the gate. If the gate cannot read pre-rebrand posts, the numbers must be exported from Meta.
get-media.py check for the Publisher, the reel.py source guard for the Renderer, and the Chief's morning re-send of approved posts the gate refused.The test before the next brand pipeline (The Lamp Hour) is built: next week's batch from Scout to Publisher with no manual rescue, Metrics writing its first rebrand rows, a clean 18:00 brief.
now, move to, pull and retry have not been used on a real post.
Remote control of a phone to place link stickers on Stories is a possible later step.