Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Cheetah: A Lightweight Virtual Machine Manager for macOS (macspot.net)
94 points by darcyliu on Aug 31, 2023 | hide | past | favorite | 53 comments


there seem to be a large number of wrappers around Apple's ARM Virtualization.framework: VirtualBuddy, Viable, Tart, vz, virtualOS, Virtual Machines Hub, Cheetah, etc, etc

not sure we need yet another one. a comprehensive comparison of all of them would be nice.


This is because there is very little code required to write one.


That's why I laugh when I see they want to charge a subscription for this. It's easy enough for any competent developer to take available open source tools and crank out something to meet their needs in an afternoon.

Before UTM came out I was using xhyve with a little custom scripting. Not a solution for the masses but good enough for me.


That's the "I could implement dropbox with sftp and rsync in an afternoon" response. It's nice not to have to, and people can be forgiven for exchanging money for time.


In case you aren't aware, UTM is a full featured VM solution for Apple Silicon machines which is freely available and easy to use.


It’s $10, so they’re clearly also not unaware of the effort needed to support software. It’s fine for different people to have different takes on a common concept and let the market sort it out.


It's only $10 if purchase it from the app store, the official website offers a free download.


I have the skills to build it myself from source and sideload (mostly dealing with Apple's obnoxious code signing certificate infrastructure), but will gladly pay the $10 to fund the development. Too bad the iOS version of UTM is not available on the iOS App Store and forces sideloading. I might get around to installing it on my iPad one day (there is the excellent QEMU-based iSH on the App Store, however).


Yes, I’m aware: the context was that there is a non-trivial effort to maintain things.


One of my favorite comments on HN https://news.ycombinator.com/item?id=9224


That comment has been unfairly misinterpreted over the years.

https://news.ycombinator.com/item?id=37265112


I’m so fed up of paying for software subscriptions. If I can choose between a single payment and a subscription service, I go for the one-shot every time. I don’t even know how to describe it, but it just nauseates me at this point. I’ve also cancelled Netflix and Amazon Prime is not going to be renewed either. I know it’s irrational but I’ve just been pushed to the brink.


Subscription is a psychology hack.

As an average Joe, if I see a one-off fee of $60, it seems like a lot of money upfront and makes the decision hard and may be if I stall a but, I will forget about the whole thing by next weekend.

Compare that to $5/month, doesn’t look so bad, I spend that amount for a good coffee and donut daily… let me enter my credit-card there… eventually I forget about this in one week but am continued being charged and there are too many little charges for me to go over and figure out where my money is going.

This subscription model is a psychology hack to reduce the resistance of general people and not targeted at us, who try to be extra cautious about the value proposition over long term.

P.S. I attended some marketing fluff seminar from big honcho sales people as part of business trip, thought I’d share it about where this sudden rise of subscription model came from.


That's not typically where the software industry sets the one-time purchase though. 18-30 months is more typical. In your example that would be $5/mo for software costing between perhaps $100-150.

If it's set correctly, and the software is actually valuable enough to be worth something, there's a more balanced tradeoff between the risk of overpaying and underpaying and the benefit of the subscription acting like an inexpensive trial that will likely convert to a one-time purchase if the buyer is budget-minded.

(That said, it's certainly true that you can approach the same pricing strategies fairly or greedily; I've overheard both.)


Basically it’s a dark pattern.


Yeah, I refuse to buy any product that requires a subscript simply to be able to use it. A subscription should bring new value every month, like a magazine. I'm OK with subscribing to streaming video services as long as they keep updating the content.

I mostly run open source at this point because I'm also tire of everything commercial having telemetry built in.


Yeah that’s a good point: if substantial value is added every month (as in a streaming service), a subscription model is not quite so offensive. Subscription models for software that remains essentially static (aside from bug-fixes and occasional features) is just a rip-off. And yes, I understand that these folks need a constant revenue stream to pay their bills… but so does everybody else, including the mom & pop grocery stores that have to get by with whatever margin they make on the goods they sell and don’t have the option of charging for a monthly membership just to have the privilege of walking through their door.

This crap has to stop. I’ve stopped paying for subscriptions. Hopefully I’m not the only one and revenues will be impacted enough for developers to react.

I’m sure I’ll draw substantial ire from developers here who depend on the subscription model but I don’t really care. You have monthly expenses for your AWS services? Mom & pop pay for rent. Unlike them you can probably re-architect your app to rely on on-device processing. I’m through with this crap.


Afternoon of a competent developer is a cost of $500-2000. If the subscription is $4.99 a month, in the cheapest scenario you would need 8 years to accrue $500. It's very unlikely that a developer is going to spend 8 years at one company, so spending afternoon on this is a false economy. Unless you want to learn something and perhaps start selling similar product on the side...


$2000 seems very expensive for an afternoon unless you’re making $1M/year. The other thing missing from your calculus to consider is that it’s a learning opportunity which offsets the actual time for creating it.

Also, plenty of people have hobbies. That’s why we have OSS.


$2000 a day is a standard rate for a short term assignment, I know people who charge this much for software development services.

That being said it's more likely you would look at $500.

> The other thing missing from your calculus to consider is that it’s a learning opportunity which offsets the actual time for creating it.

You are also learning while you are being paid for doing it.

> Also, plenty of people have hobbies. That’s why we have OSS.

OSS is being popularised by big corporations because it saves them money on R&D in the long run. Otherwise they would have to pay for a lot of development of projects that would not necessarily be a success within the company. Instead they can pick and choose from projects already "preselected" for them by the community and written by gullible developers who are unlikely going to get even a tiny fraction of money made on their software.

Don't get me wrong OSS is great, but it should be illegal for businesses to use it without paying royalties, otherwise it's just a pure exploitation.

For some reason there is this notion "if it is a someone's hobby then they shouldn't charge money for it". In my country you have to at least pay someone a minimum wage.


There's a command line tool on github; https://github.com/mrchoke/RunLinuxVM


Hi all, thank you all for the comments, suggestions, and the questions.

Yes, Cheetah is just another GUI wrapper of the Virtualization.framework. It was mainly created for my personal needs. The original version was modified from Apple’s sample code with the Objective-C version in 2022. I want it to be able to run in the background, managed from the Menu Bar, and easily configurate the settings, not only for the number of compute units or memory size, but more importantly, the hard disk size. Cheetah is an updated version that I developed this summer, starting around Aug 10th with SwiftUI. As a developer, I always strive to learn new stuff every year. So basically speaking, when compared to other existing solutions based on Virtualization.framework, there isn't much difference, unless the feature could make my life easier (e.g., detecting the assigned IP address, keeping the instance running in the background after closing the GUI window).

I spent around two or three hours after work every day in the past two weeks to make it available for download from the Mac App Store. I know there are just a few people still making Mac Apps since people are more likely to pay for and install apps on their phones. I do not expect this app to make me rich, but I need to pay the Apple Developer account bills every year. So, the subscription price is $4.99 per year (not monthly) if you want to run more than two instances (please note that due to Apple’s license, you can only run two macOS virtual instances at the same time; subscribing to Cheetah does not enable you to bypass this restriction). That means $500 is enough for you to use it for 100 years.

As I said, it is not something to make big money, and I haven’t spent too much time on it so far. The product description is generated by ChatGPT since I am not a native English Speaker, and the Logo is generated by stable diffusion. I would appreciate it if anyone could help with the docs or app Logo. All the remaining icons are from SF Symbols. I would like to keep it as small as possible (as you know Apple’s storage is expensive) to expose macOS’s Virtualization feature to everyone in a simple way as a gift (for free within two instances).

Currently, Cheetah has about 6000 lines of code, with 55% written in Swift and 45% in Objective-C. I’ll continue to keep it small and simple, as light as possible. I won’t add new features for running other guest OS unless Virtualization supports it, as there are already many other tools like UTM that already support it. I might invest some time in the future to make it work for Apple silicon to run FreeBSD if I have the time.

Please feel free to comment, provide suggestions, or ask questions.


Any advantages/features this offers over UTM?


I'm not sure, but I just tested and my kali linux and mac os UTM VMs both started instantly.


We historically used Parallels to create virtual machines used as build environments for MacOS based software. Then, when we switched to apple silicon, it stopped working (you could install a MacOS virtual machine, but it was based on an apple dev image and you could not connect to your own apple id for signing, etc.)

We gave up and bought a few mac minis. Does anyone know if those issues have been solved by cheetah, or some of the other virtual machine managers mentioned by @dinkblam?


Parallels 19 pro is out. I know it has the ability to clone serial numbers and enroll in ASM/DEP. So it's worth asking them.

Edit: in UTM my serial number is completely different from the host.


the inability to log in with an Apple ID in a MacOS VM is a decision made by Apple. you can certainly sign without logging in, but I don't think you can submit to the store in a VM.

you can see how they build tart here, including signing and entitlements and so on: https://github.com/cirruslabs/tart/blob/main/.cirrus.yml


I thought https://tart.run/ was for this purpose?


Have you looked into writing your own? It's actually quite easy


Which macOS vmm has a nice cli or declarative VM definitions?

I haven’t found any solution I like all that much…


https://github.com/cirruslabs/tart

or

brew install tart (this gets you the last open source version)


What’s the difference between this and orbstack?


this honestly looks like a wish.com version of orbstack. the documentation site is like if someone took orbstack docs and sliced and diced out all the stuff that wasn't relevant. https://docs.orbstack.dev/

the lack of screenshots, lack of detailed explanations about how it works makes me really think this is just a trojan horse or honeypot type of application that has ulterior motives.


Which is funny because it seems like Orbstack feels like a variant of colima/lima trying to add value via a mac native UI, docs, etc.


This page mentions x86_64. Does this mean that I can choose Windows as the guest OS?

https://macspot.net/features.html


You can absolutely run Windows for ARM on UTM, which uses virtualization.framework. I imagine this’ll work fine too, but haven’t tested.

The mention of x86 on that page is about running x86-64 compiled Linux binaries inside an Linux ARM virtual machine.


It will use emulation, which is slow.


It was so slow to run an x86 ubuntu os on an apple arm that it was unusuable. I switched to running an arm ubuntu on apple arm, that was fast.


No, it will use Rosetta 2, which uses a combination of JIT and AOT to do binary translation, which is actually quite fast.


No, it will not, it is not supported with windows emulated machines. It will work for linux machines to some degree using the additional binfmt handlers which can call out to rosetta. But that's mostly in user space.


Does Rosetta 2 apply to OS or apps in VMs? I’m not so sure about that.


Only apps in VMs (and only for Linux x86-64 guests at that), unfortunately.

Here’s Apple’s documentation on the mechanism: https://developer.apple.com/documentation/virtualization/run...


Look forward to checking this out, I currently run UTM to have K3s running on my Mac mini Server (m2), I’m torn between moving to Asahi Linux (Fedora) and continuing to use VMs.


> I’m torn between moving to Asahi Linux (Fedora) and continuing to use VMs.

This is no different to WSL 2, which doesn't require dual booting, migrating or moving OSes. It seems fast enough and the integration gets out of the way.

I'd rather have full support for VMs on macOS today with all the apps, than fully migrate to Asahi and wait for them to fix their issues on top of the Linux desktop issues getting in the way.


One reason I bought a macbook pro was that it has superb speakers and power management on its native OS. This determined the question to be a no-brainer for me.

If I ever want an arm server for a homelab, I'll rather wait for something made specifically to run Linux with full upstream support (meaning SBBR/UEFI). A NUC-like thing would surely be a way to go.


> If I ever want an arm server for a homelab, I'll rather wait for something made specifically to run Linux with full upstream support (meaning SBBR/UEFI). A NUC-like thing would surely be a way to go.

https://flings.vmware.com/esxi-arm-edition


Orbstack now does kubernetes


Cheetah utilizes the cutting-edge Virtualization.framework technology to offer an exceptional experience in creating and managing virtual machines for both macOS and Linux-based operating systems.


'kdrag0n wrote here https://news.ycombinator.com/item?id=36189550 that Virtualization.framework isn't really much better than QEMU. What do you think?


I do think Virtualization.framework is generally better overall, for what it's worth — just not the panacea that people make it out to be sometimes :)

My main point was that Apple has few inherent advantages over third-party VMMs like QEMU; it just happens to be better than the current off-the-shelf alternatives. (Apple's restrictions around Rosetta and private ISA extensions are an exception, making it significantly less appealing to use anything else in practice.)

If not for Rosetta I would've most likely written (or at least made plans to write) a custom VMM forked from an OSS one for OrbStack. My early experiments have shown that quite a few improvements are possible.


Personally I find Vzf faster with less resource overhead than QEMU, but I've had some issues when running nodejs applications inside it (specifically when using the vz backend on colima).


Virtualization uses the same Hypervisor backend that QEMU does. There’s not much difference in compute performance, and devices depend on the quality of their drivers.


So - the default macOS virtualisation?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: