{"slug": "lattices-open-source-programmatic-window-manager", "title": "Lattices – open-source Programmatic Window Manager", "summary": "Lattices released an open-source programmatic window manager that lets AI coding agents including Claude Code, Codex, Gemini CLI, OpenCode and Hermes find, arrange and focus desktop windows through a skill or via MCP, using the same controls a user has by hand. The tool, installable through Homebrew or the Bun CLI and also available on Linux with Hyprland and Omarchy, exposes a JSON-RPC-style API with calls such as lattices.search, window.place, layer.activate, space.optimize, history.undo and states.restore, and projects are defined in a .lattices.json config file with named panes and startup commands. Lattices states that workspace control and action history stay on the user's computers, remote access is opt-in with permissions the user approves, screen text reading is off until enabled, and optional vision-model features may send screen context to a provider the user chooses.", "body_md": "### Window manager\n\n## Organize around the work.\n\nArrange windows, group them into project layers, and move between contexts without rebuilding your desktop each time. Keep the tools for the task together.\n\n“Put my project’s windows side by side.”\n\nWith the Lattices skill, Claude Code can find and arrange your project’s windows.\n\nSame controls. With access you choose.\n“Find the terminal running my dev server.”\n\nWith the Lattices skill, Codex can search your terminal sessions and bring the right one into focus.\n\nSame controls. With access you choose.\n“Open a terminal for this project.”\n\nWith the Lattices skill, Gemini CLI can start a project session and place its terminal window.\n\nSame controls. With access you choose.\n“Stack my notes beside the browser.”\n\nConnect Lattices through MCP, or run Lattices commands from Hermes’s local terminal, to arrange your windows.\n\nSame controls. With access you choose.\n“Bring my workspace back into place.”\n\nWith the Lattices skill, OpenCode can apply a saved layer to arrange your workspace.\n\nSame controls. With access you choose.\nArrange your windows, terminals, and projects. Give your agents the same workspace controls, across every computer you connect.\n\n[Homebrew or the Bun CLI](#install)[Also on Linux, with Hyprland and Omarchy](https://lattices.dev/linux)\n\n**1.4 ft** falling · 9:41 AM\n\nOn macOS, tile halves with ⌃⌥ and an arrow, use Caps Lock as Hyper, or hold a mouse button, draw a gesture, and release. Explore the paths in the 3×3 gesture matrix below.\n\nHold Caps Lock for Hyper. These are defaults; change them in Settings.\n\nHold middle, draw up, release.\n\nKeep the windows for each project together in a named layer. See what’s running, find what you need, and switch the whole workspace when it’s time to change focus.\n\nLaunch your editor, browser, and terminal commands together. Keep your development server, tests, and coding agents running in their own panes, ready when you return.\n\nDefine tools and layouts in a config file. Connect scripts and agents to the same workspace controls you use by hand. Turn a repeated setup into something you can run.\n\nGive each project a repeatable setup: named panes, startup commands, and a layout that fits the task. Define it once in .lattices.json, then launch or reattach with a command.\n\n```\n{\n  \"ensure\": true,\n  \"panes\": [\n    { \"name\": \"claude\", \"cmd\": \"claude\", \"size\": 60 },\n    { \"name\": \"dev\",    \"cmd\": \"bun dev\" }\n  ]\n}\n```\n\nGive agents the same workspace capabilities you use yourself: find windows, arrange layouts, activate project layers, and inspect the result. Use the API locally, or enable remote access on a connected computer with the permissions you choose. For clicking and typing inside apps, use [Action](https://lattices.dev/action).\n\n`lattices.search`: title, app, session, or cwd` window.place`: tile by session, app, or window id` layer.activate`: launch or focus a workspace` space.optimize`: rebalance visible windows` history.list`: receipts for recent placements` history.undo`: put the last placement back` states.restore`: return to a saved desktop map\n\n``` js\nimport { daemonCall } from '@lattices/lattices'\n\n// Find a window by title, app, session, or cwd\nconst [match] = await daemonCall('lattices.search', {\n  query: 'tideline'\n})\nawait daemonCall('window.focus', {\n  wid: match.wid\n})\n\n// Bring up the project's layer\nawait daemonCall('layer.activate', {\n  name: 'tideline',\n  mode: 'launch',\n})\n\n// Or move one window, by app and title\nawait daemonCall('window.place', {\n  app: 'Safari',\n  title: 'Tideline',\n  placement: 'right',\n})\n```\n\nWorkspace control and action history stay on your computers. Remote access is opt-in, with permissions you approve. Screen text reading is off until you turn it on. Optional vision-model features may send screen context to the provider you choose. Lattices is open source, so you can inspect how it works.\n\nOmarchy is a Linux desktop built on Arch and Hyprland, with tiling windows at its heart.\n\nLattices brings your windows into named layers, helps you find what’s open, and gives your tools and agents an API to work with. Keep each project together, then switch focus when you’re ready.\n\nRun in your Omarchy desktop. Installs the app, CLI, host, and tray.\n\n`curl -fsSL https://raw.githubusercontent.com/lattices-dev/lattices/main/install.sh | bash`\nArch/Omarchy · Hyprland · systemd user session · x86-64 or ARM64\n\nDownload the Mac app, or [install on Linux](#linux).\n\nYour windows, projects, and tools, ready to work together.\n\nOpen the download. Drag Lattices into Applications.\n\nThe same Mac app, installed from your terminal.\n\n```\nbrew tap arach/tap\nbrew trust arach/tap\nbrew install --cask arach/tap/lattices\n```\nThe command line for your workspace.\n\n`bun install -g @lattices/lattices`\nFor you and your agents, across the computers you connect. Free and open source.", "url": "https://wpnews.pro/news/lattices-open-source-programmatic-window-manager", "canonical_source": "https://lattices.dev/", "published_at": "2026-11-05 16:37:53+00:00", "updated_at": "2026-11-05 16:51:59.090302+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "agent-protocols", "ai-products"], "entities": ["Lattices", "Claude Code", "Codex", "Gemini CLI", "OpenCode", "Hermes", "Hyprland", "Omarchy"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/lattices-open-source-programmatic-window-manager", "markdown": "https://wpnews.pro/news/lattices-open-source-programmatic-window-manager.md", "text": "https://wpnews.pro/news/lattices-open-source-programmatic-window-manager.txt", "jsonld": "https://wpnews.pro/news/lattices-open-source-programmatic-window-manager.jsonld"}}