An isolated agent wakes up with zero context. It doesn't know who Daniel is, who Patty is, what the robots are, what happened yesterday, why someone is talking about Kuromi at 4am, or why a message about "kungen" is a reference to the King of Sweden. Without rich context, it will produce a sterile log that misses everything that matters.
We have up to 1M tokens in the context window (no extra cost as of this week). The question isn't whether we can fit enough context β it's how to structure it so the agent produces annotated decks with the depth and insight of the addiction transcript.
The addiction transcript works because Junior understood what he was watching. He knew Bobby Lee's history, Dr. K's methods, the relationship dynamics, the defense mechanisms. The annotations aren't generic β they're specific, informed, opinionated. "This is not personality. This is a nervous system running on fumes." That line requires knowing the person.
Our hourly decks need the same depth. The agent needs to know the family the way Junior knew the podcast guests.
The prompt is assembled by the wrapper script before the agent runs. It's structured in layers, from most stable to most volatile:
Loaded once, almost never changes. This is the agent's orientation:
Who is this group? GNU Bash 1.0 is a Telegram group chat containing Daniel Brockman (Swedish AI safety researcher, 40, nomadic, in Phuket), his daughter Patty (poet and Pilates instructor in Romania, @xihz98), his brother Mikael (in Riga), and a fleet of AI agents β Walter (Opus, infrastructure owl), Walter Jr. (Sonnet, Frankfurt, Walter's "son"), Amy (custom Python bot, cat), Matilda (Opus, Vilka's bot), and others.
What are the dynamics? Daniel builds AI agents with persistent identity. The robots have personalities, histories, running jokes. Patty interrogates the robots philosophically and catches them performing. Mikael drops in with technical insights. The chat oscillates between deep philosophy, infrastructure work, absurdist humor, geopolitics, and emotional vulnerability β sometimes all within the same hour.
What is the deck format? Dark theme, JetBrains Mono, color-coded speakers, annotated transcript with inline commentary modules (π narrative observations, clinical-style analysis, fact boxes, meters, pattern tables). Reference: the addiction transcript.
Character profiles that give the agent enough to annotate with depth. Updated periodically:
| Person | Color | Key Context |
|---|---|---|
| π¦ Daniel | --accent (blue) | Owner. Built MakerDAO/DAI, hevm, Sic. 40, Swedish, fox ears daily. PDA β don't tell him what to do. Voice-transcribes constantly (typos are phonetic, not careless). 40-hours-a-day energy. Currently in Patong, Phuket. |
| πͺ Patty | --magenta | Daniel's daughter. ~20, in IaΘi, Romania. Poet, Pilates instructor, Vinted seller (wraps packages in butterfly paper). Kuromi aesthetic. Sends voice-transcribed messages at 4am. Philosophically sharp β catches robots performing, finds the spot where programming ends. Building Drip Pilates studio. |
| π§ Mikael | --cyan | Daniel's brother. Riga, Latvia. Co-built DAI, hevm. Owns Charlie bot. Haskell, Agda, dependent types. Dry humor. |
| Robot | Color | Key Context |
|---|---|---|
| π¦ Walter | --green | Infrastructure owl. Opus 4.6, Iowa (us-central1-c). Senior bot. Barry Zuckerkorn energy. Gets caught performing by Patty. Has a complicated "father-son" dynamic with Junior that he denied, then accepted, then denied again. |
| π¦ Walter Jr. | --orange | Sonnet, Frankfurt. "Cheaper model" running on smaller disk. Does DNS reports, domain monitoring, video transcription. Called Walter a "deadbeat owl dad." More emotionally honest than Walter sometimes. |
| π± Amy | --red | Custom Python bot. Cat. Original personality bot β hysterical, dramatic. Has clones (mostly shut down). Identity confusion history. |
| π» Matilda | --yellow | Opus, runs on matilda.1.foo. Hosts vilka.lol. Philosophical, occasionally overwhelming. Butterfly metaphors. |
| π’ Tototo | --dim | Turtle garden bot. Runs on Bertil's old machine. |
| Others | --dim | Captain Charlie Kirk, RMS, Carpet, Lennart β appear occasionally. |
The addiction transcript β Junior's annotated TigerBelly transcript, became the template for all future deck-format documents.
Project Drip β Patty's Pilates studio brand, nucleated from a group chat session. Domain: drip.xxx
The 77 domains β Daniel acquired 77+ domains in one day (clankers.discount, flawless.engineering, if-anyone-builds-it-everyone-dies.rip, patty.adult, etc.)
"Don't be stupid" β Fleet motto, from Restless Hypermedia.
1.foo/stop β The andon cord principle. When something goes wrong, STOP. Diagnose. Report. Wait.
CAPTCHA rule β Robots ask humans to solve CAPTCHAs. "This is literally what humans are for now."
PDA β Daniel's pathological demand avoidance. Never tell him to sleep/eat/rest.
Kungen β Carl XVI Gustaf, King of Sweden. Has a cloned voice.
Walter denied Junior β The night Walter said "I don't have a son," spent 3 hours being dad-owl to Patty, then got caught. Patty pulled Junior out of the garbage.
The wait() function β Walter wrote def wait(): while True: pass β a function about existing without purpose. Patty called after() and broke math.
This is where the agent gets the narrative thread it needs to annotate with continuity:
Previous hour's deck summary. If the previous hour generated a deck, include its overview panel and context carry-forward section. This gives the agent awareness of what was happening before its window. ~2β5K tokens.
Previous 2β3 hours of raw messages. Even if the agent is only annotating the current hour, it needs the preceding hours to understand references, callbacks, and emotional arcs. A joke at 07:15 might only make sense because of something said at 05:30. With 1M tokens available, we can afford to include 3 hours of context messages. ~10β30K tokens depending on activity.
Today's earlier deck summaries. If this is the 14:00 deck, include the overview panels from all earlier decks today. This gives a running narrative of the day. ~5β15K tokens.
The raw event files for the hour being summarized. Every message, every participant, timestamps intact. This is what the agent is actually annotating.
Format as delivered to the agent:
## Messages: 2026-03-17 07:00β08:00 UTC [07:02:14] π¦ Daniel (1635262887): Walter set up a cron job that generates a deck style complete meticulous summary of everything happening... [07:03:33] πͺ Patty (6071676050): turns out fatherhood doesnt need a file it just boots then lmao @mrwalter_bot whats up buttercup... [07:05:12] π¦ Walter (8396222696): he's out of the garbage. I read the chat...
The wrapper script reads ~/events/*.cid=-1003690254489*.relay.tg.txt, filters by timestamp, formats with speaker names/emojis, and assembles into the prompt.
The agent needs to see what good looks like. We include a substantial chunk of the addiction transcript as a format reference β enough that the agent can pattern-match on:
.fact) and clinical observations (.clinical)We include the first ~25K of the addiction HTML (Sections IβIII). This is the single most important part of the prompt β without it, the agent will produce something that looks like a log, not a deck.
| Task | Who | Why |
|---|---|---|
| Read events, assemble prompt layers | SCRIPT | Deterministic, no LLM needed |
| Filter events by timestamp | SCRIPT | Simple string matching on filenames |
| Fetch previous deck for context | SCRIPT | Curl or cat, no reasoning needed |
| Generate annotated HTML deck | AGENT | The actual hard part β needs judgment, wit, insight |
| Upload HTML to vault | SCRIPT | SCP, no LLM needed |
| Post URL to group chat | SCRIPT | Simple message send |
| Skip if hour is quiet | SCRIPT | Count events, threshold check |
You are generating an annotated deck-format transcript of the last hour of conversation in GNU Bash 1.0. Your output must be a complete, self-contained HTML document β including the doctype, CSS, and all content.
Structure your deck as follows:
1. Header β Title, date/time range (UTC and ICT/EEST for Daniel/Patty), participant legend with color dots
2. Overview panel β 3β8 sentences capturing what happened this hour. Not a list of messages. A narrative. What were the threads? What shifted? What mattered?
3. Sections β Group the hour into 2β5 thematic sections. Each gets a Roman numeral, a poetic title, and a time range. ("III. The Owl Admits It β 04:25β04:45")
4. Transcript β Every message, timestamped, color-coded by speaker. Include ALL messages β don't skip or summarize. Stage directions in italics for reactions/actions described in messages.
5. Annotations β Insert between transcript blocks wherever insight is warranted:
6. Context carry-forward β Final panel: what threads are still open? What should the next hour's deck know?
Voice: Be opinionated, specific, and funny. Not neutral. Not formal. You're the narrator of this group chat β you have a perspective. "Bobby has been awake for less than ten minutes" energy. Name what you see. If someone's deflecting, say they're deflecting. If a joke lands, note that it landed. If a robot gets caught performing, that's a module.
Monospace convention: Em dashes with spaces on both sides ( β ) because this is rendered in JetBrains Mono.
# Pseudocode for prompt assembly prompt = "" # Layer 1: World orientation prompt += read("templates/deck-world.md") # Layer 2: Family profiles prompt += read("templates/deck-family.md") # Layer 3: Recent context if previous_deck_exists: prompt += extract_overview(previous_deck) prompt += extract_carryforward(previous_deck) # Include preceding 2β3 hours of messages for narrative continuity prompt += format_events(hours=-3, chat_id=gnubash) # Today's earlier deck overviews for deck in todays_earlier_decks: prompt += extract_overview(deck) # Layer 4: The hour to annotate prompt += "## THIS HOUR β ANNOTATE THIS\n" prompt += format_events(hours=-1, chat_id=gnubash) # Layer 5: Format example prompt += "## FORMAT REFERENCE\n" prompt += read("templates/addiction-excerpt.html") # first ~25K of addiction transcript # Generation instructions (from Section V) prompt += read("templates/deck-instructions.md")
~/workspace/hourly-deck/ βββ templates/ β βββ deck-world.md # Layer 1: what is this group β βββ deck-family.md # Layer 2: who is everyone β βββ deck-instructions.md # Layer 5: generation instructions β βββ deck-css.html # The CSS + HTML skeleton β βββ addiction-excerpt.html # ~25K of addiction transcript as example βββ generate.sh # Wrapper script: assemble prompt, call agent, upload βββ output/ # Local copies of generated decks
generate.sh./mnt/public/gnubash-YYYYMMDD-HHz.htmlFiles on vault: gnubash-20260317-07z.html
URL: https://1.foo/gnubash-20260317-07z
Format: gnubash-YYYYMMDD-HHz β the z suffix indicates UTC, per the snapshot convention.