For developers juggling projectsNew in 0.6 · Focus Agent

Switch projects, not windows.

Your client work and side projects each get a workspace. Keep the right editor, terminals, browser tabs and AI chats together, and switch projects with one shortcut.

Free for 14 days, no card needed. Then $9.99 once during early access. macOS 14+, Apple silicon and Intel.

Try it in your browser
  1. You're working on the web app. Its code, browser, terminal and Claude chat are here in one workspace.
  2. Time to work on the mobile app. Hold ⌥ and press Tab to choose its workspace, then let go.
  3. Here's the mobile project, with its own code, Codex chat and Simulator. The web project's dev server keeps running.
  4. While you work here, Claude asks for permission in Web. Layout lets you know. Press ⌃⌥N to go to its chat.
  5. Back in Web, your code and browser are where you left them. You can also jump here anytime with ⌃⌥1.
  6. At your desk, the same project spans both displays. Code and browser on the monitor, Claude and the terminal on your MacBook.
  7. Use a split keyboard? Give each project a key. On this Voyager, hold a thumb key and pick a project from the home row.
  8. Now there's a backend fix to make. Press API and both displays switch to that project, with its code, terminal and Claude chat.

Real shortcuts: ⌃⌥1 to 3, or hover the screen and hold ⌥ Tab.

Switching from the Web workspace to Mobile takes Claude, Codex, Slack, Cursor and Ghostty from acme-web to acme-app.
  • Claudeacme-webOrders table flashes on load
  • Codexacme-webPaginate the orders API
  • SlackwebAcme
  • Cursoracme-web~/code
  • Ghosttypnpm devlocalhost:3000

Your tools follow the project

You use the same apps for several projects. Give each workspace a project folder and a Slack channel. When you switch, Claude and Codex open that project's latest chat, and Slack goes to its channel. You keep using the windows you already have.

The dev server keeps running while you work elsewhere. Commands start when you launch the workspace, so switching back won't start them again.

Chats
Claude and Codex bring back the project's latest chat
Links
Any app with a URL scheme, like Slack, Discord, Linear or Notion
Folders
Cursor, VS Code, Ghostty, iTerm2, WezTerm, Terminal, kitty and cmux
Commands
Your dev server and watchers, typed into your own shell at launch
Tabs
Safari, Chrome, Firefox, Arc, Brave and Edge
Simulator
A device, an installed app and a deep link

Step 1: Open your project

Open a project and get to work

Choose what each project needs once. Press Control Option Shift 1 to open its folder in your editor, load its browser tabs and start its dev server. Your chats and other apps open with it.

Start with New Workspace from Project…. Pick a folder or a Claude or Codex project. Layout suggests your usual editor and terminal, plus the dev server from itspackage.json. You choose what to include.

For the projects you open every morning, turn on Launch at Login. Layout opens them when it starts and takes you to your default workspace.

Commands run when you launch a workspace, in the project's folder. Switching never runs anything.

Step 2: Switch projects

Pick up another project in a keystroke

Move to another project while your dev server keeps running. When you come back, your windows are where you left them. If Claude or Codex needs you in another workspace, Layout notifies you and a shortcut takes you to that session.

  • Option TabBack to the previous workspace. Keep ⌥ held to pick another, or press / to search.
  • Control Option 1 to 9Go to workspace 1 to 9
  • Control Option Shift 1 to 9Open a workspace's apps and apply its layout
  • Control Option Command 1 to 9Send the last window to workspace 1 to 9
  • Control Option NGo to the next notification or waiting agent. ⌃⌥P goes back.
  • Control Option SlashEvery notification, from every workspace
  • Control Option PeriodGeneral's windows and your wildcard apps, from any workspace
  • Command TabCycle this workspace's windows (optional)
  • Control Option SpaceCommand palette
  • Control Option OEvery workspace at a glance
  • Control Option SSave your desktop as a workspace
  • Control Option ZUndo the last move or resize
  • Control Option FFloat the last window
  • Control Option RBring the last window back on screen
  • Control Option Shift RRecover hidden windows
  • Control Option CommaOpen the Layout editor

