Strappy AI: Like Siri AI for iOS 5+ and Mac OS X 10.4+

jeffburg

Tinkerer
Aug 17, 2025
64
61
18
Hello everyone, sorry I have been away for so long but work has been crazy lately and in my spare time I have been working on Strappy AI for my iPhone 5. But before I get started let me say: AI Disclosure: Strappy has been lovingly crafted for retro Apple devices by me. Also the writing in the Github README and associated blog post is 100% written by me. That said, the code is 100% AI generated.
Strappy is like Siri AI for jailbroken iPhones iOS 5+ and for Macs running Mac OS X 10.4 Tiger+. Strappy is a custom harness written in C that provides a suite of tools that the model can use to query your data from your apps on your iPhone. It also includes a coding assistant. Yes, a coding assistant! So that you can vibe-code iPhone apps RIGHT ON YOUR PHONE! Strappy is built on OpenRouter, so you can control the models and the providers you want to trust with your data.
This has been a really exciting project for me. Basically, while developing apps with AI I noticed that the LLM is really good at reading arbitrary data out of arbitrary SQLite databases. So I took that idea and ran with it. "What if I scanned for every SQLite database in my home folder and then gave the LLM access to them?" And thus Strappy was born. On retro versions of Mac OS X, SQLite is not as popular of a data format as on the iPhone, but since Mac OS X has better development tools, the Vibe Coding experience is better.

So if you want Siri AI for your retro jailbroken iPhone or a native vibe coding environment for your retro Mac, give Strappy a try. The GitHub project has downloads and installation instructions. And if you want a deeper dive into the full development story, check out my blog post. The blog post has many more demo videos, but I attached 2 to this forum post to give you a taste:
 

Attachments

  • 03-vacation-gemini.mp4
    5.1 MB · Views: 0
  • 05-pokedex-luna.mp4
    8 MB · Views: 0

nilobject

New Tinkerer
Nov 21, 2023
21
13
3
that's pretty 1337. good job.
could it find exploits in those systems?
can you explain more about getting data out of sqlite db's? i've been doing something similar for getting assets and data from resource forks and .pkg's
 

jeffburg

Tinkerer
Aug 17, 2025
64
61
18
Thanks!

I have not tried this or any LLM for these kinds of cybersecurity things. It would probably work in that these old versions of Mac OS X have so many known vulnerabilities. But most of the vulnerabilities are about getting in from the outside, so it would be better to use an LLM on a modern computer to try it out and explore. As for running it on Mac OS X Tiger for PPC for example, the main limitation would probably be tooling. Would the tools the LLM expects to be there to do cybersecurity research be available? Probably not.

As far as getting data out of resource forks and other assets, Strappy could definitely help you write small programs to do that. Since the resource fork and extended attributes (introduced in 10.4) are C api's in the SDK's provided by Xcode, Strappy could easily help you get that data out using small C programs. For arbitrary data blobs like the Doom WAD file for example... you would need some sort of basic command line HEX tool like hexdump which is included in Xcode for Tiger (I just tested). However, I did not add any functionality for Strappy to hand image data over to the LLM. So it will hand over the hex values and the LLM might be able to infer what kind of data is in there. But it won't be able to "see" any of the data. I could add this, I just have not yet.

The thing that is nice about SQLite is it's an easily queryable data format using SQL which is a universal syntax that the LLM's are well trained on. As well, most of the time the data stored in SQLite is text which is perfect for an LLM (large language model) because language is text. So it's sort of a magical combo. But I will give the counterexample as well. SQLite databases contain UNIX-like timestamps to represents dates... and the LLM could not do anything with those. It could not tell that a certain number represented a certain date. So I had to build special tools to allow the LLM to convert the timestamps manually (the old fashioned way) using C functions to convert the dates to ISO8601 format.

I hope this helps. Let me know if you try it and/or have any feedback or problems.