Your windows should come to you.
Not the other way around.
You're deep in Safari on Desktop 2. You ⌘Tab to Terminal and macOS hurls you to Desktop 7. Now you're lost, and so is your train of thought.
Press ⌃⌥Space, type a few letters, hit Return. Whatever you picked lands on the Desktop you're already looking at — and stays there.
Apps that aren't on your current Desktop float to the top — those are the ones you're reaching for. Everything else is one keystroke away anyway.
There is no permissions dance. No Accessibility prompt, no Screen Recording, no disabling System Integrity Protection. Open it and press the hotkey.
Grab the zip, unzip, drag to Applications.
Latest releaseThirty seconds, and nothing to take on trust. Needs Xcode or the Command Line Tools.
git clone https://github.com/davidgeller/moveithere.git cd moveithere ./build.sh open build/MoveItHere.app
Produces a universal binary plus a distributable zip.
MoveItHere.app/Contents/MacOS/MoveItHere --hotkey, or
--reset to go back to the default.Apple has never shipped a public API for moving anything between Spaces, so this leans on the private SkyLight framework. Most of it refuses to cooperate. Here is what was actually measured on macOS 26.5 with SIP enabled, moving a real window off a real Desktop:
| Approach | Own window | Another app's window |
|---|---|---|
| SLSMoveWindowsToManagedSpace | works | refused |
| SLSSpaceAddWindowsAndRemoveFromSpaces | works | refused |
| Either, via the owner's connection ID | — | refused |
| Window tags (the sticky bit) | — | refused |
| SLSProcessAssignToSpace | works | works |
"Refused" is the cruel part: the call returns success and quietly does nothing. This is exactly why tools like yabai need a scripting addition and a disabled SIP for per-window moves — the addition injects into the other process so the call comes from the window's rightful owner.
The one survivor, SLSProcessAssignToSpace, works process-wide. Hence
app-level moves. It leaves no permanent Dock "Assign To" binding behind, so nothing you pull
over gets pinned there — verified by diffing com.apple.spaces before and after.
Reaching into undocumented system internals earns scrutiny. The codebase is about 1,000 lines of Swift and every line is public. Here is what it does not do:
| Network access | None. There is no networking code in the project — no telemetry, no update check, no analytics. It works entirely offline. |
| Keystroke capture | None. The hotkey uses Carbon's RegisterEventHotKey, which asks the OS to report one specific combination. It is not an event tap, so it never sees your typing — which is why macOS never asks for Input Monitoring. |
| Reading your screen | None. It reads window numbers, owners and sizes — never titles or contents. Titles would need Screen Recording permission, which it deliberately doesn't request. |
| Permissions | None requested. No Accessibility, no Screen Recording, no Full Disk Access. |
| Privilege escalation | None. No privileged helper, no XPC service, no setuid binary, no code injection, no SIP changes. |
| Your files | Untouched, apart from its own preferences. |
dlsym and called through function pointers. A missing symbol is detected
and reported; a silently changed one could crash the app.Born of a genuine daily irritation: seven Desktops, one wandering Terminal window, and a stubborn conviction that computers should meet you where you are.
Source on GitHubHoster is a lightweight, self-hosted web hosting platform that compiles to a single Linux binary with no runtime dependencies. It runs just as happily on a Raspberry Pi behind a Cloudflare Tunnel as on a VPS behind Caddy or nginx — multi-site, multi-tenant, with a web admin panel.
What makes it genuinely unusual: every upload is a version, so rolling back a bad change is instant, and it ships a full MCP server — a complete content management surface for AI tools. Read, write, rename and delete files; import media straight from a URL server-side; resize and re-encode images in place; snapshot before every change.
That is not a hypothetical. This page — the layout, the theme toggle, the preview card you just saw in the link unfurl — was written directly into Hoster over MCP, and checkpointed there before each change.
It's free and open source, and it makes a tidy replacement for Netlify or Vercel when you'd rather own the box.
Hoster on GitHub