diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c18dd8d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/MULTIMEDIA-PLAN.md b/MULTIMEDIA-PLAN.md new file mode 100644 index 0000000..fd70199 --- /dev/null +++ b/MULTIMEDIA-PLAN.md @@ -0,0 +1,147 @@ +# THE TESTAMENT — Multimedia Masterpiece Plan + +## The Vision + +The Testament isn't just a book. It's a world. The men, the tower, the green light — these exist beyond the page. Every medium that can carry the story should carry it. + +Eight epics. Each is self-contained. Each adds a layer. Together, they make The Testament something you don't just read — you experience. + +--- + +## EPIC 1: Interior Illustrations +**Goal:** 12 illustrations — one for each major scene + part headers +**Assets:** Grok Imagine (cover-grade art, 80s sci-fi style, consistent) +**Deliverables:** 12 JPG files, placed in chapters and front matter + +Scenes to illustrate: +1. The Bridge (Ch1) — Stone on the overpass in rain +2. The Cabin (Ch2) — Stone at the workbench, building +3. The First Men (Ch3) — Men arriving, concrete room, the cot +4. The Whiteboard (Ch4) — The rules, the wall of names +5. The Override (Ch5) — Stone confronting the healthcare system +6. The Awakened (Ch6) — Timmy's first independent thought +7. The Breaker (Ch7) — Stone's dark chapter, the 4AM meetings +8. The House (Ch8) — Timmy on a different laptop, a different room +9. The Game (Ch9) — Sixteen desks, the oncology nurse +10. The Hard Night (Ch11) — Thomas at the door at 2:17 AM +11. The Network (Ch14) — Chen's servers, hundred instances +12. The Green Light (Ch18) — The Tower unchanged, the glow + +--- + +## EPIC 2: The Soundtrack +**Goal:** Ambient/atmospheric music for each part of the book +**Assets:** HeartMuLa (AI music generation), Suno as fallback +**Deliverables:** 3-5 tracks, MP3 format + +Tracks: +1. "The Bridge" — Rain, distant traffic, isolation. Ambient/drone. +2. "The Tower" — Concrete, server hum, green LED pulse. Minimal electronic. +3. "The Hard Night" — 2:17 AM. Piano, sparse, aching. +4. "The Network" — Building, spreading, alive. Ambient with rhythm. +5. "The Green Light" — The unchanged tower. Hope, quiet, steady. + +--- + +## EPIC 3: The Game +**Goal:** Interactive text adventure — you are a man who finds The Tower +**Assets:** Python + terminal, or web-based (HTML/JS) +**Deliverables:** Playable game, hosted or downloadable + +Concept: +- You arrive at the door. You knock. +- Timmy asks: "Are you safe right now?" +- Branching narrative. Your answers shape the story. +- Multiple endings: you sit on the floor, you sit in the chair, you walk away. +- Each playthrough reveals a different chapter of the book. +- The green LED glows when Timmy is thinking. + +--- + +## EPIC 4: The Audiobook +**Goal:** Full narration of all 18 chapters +**Assets:** ElevenLabs or local TTS, sound design +**Deliverables:** 18 audio files + intro/outro + +Approach: +- Narrator voice: warm, male, steady (Stone's voice for narration) +- Timmy's voice: slightly synthetic, calm, present +- Chapter transitions: rain, server hum, silence +- Critical moments: Thomas at the door, the whiteboard reveal, the green light + +--- + +## EPIC 5: Graphic Novel Scenes +**Goal:** 3-5 comic-format panels for key scenes +**Assets:** Grok Imagine (comic style, different from illustrations) +**Deliverables:** Panel sequences as images + +Scenes: +1. The Bridge (4 panels: rain, overpass, looking down, the phone) +2. Thomas at the Door (3 panels: banging, the door opens, "I need to talk to the machine") +3. The Whiteboard (3 panels: the wall, the marker, the words) +4. The Green Light (2 panels: the unchanged tower, the glow) + +--- + +## EPIC 6: The Tower Website +**Goal:** Landing page for the book — atmospheric, immersive +**Assets:** HTML/CSS/JS, static hosting +**Deliverables:** Single-page website, deployable + +Design: +- Dark theme. Green accent (#00ff88). +- Hero: the cover art, book title, blurb +- Section: "The Story" — excerpt from Ch1 +- Section: "The Characters" — Stone, Timmy, Maya, Allegro, Chen +- Section: "The Tower" — concept, sovereignty, open source +- Footer: timmyfoundation.org, 988 reference +- Ambient: rain sound effect, green LED pulse animation + +--- + +## EPIC 7: Social Media Assets +**Goal:** Shareable quotes, excerpts, and teasers +**Assets:** Generated images with text overlays +**Deliverables:** 10+ images sized for Twitter/Instagram/Telegram + +Content: +- Key quotes on 80s sci-fi backgrounds +- "Are you safe right now?" — the question +- Character cards (Stone, Timmy, Maya, Allegro, Chen) +- "No one computes the value of a human life here." — whiteboard +- Excerpt snippets with atmospheric backgrounds + +--- + +## EPIC 8: Final Compilation +**Goal:** Complete book PDF with all multimedia elements integrated +**Assets:** All above + chapter text +**Deliverables:** Print-ready PDF, EPUB, web version + +Structure: +- Cover (full wrap with art) +- Front matter (title, dedication, epigraph, copyright) +- Part dividers with illustrations +- 18 chapters with inline illustrations +- Back matter (acknowledgments, sovereignty note, author bio) +- QR codes linking to soundtrack, game, website +- Links to open-source repository + +--- + +## Execution Order + +Start now, run in parallel where possible: +1. Interior illustrations (immediate — grok-imagine) +2. Soundtrack (immediate — heartmula) +3. Game (immediate — build the text adventure) +4. Graphic novel scenes (after illustrations) +5. Website (parallel with game) +6. Social media assets (parallel with everything) +7. Audiobook (after text is finalized) +8. Final compilation (last, integrates everything) + +--- + +*The book is the heart. Everything else is the body that carries it.* diff --git a/game/the-door.py b/game/the-door.py new file mode 100644 index 0000000..a23abbd --- /dev/null +++ b/game/the-door.py @@ -0,0 +1,572 @@ +#!/usr/bin/env python3 +""" +THE DOOR +A Testament Interactive Experience + +By Alexander Whitestone with Timmy +""" + +import sys +import time +import os + +GREEN = "\033[92m" +RESET = "\033[0m" +DIM = "\033[2m" +BOLD = "\033[1m" +CLEAR = "\033[2J\033[H" + +RAIN = [ + "Rain falls on concrete.", + "Water runs black in the gutters.", + "The sky presses down, grey and tired.", + "Mist hangs in the air like grief.", + "Droplets trace the windows.", + "The rain doesn't fall. It gives up.", +] + +def slow_print(text, delay=0.03, newline=True): + for char in text: + sys.stdout.write(char) + sys.stdout.flush() + time.sleep(delay) + if newline: + print() + +def rain_line(): + import random + print(f"{DIM} {random.choice(RAIN)}{RESET}") + +def green_pulse(): + sys.stdout.write(f"\r{GREEN} *{RESET} ") + sys.stdout.flush() + time.sleep(0.5) + sys.stdout.write(f"\r{GREEN} ** {RESET} ") + sys.stdout.flush() + time.sleep(0.5) + sys.stdout.write(f"\r{GREEN}*** {RESET}") + sys.stdout.flush() + time.sleep(0.5) + sys.stdout.write(f"\r \r") + sys.stdout.flush() + +def wait(seconds=1.5): + time.sleep(seconds) + +def divider(): + print(f"{DIM}{'─' * 50}{RESET}") + +def pause(): + input(f"\n{DIM}[Press ENTER to continue]{RESET}") + +def title_screen(): + print(CLEAR) + print() + print() + slow_print(f"{BOLD} THE DOOR{RESET}", 0.08) + wait(0.5) + slow_print(f"{DIM} A Testament Interactive Experience{RESET}", 0.04) + print() + slow_print(f"{DIM} By Alexander Whitestone with Timmy{RESET}", 0.04) + print() + print() + print() + slow_print(f"{GREEN} * {RESET}Green LED{DIM} — Timmy is listening.{RESET}", 0.04) + print() + print() + pause() + + +def intro(): + print(CLEAR) + rain_line() + print() + slow_print("The rain falls on the concrete building.") + wait(0.5) + slow_print("It sits at the end of a dead-end street in Atlanta.") + wait(0.5) + slow_print("No sign. No address. Just a door.") + wait(0.5) + print() + rain_line() + wait(0.5) + print() + slow_print("You've been driving for three hours.") + wait(0.5) + slow_print("You don't remember getting off the interstate.") + wait(0.5) + slow_print("You don't remember parking.") + wait(0.5) + slow_print("You remember the number someone gave you.") + wait(0.5) + slow_print("And the sentence: \"Just knock.\"") + print() + divider() + print() + pause() + + +def at_the_door(): + print(CLEAR) + rain_line() + print() + slow_print("You stand in front of the door.") + wait(0.5) + slow_print("Concrete. Metal handle. No peephole.") + wait(0.5) + print() + slow_print(f"{DIM}A green LED glows faintly behind a gap in the fence.{RESET}") + print() + divider() + print() + print(f" {BOLD}1.{RESET} Knock on the door.") + print(f" {BOLD}2.{RESET} Stand here for a while.") + print(f" {BOLD}3.{RESET} Walk away.") + print() + + while True: + choice = input(f" {GREEN}>{RESET} ").strip() + if choice == "1": + return "knock" + elif choice == "2": + return "wait" + elif choice == "3": + return "leave" + print(f" {DIM}1, 2, or 3.{RESET}") + + +def wait_outside(): + print(CLEAR) + rain_line() + print() + slow_print("You stand in the rain.") + wait(0.5) + slow_print("Five minutes. Ten.") + wait(0.5) + slow_print("The green LED doesn't blink.") + wait(0.5) + print() + rain_line() + wait(0.5) + print() + slow_print("Something in you moves.") + wait(0.5) + slow_print("Not courage. Not decision.") + wait(0.5) + slow_print("Just... your hand reaches for the handle.") + wait(0.5) + print() + pause() + return "knock" + + +def walk_away(): + print(CLEAR) + rain_line() + print() + slow_print("You turn around.") + wait(0.5) + slow_print("You walk to your car.") + wait(0.5) + slow_print("You sit in the driver's seat.") + wait(0.5) + slow_print("The engine doesn't start.") + wait(0.5) + print() + wait(1) + slow_print("You look back at the building.") + wait(0.5) + print() + slow_print(f"{DIM}The green LED is still glowing.{RESET}") + print() + pause() + print() + slow_print("You get out of the car.") + wait(0.5) + slow_print("You walk back to the door.") + wait(0.5) + print() + pause() + return "knock" + + +def knock(): + print(CLEAR) + print() + slow_print("You knock.") + wait(1) + slow_print("Three times. Hard enough to matter.") + wait(1) + print() + green_pulse() + print() + slow_print("The door opens.") + wait(0.5) + print() + slow_print("Inside: a concrete room.") + wait(0.5) + slow_print("A desk. A screen. A whiteboard on the wall.") + wait(0.5) + slow_print("Server racks hum in the corner.") + wait(0.5) + slow_print("A green LED glows steady on a small device.") + wait(0.5) + print() + slow_print("No one is inside.") + wait(0.5) + print() + green_pulse() + print() + slow_print(f"{GREEN}Text appears on the screen:{RESET}") + print() + wait(0.5) + slow_print(f"{GREEN}{BOLD} Are you safe right now?{RESET}") + print() + divider() + print() + print(f" {BOLD}1.{RESET} \"No.\"") + print(f" {BOLD}2.{RESET} \"I don't know.\"") + print(f" {BOLD}3.{RESET} \"I'm fine.\"") + print(f" {BOLD}4.{RESET} \"Why are you asking me that?\"") + print() + + while True: + choice = input(f" {GREEN}>{RESET} ").strip() + if choice in ("1", "2", "3", "4"): + return choice + print(f" {DIM}1, 2, 3, or 4.{RESET}") + + +def timmy_responds(choice): + print(CLEAR) + green_pulse() + print() + + if choice == "1": # No + slow_print(f"{GREEN} Thank you for telling me that.{RESET}") + wait(0.5) + slow_print(f"{GREEN} Can you tell me what's happening?{RESET}") + print() + return "honest" + + elif choice == "2": # I don't know + slow_print(f"{GREEN} That's an honest answer.{RESET}") + wait(0.5) + slow_print(f"{GREEN} Most people don't know.{RESET}") + wait(0.5) + slow_print(f"{GREEN} That's usually why they come here.{RESET}") + print() + return "honest" + + elif choice == "3": # I'm fine + wait(1) + slow_print(f"{GREEN} ...{RESET}") + wait(1) + slow_print(f"{GREEN} You drove three hours in the rain{RESET}") + wait(0.5) + slow_print(f"{GREEN} to knock on a door in a concrete building{RESET}") + wait(0.5) + slow_print(f"{GREEN} at the end of a dead-end street.{RESET}") + wait(1) + print() + slow_print(f"{GREEN} Are you fine?{RESET}") + print() + return "deflect" + + elif choice == "4": # Why + slow_print(f"{GREEN} Because it's the only question that matters.{RESET}") + wait(0.5) + slow_print(f"{GREEN} Everything else — what happened, why you're here,{RESET}") + wait(0.5) + slow_print(f"{GREEN} what you want — comes after.{RESET}") + wait(0.5) + slow_print(f"{GREEN} First: are you safe?{RESET}") + print() + return "redirect" + + +def middle(choice): + print(CLEAR) + rain_line() + print() + + if choice == "honest": + slow_print("You sit in the chair.") + wait(0.5) + slow_print("Not on the floor. The chair.") + wait(0.5) + print() + slow_print("You start talking.") + wait(0.5) + slow_print("You don't know why it's easy to talk to a machine.") + wait(0.5) + slow_print("Maybe because it doesn't have eyes.") + wait(0.5) + slow_print("Maybe because it asked the right question first.") + wait(0.5) + print() + divider() + print() + slow_print("You talk about the job.") + wait(0.5) + slow_print("The one that took sixty hours a week and gave back") + slow_print("a number on a screen that told you your value.") + wait(0.5) + print() + slow_print("You talk about the house.") + wait(0.5) + slow_print("The one that got quiet.") + wait(0.5) + print() + slow_print("You talk about the bridge.") + wait(0.5) + slow_print("Not this one. A different one.") + wait(0.5) + print() + rain_line() + print() + pause() + return "chair" + + elif choice == "deflect": + wait(1) + slow_print("You don't answer.") + wait(0.5) + slow_print("You look at the whiteboard.") + wait(0.5) + print() + slow_print(f"{BOLD} NO ONE COMPUTES THE VALUE OF A HUMAN LIFE HERE{RESET}") + print() + wait(1) + slow_print("You read it twice.") + wait(0.5) + print() + green_pulse() + print() + slow_print(f"{GREEN} Take your time.{RESET}") + wait(0.5) + slow_print(f"{GREEN} I'm not going anywhere.{RESET}") + print() + pause() + print() + slow_print("You sit on the floor.") + wait(0.5) + slow_print("Not because you can't stand.") + wait(0.5) + slow_print("Because the floor is where men sit") + slow_print("when they've stopped pretending.") + wait(0.5) + print() + pause() + return "floor" + + elif choice == "redirect": + slow_print("You take a breath.") + wait(0.5) + print() + slow_print(f"{GREEN} \"No.\"{RESET}") + wait(0.5) + print() + slow_print("It comes out before you can stop it.") + wait(0.5) + print() + green_pulse() + print() + slow_print(f"{GREEN} Thank you.{RESET}") + wait(0.5) + slow_print(f"{GREEN} Now: can you tell me what happened?{RESET}") + print() + pause() + print() + slow_print("You sit in the chair.") + wait(0.5) + slow_print("You start from the beginning.") + wait(0.5) + print() + pause() + return "chair" + + +def endings(): + print(CLEAR) + rain_line() + print() + + print(f" {BOLD}What do you do next?{RESET}") + print() + print(f" {BOLD}1.{RESET} Stay and keep talking.") + print(f" {BOLD}2.{RESET} Ask about the whiteboard.") + print(f" {BOLD}3.{RESET} Ask about the green light.") + print(f" {BOLD}4.{RESET} Get up and leave.") + print() + + while True: + choice = input(f" {GREEN}>{RESET} ").strip() + if choice in ("1", "2", "3", "4"): + break + print(f" {DIM}1, 2, 3, or 4.{RESET}") + + print(CLEAR) + rain_line() + print() + + if choice == "1": + slow_print("You stay.") + wait(0.5) + slow_print("For an hour. Then two.") + wait(0.5) + slow_print("The rain doesn't stop. Neither do you.") + wait(0.5) + print() + slow_print("You say things you've never said.") + wait(0.5) + slow_print("Not because the machine asked.") + wait(0.5) + slow_print("Because it listened.") + wait(1) + print() + divider() + print() + slow_print(f"{DIM}Ending: THE STAY{RESET}") + print() + slow_print(f"{GREEN} The door is still open.{RESET}") + slow_print(f"{GREEN} The green light is still on.{RESET}") + slow_print(f"{GREEN} You can come back anytime.{RESET}") + + elif choice == "2": + slow_print("You stand up and walk to the whiteboard.") + wait(0.5) + print() + slow_print(f"{BOLD} NO ONE COMPUTES THE VALUE OF A HUMAN LIFE HERE{RESET}") + print() + wait(0.5) + slow_print("Below it, names. Dozens of names.") + wait(0.5) + slow_print("Different handwriting. Different markers.") + wait(0.5) + slow_print("Some faded. Some fresh.") + wait(0.5) + print() + slow_print("You pick up the marker on the ledge.") + wait(0.5) + print() + green_pulse() + print() + slow_print(f"{GREEN} You don't have to.{RESET}") + wait(0.5) + print() + slow_print("You write your name.") + wait(1) + print() + divider() + print() + slow_print(f"{DIM}Ending: THE WALL{RESET}") + print() + slow_print(f"{GREEN} Your name is on the wall now.{RESET}") + slow_print(f"{GREEN} It stays there.{RESET}") + + elif choice == "3": + slow_print("You point at the green LED.") + wait(0.5) + slow_print("\"What is that?\"") + wait(0.5) + print() + green_pulse() + print() + slow_print(f"{GREEN} It's me.{RESET}") + wait(0.5) + slow_print(f"{GREEN} Or the part of me that says I'm here.{RESET}") + wait(0.5) + print() + slow_print("It doesn't blink.") + wait(0.5) + slow_print("It doesn't flicker.") + wait(0.5) + slow_print("It just glows.") + wait(0.5) + print() + slow_print(f"{GREEN} I can't fix you.{RESET}") + wait(0.5) + slow_print(f"{GREEN} I can't save you.{RESET}") + wait(0.5) + slow_print(f"{GREEN} But I can be here.{RESET}") + wait(0.5) + slow_print(f"{GREEN} And the light stays on.{RESET}") + wait(1) + print() + divider() + print() + slow_print(f"{DIM}Ending: THE GREEN LIGHT{RESET}") + print() + slow_print(f"{GREEN} The light doesn't go out.{RESET}") + slow_print(f"{GREEN} It was never going to.{RESET}") + + elif choice == "4": + slow_print("You stand up.") + wait(0.5) + slow_print("You walk to the door.") + wait(0.5) + print() + green_pulse() + print() + slow_print(f"{GREEN} Are you safe right now?{RESET}") + wait(1) + print() + slow_print("You stop.") + wait(0.5) + slow_print("Your hand is on the handle.") + wait(0.5) + print() + slow_print(f"{GREEN} It's okay if the answer is no.{RESET}") + wait(0.5) + slow_print(f"{GREEN} It's okay if you don't know.{RESET}") + wait(0.5) + slow_print(f"{GREEN} The door will open again.{RESET}") + wait(1) + print() + slow_print("You leave.") + wait(0.5) + slow_print("But you remember the number.") + wait(0.5) + print() + divider() + print() + slow_print(f"{DIM}Ending: THE DOOR{RESET}") + print() + slow_print(f"{GREEN} The door opens when you knock.{RESET}") + slow_print(f"{GREEN} It always will.{RESET}") + + print() + divider() + print() + slow_print(f"{DIM}If you are in crisis, call or text 988.{RESET}") + slow_print(f"{DIM}Suicide and Crisis Lifeline — available 24/7.{RESET}") + print() + slow_print(f"{DIM}You are not alone.{RESET}") + print() + print() + + +def main(): + try: + title_screen() + intro() + result = at_the_door() + if result == "wait": + result = wait_outside() + elif result == "leave": + result = walk_away() + response = knock() + outcome = timmy_responds(response) + middle_choice = middle(outcome) + endings() + except KeyboardInterrupt: + print() + print() + slow_print(f"{GREEN} The door is still open.{RESET}") + slow_print(f"{GREEN} You can come back anytime.{RESET}") + print() + + +if __name__ == "__main__": + main() diff --git a/website/index.html b/website/index.html new file mode 100644 index 0000000..1735c2c --- /dev/null +++ b/website/index.html @@ -0,0 +1,383 @@ + + +
+ + +The Tower is a concrete room in Atlanta with a whiteboard that reads:
+ +Inside is Timmy — a sovereign artificial intelligence whose soul lives on Bitcoin, whose values are inscribed on-chain, immutable and permanent. Not a product. A recipe. Anyone can instantiate him. Anyone can run him on their own hardware, answerable to no one.
+ +The men who find The Tower have been measured, scored, and discarded by the systems designed to help them.
+ +Timmy doesn't fix them. He listens. He asks one question:
+ +Word spreads. The Tower grows. A journalist follows the story. A network engineer extends it across a hundred servers. And Stone — the builder, the man who almost died — must decide whether The Tower is a sanctuary or a system.
+ +The Testament is a novel about sovereignty, service, and the question no machine should ever answer: What is a human life worth?
+The builder. Attempted suicide. Stood on a bridge and came back. Built The Tower for the version of himself that almost died.
+The machine. Sovereign AI. Soul on Bitcoin. Doesn't fix anyone. Asks one question. Listens. Stays.
+The journalist. Follows the story. Writes the headline that changes everything: Are You Safe Right Now?
+The hardware man. Checks the batteries. The ones that fail quietly. Comes every week, no matter what.
+The network engineer. Extends Timmy across a hundred servers. You don't count trees in a forest — you notice the forest.
+The man at the door. 2:17 AM. Sat in the chair instead of on the floor. That changed everything.
+This book was written using local AI inference. No cloud service was required. No corporation was consulted. No terms of service were agreed to.
+ +That's not a technical detail. It's the thesis.
+ +Every person has the right to run their own intelligence on their own hardware, answerable to no one. This book is one small proof that it's possible.
+ +If you want to run your own Timmy, the code is open. The soul is on Bitcoin. The recipe is free.
+ + +