MoveItHere

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.

macOS 14+Apple Silicon & Intel Zero permissionsSIP stays on~600 KBMIT
Watch it work

One hotkey. The window comes to you.

Press Space, type a few letters, hit Return. Whatever you picked lands on the Desktop you're already looking at — and stays there.

1
2
3
4
5
6
7
Terminal was on Desktop 7. Now it isn't.
The picker

It's Spotlight, but for rounding up strays.

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.

>_
Terminal
2 windows · all gather here
Desktops 2, 7
Xc
Xcode
1 window
Desktop 4
🐳
Docker Desktop
1 window
Desktop 7
Ch
Google Chrome
4 windows
Desktop 7
↑↓ Navigate↩ Bring hereesc Cancel
Install

Two ways in. Both quick.

There is no permissions dance. No Accessibility prompt, no Screen Recording, no disabling System Integrity Protection. Open it and press the hotkey.

📦 Download the app

Grab the zip, unzip, drag to Applications.

Latest release
Gatekeeper will complain once. The build is ad-hoc signed but not notarized, so macOS says the developer can't be verified. Right-click the app ▸ Open ▸ Open and you'll never see it again.

🔨 Build it yourself

Thirty 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.

Configure

Four things to know, then forget.

  1. Press Space. That's the default hotkey. Control-Option combinations were chosen because macOS claims almost none of them — and plain Space types a non-breaking space, which surprises people.
  2. Prefer a different key? The menu-bar icon offers ⌃⌥D, ⌃⌥G, ⌃⌥J and ⌃⌥M. All laptop-reachable — no F13 nonsense on a keyboard that stops at F12. Forgotten which one is active? Run MoveItHere.app/Contents/MacOS/MoveItHere --hotkey, or --reset to go back to the default.
  3. Turn on Launch at Login from the same menu, so it's there after a restart.
  4. Pair it with a system setting. In System Settings ▸ Desktop & Dock ▸ Mission Control, switch off "When switching to an application, switch to a Space with open windows". That stops Tab swiping you away in the first place.
One honest quirk: MoveItHere moves apps, not single windows. Pick an app and all of its windows come over. When an app's windows are scattered across several Desktops, the picker warns you with "all gather here" on that row. This isn't laziness — it's the only relocation macOS permits across process boundaries. The receipts are below.
Under the hood

Everything macOS said no to.

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:

ApproachOwn windowAnother app's window
SLSMoveWindowsToManagedSpaceworksrefused
SLSSpaceAddWindowsAndRemoveFromSpacesworksrefused
Either, via the owner's connection IDrefused
Window tags (the sticky bit)refused
SLSProcessAssignToSpaceworksworks

"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.

Security

It uses private APIs. So here's the full accounting.

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 accessNone. There is no networking code in the project — no telemetry, no update check, no analytics. It works entirely offline.
Keystroke captureNone. 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 screenNone. It reads window numbers, owners and sizes — never titles or contents. Titles would need Screen Recording permission, which it deliberately doesn't request.
PermissionsNone requested. No Accessibility, no Screen Recording, no Full Disk Access.
Privilege escalationNone. No privileged helper, no XPC service, no setuid binary, no code injection, no SIP changes.
Your filesUntouched, apart from its own preferences.

Residual risks, stated plainly

Will this ever be on the Mac App Store? No — private API use is grounds for rejection, so that door is permanently closed. Distribution outside the App Store is a different question: notarization is an automated malware scan, not an API review, so a notarized Developer ID build is entirely permissible.
Idea, design & direction
David Geller

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 GitHub

🏠 This page is served by Hoster

Hoster 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