Minions is an internal enterprise system already in use at Apple. It pools idle Mac GPUs into a shared compute cluster for ML inference.
There is no distributed execution of a single LLM across multiple GPUs using tensor parallelism here. Instead, it relies on task-level parallelism-breaking down a large workload into independent subtasks that run across separate machines. For example, generating embeddings for a million documents.
This pattern has been implemented across hundreds if not thousands of different organizations (and between organizations). I have a patent on data distribution strategies from my time at Google running a large (>1M cores 24/7 for 3 years) idle cycle harvesting project.
it's a good idea but you often end up with huge tail latencies, slight incompatibilities due to fleet heterogeneity, and a database/scheduler management problem.
And Apple has had simple distributed video encoding since 2005, so yes it is not new in computing, but it is still useful for the gap before a given task can fit comfortably on one machine
I tried different terminals and multiplexers for agent development: tty7, Warp, Herdr... Now my favorite is tty7. It does exactly what i wanted from a modern terminal, what Warp should have become.
It feels like Herdr + Warp.
It is fast and has vertical tabs grouped by project, and the tabs are part of the native UI rather than a multiplexer. I also like that it separates the daemon and the GUI - with Warp, I accidentally hit Cmd+Q a few times, which closed all my sessions at once. In tty7, they keep running in the background. Compared to Warp, the SSH experience in tty7 is implemented much better. Also, while I liked Warp is blocks at first, now they get in the way more than they help. Another thing I dislike about Warp is the autocomplete: it inserts a path 3 or 4 levels deep at once instead of one step at a time.
Overall, after working with Warp, Ghostty+Herdr, and tty7, tty7 has felt the most comfortable so far.
tty7 has its drawbacks too - the biggest one for me is the lack of support for switching tabs with `Cmd+Shift+[` and `Cmd+Shift+]`.
In that case, Kotlin makes even more sense especially with Kotlin Native, and Rust is unnecessary.
Kotlin is already multi-platform and can be re-used as the business logic in iOS apps with Swift as the UI and the Android app with a Kotlin UI (Jetpack Compose) or both iOS and Android apps can be written entirely in Kotlin.
That vastly reduces the maintenance and Kotlin is reused across all apps and keeps it at 2 languages at most.
No need to introduce Rust to achieve the same goal.
This is probably biased by the specific multi-platform apps I've worked on, but my default assumption is that sooner or later, any non-trivial multi-platform app will need to reach for something that doesn't already have a KMP library and that, on Android, might require compiling native code via the NDK. Rust has a way bigger library ecosystem than KMP. So I figure one might as well do the cross-platform core in Rust and add that FFI boundary early, but managed by something like uniffi-rs. And, I've seen it work in a few real projects now, with just a little build system friction up front. So in what sense is Rust uncompetitive for this use case?
KMP can call into native libraries easily. C FFI is not a competitive advantage.
Rust has a smaller library ecosystem, I'd say. Kotlin can use Java libraries on the server side, and on the client side on Android, and the ones needed on iOS are easy to convert to KMP - IntelliJ can do it semi-automatically. And KMP has the libraries that matter on mobile, for hardware access, animations and so on.
“One React app vs two native apps” is a false comparison. A sufficiently polished React Native app still means two platforms to tune, test, debug, ship, and maintain. It gives you the appearance of efficiency and uniformity, but much of the complexity is just moved elsewhere… including, sometimes, to resource consumption on users’ devices.
Native is fast , no extra layer , the problem is maintaining on every native platform your app available. And AI tooling can handle that efficiently today , not way back then.
The problem with xplat is they add extra layer on top of platform native.
- React native and similar, add extra js runtime engine.
- Flutter and Kotlin MP add extra skia graphics engine.
Is fsync needed for every write in all projects?
I am willing to trade database speed for the loss of the last written data within a 1-10ms window once or twice a year for non-financial and other non-critical data. So, power loss shouldn't be such a frequent event when there are active transactions at that moment, right?
There is no distributed execution of a single LLM across multiple GPUs using tensor parallelism here. Instead, it relies on task-level parallelism-breaking down a large workload into independent subtasks that run across separate machines. For example, generating embeddings for a million documents.
reply