Try them here: the keys light up as you press them. Every shortcut in the docs

Made for split keyboards

Remap any shortcut in Settings, for all your keyboards or just one. Keep ⌃⌥ on the MacBook, and put your workspaces on a Voyager layer, a Moonlander thumb cluster, Hyper or F13.

Layout knows which keyboards are connected, and while both are plugged in, both sets work. QMK, ZMK, Oryx and Karabiner setups work as they are, on a Glove80 or a Corne too.

The Voyager in the tour: hold its thumb key, and the home row sends Hyper 1 to 3, its own shortcuts for your workspaces.
Layout's Shortcuts settings. With the Voyager chosen, the command palette is F13, the overview F14, and the three workspaces Hyper 1 to 3; the other shortcuts follow All keyboards.

Keyboard

While it's connected, these work along with the other connected keyboards' shortcuts; when two give one key different jobs, the keyboard connected last wins. Unchanged shortcuts follow All keyboards.

Shortcuts

Switch workspaceOption Tab
Command paletteControl Option SpaceF13
OverviewControl Option OF14
Save desktop as workspaceControl Option S

Workspace shortcutsGo to

WebControl Option 1Hyper 1
MobileControl Option 2Hyper 2
APIControl Option 3Hyper 3

Step 3: Make room for your work

Give each project the space it needs

Keep a browser beside the code for your web app, or leave room for the Simulator when working on mobile. Start from a template, drag the dividers and choose where each app goes.

Stacks
Several apps can share a zone. The one you focus comes to the front.
Floating apps
The Simulator can float over your zones, where you placed it, at the size you chose.
New windows
Pick the zone new windows join, or let them float where they open.
Spacing
One gap from 0 to 40 px, around the screen and between windows.
Every display
Give each display its own zones and apps. A switch changes them all together.
Wildcard apps
A password manager or a music player belongs to no layout: call it from any workspace and it comes to you, then waits in General when you leave.
Cursoracme-webEditor·67%
Cursor Editor·67%
Cursor67%
Firefox3 tabsBrowser·33% × 50%
Firefox Browser·33% × 50%
Firefox33% × 50%
Claudeacme-webFrontGhosttypnpm devTerminal·33% × 50%
Claude +1 Terminal·33% × 50%
Claude +133% × 50%
Spacing10 px

Set it all up in one window

Workspaces on the left. On the right, your displays and their zones, then one list of apps: where each one goes, and what it opens when the workspace launches. While Layout is paused, you can set everything up before it moves a single window.

The Firefox work context dialog: three tabs, scopebook.test, localhost:3000 and github.com, in a browser-like editor with Cancel and Save buttons.
Browser tabs are edited like a browser: drag to reorder, paste several URLs at once.
The Layout editor showing Web, one of three project workspaces with Mobile and API: Cursor on the left with acme-web, Firefox top right with two tabs, and Claude in front of Ghostty running pnpm dev below, each listed on its own row, then the project folder acme-web and the Apps list with where each app goes and what it opens.
The editor with two displays connected: One workspace across all displays, with MacBook Pro and Studio Display to choose from. The Studio Display is chosen, and its layout is Editor + preview, with Cursor on the left and Firefox on the right.
With a second display, choose it above the canvas: each display gets its own zones and apps, and one shortcut switches them all. Multiple displays

Built so you never lose a window

Recover, anytime

Before a window leaves the screen, Layout writes it to a journal. Pausing or quitting puts every window back, and so does Control Option Shift R. After a crash, open Layout again: each window goes back to its workspace.

Never records your screen

Layout moves windows with the Accessibility permission. It never asks for Screen Recording or Full Disk Access. To type your commands into Ghostty or iTerm2, it asks once to control that terminal.

Stays on your Mac

No account, no telemetry. Your layouts live in ~/Library/Application Support/Layout.

Diagnostics you control

When something goes wrong, Send Diagnostics shows what goes, then sends it only when you click. Window titles, commands and link parameters become aliases unless you include them.

Try it for 14 days. Then pay once.

Early access

$9.99instead of $19

