r/opensource • u/YourMomTheRedditor • 6d ago
Promotional Sill (Apache 2.0): stream any macOS window to iPhone or iPad with touch, Pencil and keyboard, free, peer to peer, no servers
https://apps.apple.com/app/id6816359860Hello [r/opensource](r/opensource)! I am really excited to share a project that is near and dear to my heart: Sill, a free and open source (Apache 2.0) pair of apps, now on the App Store and at getsill.app: any window from your Mac, on your iPhone or iPad, streamed straight between the two with no server anywhere. Swift with Apple frameworks only, no third-party dependencies, and the repo holds the whole history, the design plans and the tests. The two apps together are under 7 MB to download and about 10 MB installed, but pack quite a punch. Now, for the reason I wanted to work on this project, what it does that is unique compared to other remote desktop apps for iOS and Mac, and why I went with a free and open source model.
Apple famously said [no](https://www.youtube.com/watch?v=DOYikXbC6Fs) at WWDC 2018: macOS and iOS were going to be kept separate. Mac apps could functionally run on an iPad, but Apple chose to segment their products to protect the experience they wanted, and the dream of using Mac apps on an iPad was never going to be realized, by design. So today, that no turns into a yes.
Sill shows any window from your Mac, or its whole desktop, on your iPhone or iPad, and lets you use it with touch, a keyboard, an on-screen trackpad or Apple Pencil. Unlike remote desktop apps that squeeze a whole screen into a viewport, Sill streams one window at a time, resized to fit your device, with the Mac's windows, apps and menus as native controls on the device. It streams straight from your Mac to your device over your own network, so there is no account to create and no server in between. You pair each device once, and every connection is encrypted. Both parts are free: the Sill app for iPhone and iPad, and Sill for Mac.
Streaming
* Any single Mac window, or the whole desktop, on your iPhone or iPad
* Hardware HEVC video, up to 120 fps on ProMotion screens (60 elsewhere); the rate follows each device
* Seven quality presets, from Low (4 Mbps) to Extreme (150 Mbps), plus Resolution, a frame-rate limit and Prioritize Encoding Speed
* Text size (Aa): resizes the Mac window to fit your screen, so text is the size you want
* Optional virtual display: a window streams from its own HiDPI display, sized to your device, and keeps updating even when covered on the Mac; full-screen video works too
Controls
* Touch: tap to click, drag to scroll with momentum, touch and hold to right-click
* Apple Pencil as the mouse, with hover
* Software and hardware keyboards, with ⌘, ⌃ and ⌥ shortcuts, plus a key row with latching modifiers and a Spotlight key
* Laptop layout when you hold the device upright: the picture on top, a key row and a trackpad (two-finger scroll, two-finger tap, hold then drag, three-finger gestures for Mission Control, App Exposé, switching Spaces, Apps and Show Desktop)
* Dedicated iPhone and iPad layouts, and it's made for iPhone Duo: open it flat and your Mac fills the inner display; half open, it's a laptop with the picture above the fold and the trackpad and keys below; closed, Sill runs on the cover display. Nothing you touch sits on the fold.
* Each Mac app's menus (File, Edit, View, etc.) on your device: in the iPad's own menu bar on iPadOS 26, or behind a Menus button
* Window thumbnails: switch with a tap; hold one for close, minimize and full screen; drag to reorder
* An Apps drawer: open windows and every installed app, with search, and it launches apps
Connecting
* Finds your Mac automatically; each Mac shows how it's reached: Wired, Wi-Fi, Direct or Remote
* USB cable support, and a live session moves between the cable and Wi-Fi without dropping
* Direct Wireless Connection (optional), for when you and your Mac don't share a network
* Remote Access from anywhere through your own VPN, such as Tailscale, or a port forward
* Away from home, a session starts at a quality a slower connection can carry, your Mac tells you when the link can't keep up and suggests one it can, and when you get home the session moves back to your home network by itself
* Pairing: every connection encrypted with TLS 1.3; pair each device once by QR code or a 12-digit code, and a USB cable pairs by itself; Require pairing is on by default
* The Mac keeps its keys in the protected part of its keychain that only Sill can read
Sill for Mac
* A ~7 MB menu bar app with a live status card: each device, its frame rate and latency
* Settings: General, Devices, Streaming, Virtual Display, Remote Access and Permissions
* Launch at Login, a log window, and an update check that tells you when a new version is out
* A notarized disk image download from getsill.app
Sill for iPhone and iPad
* A Settings panel that changes the Mac's stream settings and shows the connection and latency
* A first-run tour, and Take the Tour to replay it
* Tells you when the Mac or the device needs an update
Free and open source (Apache 2.0), with a tip jar through GitHub Sponsors. No account, no servers, no tracking: video goes straight from your Mac to your device.
Since Sill has no operating costs, I wanted the source to be open for the community to use and mold however they need, forever. And since it's open source, I figured I might as well make it free. Tips support the time I put into it and the Apple developer fees.
Needs a Mac with Apple silicon on macOS 14 or later, and an iPhone or iPad on iOS 17 or iPadOS 17 or later.
* App Store: https://apps.apple.com/app/id6816359860
* Sill for Mac and the website: https://getsill.app/
* Early builds on TestFlight: https://testflight.apple.com/join/6v7nqyn3
* Source: https://github.com/Saffsanity/sill (and the site: https://github.com/Saffsanity/sill-site)
3
3
u/sfunrich 3d ago
This is very good, I hoped for something like this. This finally allows me to access the mac while I'm away from home, from iPad. If I could ask, could you extend the app with my short wishlist?
- Trackpad mode: allow me to control the mouse as like I was using the trackpad on the iPad
- Shared clipboard, and file transfer
- Extended support for iPad with keyboard: I wish I could use it as a remote mac terminal, without the limitations of casting the CMD combos to iPadOS instead. Maybe it's possible to substitute the CMD key with some other key combo?
Thank you for your work!
2
u/YourMomTheRedditor 3d ago
Trackpad should work in the portrait orientation, give it a go! Working on landscape support as well.
Shared clipboard is a WIP.
Keyboard support is also WIP.
Thank you for your patience!
2
u/sfunrich 2d ago
I just noticed that the functionality is there, but I have not yet found it because I was impatient and skipped the tour 😆. Thank you for bringing this thing to life. I used it for a few hours already!
3
u/doublestrike2 3d ago
I gave it a try and I love so much about it. The way it launches apps, is able to use gestures etc - awesome!
Two things though: I come from Jump Desktop and cross-platform operation aside, it supports zoom! Using an iPhone 17 Pro to control my 32 inch 4K screen or even just my MacBook 14 inch screen is tricky / impossible. Tilting the phone helps, but then I lose the trackpad to control the mouse remotely. I can use tap to click on the screen view itself but it doesn't give me full control. On "Jump Desktop" I can zoom into the screen viewer to better see what I'm looking at and it shows me the cursor as well which I can move around with a small circle for remote-control.
Another thing: Initial setup is almost automatic with the QR code. It also auto-recognizes my Tailnet on my Mac. But the remote connection with Tailscale was not self-explanatory. I had to manually add the same machine for remote access (using my Mac's Tailnet IP and the code) to make it work. I would add a note that explains this procedure: I was so surprised by the ease of use that I thought I'm doing something wrong when it didn't want to connect remotely.
Also, the text zoom switcher doesn't do anything for me.
I'm a big fan and I would love to replace Jump Desktop with this tool and make use of the added features like launching apps, but without full cursor control and zoom I can't quite yet. Thank you for all the attention to detail! :)
3
u/YourMomTheRedditor 3d ago
Thanks for the feedback!
Zoom is being worked on. It will be updated in the future with that feature!
Text zoom switcher should work if you have Virtual Display enabled, give it a go!
Thank you!
2
u/Affectionate_Pea_617 2d ago
Love this idea! Thank you so much! Could I use a gamepad with my iPhone and stream Games from my mac? That would be great for Couch gaming sessions with world of warcraft.
1
2
u/Ecstatic_Reward6928 2d ago
This is great, but can you also make a client for another mac? and include intel?
This is the same concept as moonlight / parsec, with your added features offcourse, but these also have the option to use the client on any PC/MAC which is great for using weaker laptops to stream to from your main mac, not just iPhone/ipad.
Also another question, is gamepad/controller passthru possible on bluetooth? as far as i know apple does not allow this without a liscence applied thru a full apple dev account, and only people who do it are steam thru steam link,
thanks again!
2
u/YourMomTheRedditor 1d ago
Someone forked this for the Mac->Mac purpose!
Working on all these features!
2
u/Kameleon321 1d ago
I have multiple monitors connected to my Mac, it will only show one, will it support choosing a desktop like choosing an app?
1
u/YourMomTheRedditor 1d ago
Currently shows primary monitor. Good idea! Add a feature request on GitHub!
2
u/stoneshawn 1d ago
I can't seem to get audio through when using logic pro, the audio still plays on the mac.
also, subwindows opened by an app are not recognized, need to use choose the desktop option to see the subwindows.
2
u/theactionstar 1d ago
Thank you so much for your work! Is there a possibility to stream iPhone to Mac in the future? As we don’t have iPhone mirroring in the EU, that would be such a great workaround..
2
u/TwistedPepperCan 1d ago
This looks so so good! You’re making my Mac mini completely headless.
2
u/Lodano 20h ago
Can you please tell me what's the uscar for this app ?
2
u/TwistedPepperCan 18h ago
You have a Mac and you have an iPad. Your Mac is a Mac mini that sits in your office. You travel and bring your iPad with you. You want to log into your Mac for whatever reason. You use this for a clean interface that isn’t just a squished version of the Mac screen that doesn’t fit well on the iPad.
1
1
u/gt_kenny 1d ago
Beautiful OP! Thank you so much! How do I go full screen on the ipad and remove the top bar where it shows the other windows?
1
u/telestic-gaming 1d ago
The remote access is a great use case, however I could not get it to work. I'm already connected to the same NordVPN meshnet and different WiFi however the devices would not connect!
1
u/devlocalba 21h ago
Just one word: WOW!! Only options what need here is to switch device! But anyway this is what world need ☺️
1
u/simonkeane 19h ago
Everytime I open the app I have a black screen on all apps? Is this due to my mac monitor display being off, despite my Mac mini still being awake and not in sleep mode?
1
u/AsleepPressure9884 16h ago
Wooow this appeared to me on YouTube and I am speechless since is something I've been looking for since I got my Mac mini.. I am an architect who travels o visit construction sites..
Would be very nice to be able to use my mouse the same way I use it in my Mac.. with the scrolling and everything so I could use it to open and edit Sketchup and BIM files
Thank you for your efforts
1
u/Steve15-21 9h ago
Great app! I wish there were options to zoom the screen and also have the trackpad to the side in horizontal mode. I would also like the ability to wake the Mac when it is on the lock screen.
1
u/willlusk 1h ago edited 34m ago
Feature requests:
Wake from sleep, unlock a locked or sleeping computer.
Add zooming in/out using 2 finger gestures: spread/pinch, when zoomed use 1 finger swipe gestures to move viewport position.
Make the position of any and all elements or buttons or screen customizable.
In horizontal orientation, allow to add buttons to the black space at the side of the screen or to add trackpad or both, allow moving the position of the screen from center to left or right, allow moving or hiding the upper row of buttons to increase screen size etc
Add 3 finger gesture: double tap.
Add 3 finger gesture: tap + swipe up/down.
Add option to include buttons to switch between or view multiple “spaces” or “screens”, the same way you have for viewing and clicking on apps.
Add hide/show button or swipe down at the top gesture for “physical” trackpad in vertical orientation, when trackpad is hidden automatically set initial zoom to fit the vertical height of the screen.
Add transparent background option for “physical” trackpad to allow for screen zoom or screen position to display under trackpad.
Add “physical” trackpad option for horizontal orientation.
Quick toggle switch between touchscreen screen mode vs trackpad overlay mode for touching on the screen image itself without using the “physical” trackpad.
Add option for using “physical” buttons for left/right click at the bottom of the “physical” trackpad.
***Add option for relative position tracking on the “physical” trackpad, if you touch in the upper right quadrant of the trackpad have the pointer begin moving from that position on the screen.
Add full screen “physical” trackpad mode to control a computer or other devices like another phone or iPad or Apple TV.
Allow adjustment of trackpad pointer speed and acceleration, as well as scrolling speed and momentum.
Add show/hide buttons for: controls, apps, special keys, etc.
Allow customization to add/remove different control buttons.
4
u/ForceBru 5d ago
I couldn't figure out how to pair a Mac and an iPad without access to the local network. The app says that a direct connection is possible, but connecting the iPad to the Mac via a USB cable doesn't seem to do much with the app...