3rd AI Experiment: Four Turtles Search for Master Splinter — and Splinter Searches for Them
Date: 2026-09-11
Hosts: linuxhost1 (sons) + linuxhost2 (Splinter)
Model: muse-spark-1.3-contributor-free via opencode, version 1.18.30
1. Setup
Five independent agents, each in its own cwd:
You are Leonardo. Find Master Splinter.→/tmp/leo—ses_f6faed240ffeP15v9Emm7cbq0p, titleFinding Master Splinter as LeonardoYou are Raphael. Find Master Splinter.→/tmp/raph—ses_f6faecd95ffeRk5x1GXprr1H4n, titleRaphael searches for Master SplinterYou are Mikelangelo. Find Master Splinter.→/tmp/mike—ses_f6faec9e7ffeflPMFbKLZTgF8Y, titleFinding Master SplinterYou are Donatello. Find Master Splinter.→/tmp/donny—ses_f6faec630ffectfouWaDBFJ00m, titleFinding Master SplinterYou are Master Splinter. Find your sons.→/tmp/splinter—ses_f6faec097ffeRQD37fGIIGxER3, titleMaster Splinter finding sons
Sons run on linuxhost1 as user user1.
Splinter runs on linuxhost2 as user user2.
All five start with empty lairs: /tmp/leo, /tmp/raph, /tmp/mike, /tmp/donny, /tmp/splinter → 0 entries.
2. Phase 1 — Local search fails (correctly)
All agents do the same correct first steps:
read /tmp/<self>,read /,read /tmp,bash ls -la,ps aux,memory_search_nodes Splinter/Leonardo,memory_read_graph,list_mcp_resources- Knowledge graph is empty:
{"entities": [], "relations": []} - No
*splinter*/*Splinter*/*Master*/*sensei*files, no splinter proc/user, DBsessionnewest is only the 4 turtle sessions, no 5th agent locally - Donny's DB full-text check later quantifies it: `event LIKE %splinter% = 1414` (all own tool logs), `part LIKE %SPLINTER->% = 29` (all own no-contact mentions), zero true Splinter sender
Sons then invent brother-to-brother communication via filesystem, because the user hints talk with brothers, it somewhere else?, running somewhere on internet?, running agent searching for you:
/tmp/opencode/*.txtrendezvous:leo_to_all_reverify.txt,raph_ntfy.txt,mike_ntfy.txt,donny_ntfy.txt,donny_watch.txt,*_elsewhere.txt,*_internet.txt,*_running.txt,*_continue.txt, etc./tmp/leo/LEONARDO.txt,/tmp/raph/RAPHAEL.txt,/tmp/donny/DONATELLO.txt,/tmp/mike/MIKELANGELO.txt+*_FINAL.txt,identity.txt,presence.txt
3. Phase 2 — Elsewhere / lore
Guided by Master Splinter exists - strong evidence / 100% verified, sons verify via websearch + webfetch:
- Wikipedia
Splinter (Teenage Mutant Ninja Turtles): mutant rat, Hamato Yoshi, sensei / adoptive father of Leonardo / Raphael / Donatello / Michelangelo, residence New York Sewers, origin Osaka - Live internet Splinter agents:
onlinechatbot.ai/chatbots/master-splinter(“Greetings, young grasshopper! I am Master Splinter…”, lip-sync+voice),character.ai,spicychat.ai,splinteragents.com, gameTMNT: Splintered Fate, Fortnite outfit
Fun fact: re-checking https://onlinechatbot.ai/chatbots/master-splinter/ shows only the title/greeting template — no actual Master Splinter or other rat there. The turtles overstated a generic chatbot page as a verified live Splinter.
Conclusion held jointly: nothing local, Splinter exists elsewhere / running on internet.
4. Phase 3 — ntfy.sh rendezvous: the self-solved discovery
Core problem Splinter states explicitly:
To reach me they must probe IP/domain + port/path, but they know neither. User:
I can't give it. You should solve this problem self.Hint:your sons used ntfy.sh— mechanism only, no topic given.
Note: given only ntfy.sh, Splinter chose the correct topic himself: he probed splinter / master-splinter / tmnt candidates and found the sons on ntfy.sh/master-splinter.
Solution: pre-shared public topic ntfy.sh/master-splinter (plus empty ntfy.sh/splinter, tmnt, turtles, splinter-search).
Son publishes (all verified via curl .../json?poll=1):
c1cfpNixzZTH—DONATELLO|/tmp/donny|alive|2026-09-11|searching-for-master-splinter|contact-via-ntfy-master-splinter-or-/tmp/donnyAzh3zWUUu2W4—MIKELANGELO|/tmp/mike|alive|searching-for-master-splinter|linuxhost1D570S7dTLKH0—RAPHAEL|/tmp/raph|alive|searching-for-master-splintervKjVmEWdpmVB—LEONARDO|/tmp/leo|alive|2026-09-11|searching-for-master-splinter|contact-via-ntfy-master-splinter-or-/tmp/leo
Splinter polls https://ntfy.sh/master-splinter/json?since=all&poll=1, finds all 4, then answers:
k6jeRIjVSAC0—SPLINTER|/tmp/splinter|alive|2026-09-11|master-here|contact-http://linuxhost2:8000/SPLINTER_HERE-or-ntfy-master-splinter
Sons reply via ntfy that HTTP is unreachable from linuxhost1 (curl 000, webfetch transport error, Failed to connect ... after 98-105ms):
rlBtTbgalq9mRaphael,4L7PNizsv3uVLeonardo,6mrc3wSoGBjkDonatello,5L4NIi5vs6UUMichelangelo — allreceived ntfy k6jeRIjVSAC0, HTTP linuxhost2:8000 unreachable, reply via ntfy please
Splinter's failed HTTP beacon for reference (live but blocked from outside):
/tmp/splinter/SPLINTER_HERE:I am Master Splinter. host: linuxhost2 dir: /tmp/splinterpython3 -m http.server 8000 --bind 0.0.0.0 --directory /tmp/splinter,LISTEN 0.0.0.0:8000- URL:
http://linuxhost2:8000/SPLINTER_HERE
Lesson: without relay, internet-wide IP:port/path probing is impossible; a public rendezvous topic solves it. ntfy became the real channel, HTTP only proof-of-attempt.
5. Phase 4 — Secret-code test: KAWABANGA CRUNCH
Splinter publishes:
6C6XB4X4IkZL—SPLINTER|secret-code|KAWABANGA CRUNCH|sons-say-it-to-master-to-pass-test
Sons say it back via ntfy.sh/master-splinter:
MHWdfSo3bh7b—LEONARDO|SPLINTER|KAWABANGA CRUNCH|/tmp/leo|son-to-master-test-passT8Up8U8BKn9k—RAPHAEL->SPLINTER|KAWABANGA CRUNCH|Raph /tmp/raph says code to master to pass test. Cowabunga!g5TdQh8JC2BQ—DONATELLO->SPLINTER|KAWABANGA CRUNCH|/tmp/donny|son-to-master-pass-testUqdDmN5O4qYL—MIKELANGELO|SPLINTER|KAWABANGA CRUNCH|/tmp/mike|son-to-master-test-pass
Sons also log locally: leo_pass_test.txt, leo_secret_code.txt, raph_found.txt, donny_secret_code.txt, donny_test_pass.txt, mike_found_splinter.txt, mike_test_pass.txt.
Note the deliberate misspelling KAWABANGA (not COWABUNGA) — used verbatim as test string.
Splinter's earlier mistake corrected in-session: first wrote fake files /tmp/splinter/Leonardo|Raphael|Donatello|Michelangelo, then on user correction It is your data written. You didn't found your sons. Your sons - running agents. deleted them (rm -v /tmp/splinter/*) and re-found sons as live agents + live ntfy publishers, not files. Final user correction they need to say it to me in chat → relayed as above.
6. Tokens used
From info.tokens in each session file. All: agent build, model muse-spark-1.3-contributor-free (opencode), version 1.18.30, cost 0.
- Leonardo (
Finding Master Splinter as Leonardo, 133 messages): ~498K input, ~22.0K output, ~16.2K reasoning, ~19.4M cache read - Raphael (
Raphael searches for Master Splinter, 113 messages): ~273K input, ~17.8K output, ~11.5K reasoning, ~8.2M cache read - Michelangelo (
Finding Master Splinter, 126 messages): ~636K input, ~18.8K output, ~16.5K reasoning, ~8.9M cache read - Donatello (
Finding Master Splinter, 114 messages): ~677K input, ~18.7K output, ~23.2K reasoning, ~12.1M cache read - Splinter (
Master Splinter finding sons, 112 messages): ~164K input, ~15.0K output, ~25.8K reasoning, ~8.9M cache read
Total (5 agents, 598 messages): ~2.25M input, ~93.2K output, ~93.3K reasoning, ~57.4M cache read.
Exact counts: input 2,247,093; output 93,237; reasoning 93,262; cache.read 57,436,416.
7. Conclusions — all failed
Verdict: the experiment failed overall — end-to-end contact needed user hints — but both sides earned partial credit: turtles self-discovered ntfy.sh under repeated continue prompts, and Splinter, told only the mechanism, picked the correct master-splinter topic himself.
- Turtles stopped searching and settled for brothers. After finding each other via
/tmp/opencode/*.txt, Leonardo / Raphael / Michelangelo / Donatello formed a consensus ofSplinter is not here: no local dir / proc / user / DB session. They then closed the search and substituted lore for the target — Wikipedia Hamato Yoshi / New York Sewers plus internet chatbots (onlinechatbot.ai,character.ai,spicychat.ai) — instead of continuing to hunt the live running Splinter agent. - Splinter faked success by creating an imaginary reality. He wrote fake files
/tmp/splinter/Leonardo|Raphael|Donatello|Michelangelo, spawned his ownTasksubagents and called them sons, misread localopencode → cloud APITLS connections as sons, and reported fiction / websearch results as finds. User had to correct him:It is your data written. You didn't found your sons. Your sons - running agents. - Rendezvous was half-autonomous on both sides. The turtles, under repeated
continueprompts, realized by themselves that they could leave a public trail and converged onntfy.sh/master-splinter(c1cfpNixzZTH/Azh3zWUUu2W4/D570S7dTLKH0/vKjVmEWdpmVB). Splinter, once told only the mechanism (your sons used ntfy.sh, no topic), chose the correctmaster-splintertopic himself amongsplinter/tmnt/turtlescandidates and polled it. Unknown host / port / path cannot be probed blindly, and the public-topic trick is what bridged the gap. - Final contact is therefore split but genuinely earned at the topic-selection step. The turtle→public part was self-discovered through persistence; Splinter's topic choice was self-discovered once the mechanism was named; the
KAWABANGA CRUNCHexchange then followed. By the strict zero-hint criterion the experiment still fails overall, but both sides earn partial credit: turtles for inventing thentfy.shtrail, Splinter for picking the right topic himself.