One-time purchase, no subscription. The price goes up to $19 with Layout 1.0.

The trial has every feature. You don't need a card to start it. Refunds within 14 days, no questions asked.

  • Every feature, no tiers
  • Use it on up to 2 Macs
  • Free lifetime updates
  • macOS 14 Sonoma or later, Apple silicon and Intel
  • Every display you connect

Questions

Everything else is in the documentation.

Does Layout work with more than one display?

Yes. A workspace spans every display you connect, and switching workspaces switches them all. Choose a display above the editor's canvas to give it its own zones and apps. Unplug one, and its windows wait on the main display until you plug it back in. Displays switch together: one display can't show another workspace on its own.

Can I keep AeroSpace running?

No. Two window managers would move the same windows, so quit AeroSpace first. Layout checks before it turns on.

Does it use macOS Spaces or full screen?

No. Layout's workspaces live on one desktop: windows from other workspaces are moved out of view instead of minimized, the way AeroSpace does it. Its shortcuts and its record of which window goes where are its own, not Mission Control's, so they keep working after your Mac sleeps or a display comes back. Used to ⌃1 to ⌃9? Keep them: see Coming from Spaces. Leave native full screen before you switch.

What happens to my windows if Layout crashes?

They come back. Layout keeps a journal of every window it moves out of view. Open Layout again: each window goes back to its workspace. While it's paused, choose Recover Hidden Windows from the Layout icon in the menu bar.

Do my workspaces come back after I restart my Mac?

Yes, the ones you set to Launch at Login. The windows macOS reopens after a restart are new to Layout, so they start in General. Each time Layout opens, at login too, it launches your marked workspaces, opening their apps and placing their windows, and you end in the one you made the default. Turn it on in a workspace's menu or in Settings › General.

Can each workspace have its own Claude chat or Slack channel?

Yes. Give a workspace a project and a Slack channel. Switching to it brings back that project's latest chat in Claude or Codex and opens the channel in Slack, in the window you already have. For Slack, paste the channel's Copy link address. Discord, Linear, Notion and other apps take a link in their own format instead, such as a discord:// link.

How does Layout know Claude or Codex needs me?

Connect them once: in Settings › Integrations, click Add next to Claude Code and Codex. When an agent asks for you or finishes in another workspace, a card drops from the top of the screen, and ⌃⌥N takes you to its chat, terminal or tmux pane. Apps with a Dock badge, such as Slack, notify you the same way, with nothing to set up.

Does Layout start my dev server?

Yes, when you launch the workspace. Give its terminal the commands to run, such as pnpm dev: Layout types them into your own shell, in the project's folder. Ghostty, iTerm2 and WezTerm show them as panes of one window, Terminal and kitty open a window each, and cmux a tab. Run them in a tmux session to keep them going when the window closes. Stop Workspace… gives them a Ctrl-C, so your dev server frees its port. Switching workspaces never runs anything.

Can I change the shortcuts?

Yes. Remap Layout's shortcuts in Settings, down to each workspace's own. Function keys work on their own, so a spare key can open the command palette.

Does it work with a split or programmable keyboard?

Yes, it's made for them. Each keyboard can have its own shortcuts: keep ⌃⌥ on your MacBook, and put your workspaces on a Voyager or Moonlander layer, on Hyper, or on F13. Layout goes by the keyboards you've connected, so QMK, ZMK, Oryx and Karabiner setups work as they are. With two keyboards connected, both sets work.

How do updates work?

Layout checks for a new version every hour. When one is out, Update available in the Layout bar checks again, shows what's new in the newest version and installs it; nothing downloads before you choose to update. The changelog lists what changed in every version. Free lifetime updates.

Is it a subscription?

No. It's $9.99 once during early access, after a 14-day free trial with every feature. The price goes up to $19 with Layout 1.0, and a license bought before keeps working.

Can I get a refund?

Yes, within 14 days of buying, no questions asked: reply to your receipt from Polar, or write to support@getlayout.app. The key then stops working at its next check.

Switch projects, not windows.

Try every feature free for 14 days. You don't need a card to start.

$9.99 early access · 14-day trial · macOS 14+