neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
Claude Code or Codex opens apps, clicks and types on a virtual display, while your cursor, keyboard and windows stay yours.
Developer toolsRust · SwiftGitHub @FanzzzdOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Give each AI agent its own Mac screen: Claude Code and Codex work on virtual displays while your mouse and keyboard stay yours.
Taken from the repository README
Loading the full README.
Read the full README ↗An animation of Agent Screen's behavior, built from its interface and recordings of the repo's test sessions. More at agentscreen.app.
Built-in computer use drives your real mouse and keyboard, so you stop working while the agent works. Agent Screen moves the agent onto a display of its own. You watch it from the menu bar, step in when it asks, and hand the screen back with one click.
| Agent Screen | Built-in computer use | A virtual machine | |
|---|---|---|---|
| You keep your mouse and keyboard | Yes | No | Yes |
| Works with your real apps and logins | Yes | Yes | No, set them up again |
| Several agents at once | Yes, one display each | No | One VM each |
| Watch and step in | Menu bar, one click | Watch your own screen | VM window |
Install with Homebrew. It needs macOS 15 or later.
brew tap fanzzzd/agent-screen
brew trust fanzzzd/agent-screen
brew install --cask agent-screen
Homebrew loads casks from a tap outside its own only once you trust it, which brew trust does.
Or download the DMG from the latest release and drag Agent Screen into Applications. Agent Screen is signed with a Developer ID and notarized by Apple, so it opens like any downloaded app.
Agent Screen updates itself. It downloads a new version in the background and installs it once no Agent Display is open, so it never ends an agent's work. Restart to Update… in the menu bar icon's menu installs it sooner, and Check for Updates… checks now.
Open Agent Screen. Its Settings window asks for Screen & System Audio Recording and Accessibility. Both stay on this Mac.
Connect your agents. Press Connect… in Settings (right-click the menu bar icon and choose Settings…), or run:
"/Applications/Agent Screen.app/Contents/MacOS/AgentScreen" mcp install
This registers the MCP server with Claude Code for all projects and adds it to ~/.codex/config.toml. Running it again is safe. For any other MCP client, such as Gemini CLI or OpenCode, add a stdio server with the command /Applications/Agent Screen.app/Contents/MacOS/AgentScreen and the argument mcp.
Then ask your agent something like "Use Agent Screen to open Calculator on your own display and work out 12 × 34." Start a new session after connecting, so the agent loads the tools. Once it has, Settings and the menu name the agent. If Agent Screen isn't running, the first tool call starts it.
| Tool | What it does |
|---|---|
create_display, end_display | Get the session's display, one per session, or finish with it. |
launch_app, place_window, list_windows | Open apps on the display and list its windows. launch_app takes an app name, bundle id or .app path, and arguments and environment for a new instance, as a development build needs. list_windows with strays: true lists windows of the agent's apps that opened elsewhere, and its windows that left the display, for place_window. place_window answers once the window has stayed on the display, and fails when it keeps going back. place_window with x, y, width or height sets a window's frame on the display, in screenshot pixels from its top-left corner, and returns the frame the app kept. |
computer | Anthropic-style actions on the whole display. Every action except wait and cursor_position returns a screenshot. type and key with via_input_method go through your input method, and use your keyboard for that call (ADR 0008). |
record_display | Record the display to an MP4 in ~/Movies/Agent Screen, with the sound of its apps and a timeline of the agent's actions and Takeovers beside it. |
get_window_state, act_on_element | One window's screenshot and accessibility tree, and actions on its numbered elements: press, click, set or insert text, read text. Numbers stay put while the element stays in the window. max_depth leaves out deeper elements, and act_on_element with result: "changes" returns only the elements that changed, or with "none" just that it's done. |
set_disposition | Keep or close a window when the user closes the display. |
wait_for_control, request_help | Wait out a Takeover, or ask the user to step in. |
A session can only see and drive its own display. place_window with user_instruction relays your instruction to hand over that window without another confirmation. Agent Screen trusts the agent's relay and records it; it does not read or independently verify your conversation. docs/agents/AGENTS.md is a convention you can paste into a project's AGENTS.md or CLAUDE.md.
request_help drops a card from the menu bar icon with the display's picture and the agent's reason, and posts a notification. Take Over, on the card or the notification, opens the display in Takeover. Clicking the picture or the notification only opens it. Later puts the card away; the icon stays orange. When the agent gives steps, the Viewer lists them under its header while you are in control.~/Movies/Agent Screen, newest first, each with its display's label and start time. Select a video, play or pause it, or drag its progress bar to seek. While you drag, the video pauses and keeps showing its last frame, and it resumes on release if it was playing. Space plays or pauses, ← and → move 5 s, ↑ and ↓ pick a recording, and ⌘W closes the window. Show in Finder reveals the file. Show Pointer toggles a visual overlay without changing the video, sound or playhead; it reads Pointer Unavailable when the video has no usable pointer timeline. New recordings include pointer timing and coordinate metadata. Older videos still play; missing, damaged, incomplete or older timelines cannot accurately replay a pointer. The overlay hides during Takeover because user pointer movements were not recorded. Playback never sends input to the recorded apps.The app follows your Mac's language: Chinese when it comes first in your preferred languages, English otherwise.
Agent Screen runs on your Mac and sends nothing anywhere. Screen & System Audio Recording lets it show agent displays and take the screenshots agents ask for. Accessibility lets it click, type and place windows on them. Agents reach it through a socket only your user account can open.
place_window on that window and an explicit frame. Agent Screen constrains that request below the strip and returns the actual frame. For a window already on its Agent Display, omitting frame arguments keeps its frame. Zoom itself is not automatically corrected.launch_app on a running single-window app such as Calculator gets no new window, and says so at once. Quit it first, or hand its window over.place_window. Take back one of the app's windows and the whole app is yours; hand a window over again and the agent can use it.launch_app started, which gets a private DevTools pipe (ADR 0010). In Safari, WebKit apps, a browser on its default profile, or an app you started, it fails and says so. Agent Screen won't press your mouse button for it. A fresh browser profile has separate sign-ins. It does not preserve your existing login or add a pipe to an already running window. Keep that window and use request_help if its login session is required.For a bug, collect diagnostics in the failing session and follow Reporting bugs. The guide covers stale MCP clients and older builds too.
claude mcp get agent-screen shows whether Claude Code has it./Applications/Agent Screen.app once yourself.AgentScreen colorsync setup). It asks for your administrator password once and installs a small tool that Agent Screen runs as root, through sudo, after displays change and every 30 minutes. The tool removes the records of displays that aren't connected and hold only what macOS made for them, and keeps display names in English and your languages, which makes the reads about five times faster. Profiles you chose for a display stay, and macOS makes a record again when you plug that display in. AgentScreen colorsync remove takes the tool away. Without it, Agent Screen refuses a new display when the reads would take too long.To build and install from source instead of the DMG, with Rust installed: apps/macos/scripts/install.sh. See docs/DEVELOPMENT.md for testing and how it works. To send a change, read CONTRIBUTING.md. Agent Screen is MIT licensed. Its background input recipe is ported from trycua/cua; see THIRD_PARTY_NOTICES.md.
get_diagnostics | Collect this MCP process's compiled build identity and the responding app's identity, without starting the app or creating a display. |
request_control | During a Takeover, ask the user to hand the display back. With user_instruction, relay their explicit chat instruction to hand it back, or with control: "user" to pause. |
window_access | Grant, inspect or revoke session window authorization, or return handed-over windows. Grant and return require the user's explicit user_instruction. |
act_on_element's read_text and insert_text instead; Command-A still selects all.