FerrisGrid captures the current screen, maps it to deterministic coordinates, returns compact Markdown to an agent, executes one constrained action, captures the result, and exits. The agent does the reasoning. FerrisGrid handles the screen, coordinates, input, and local trace.
┌──────────────┐ observe ┌──────────────┐
│ Agent / LLM │ ─────────────> │ FerrisGrid │
│ │ <───────────── │ screenshot + │
│ choose one │ Markdown │ coordinates │
│ action │ └──────────────┘
│ │ act ┌──────────────┐
│ │ ─────────────> │ validate + │
│ │ <───────────── │ execute one │
└──────────────┘ screenshot └──────────────┘
Why FerrisGrid?
- Eyes plus a map: screenshots become coordinate-backed observations an LLM can reason over.
- Single-step by default: every call performs one observation or one action.
- Deterministic coordinates: screenshots map cleanly back to native screen pixels.
- Local-first traces: screenshots, metadata, action requests, and results stay under
.ferrisgrid/. - Cross-platform shape: the agent-facing protocol is the same across macOS, Linux, and Windows where the platform allows it.
- Container-friendly: run a Linux desktop workspace in Docker and watch it through noVNC while the agent works away from your main screen.
Installation
For normal use, install the published CLI with Cargo:
The package is ferrisgrid-cli on crates.io and installs the ferrisgrid command.
FerrisGrid is also available via npm as ferrisgrid-cli. The TypeScript npm package is maintained in BrunoV21/FerrisGrid-CLI-ts and mirrors this Rust CLI behavior for Node.js distribution, while feature requests and protocol changes stay anchored in this Rust repository.
Windows
Windows 10/11 x64 is supported natively. ferrisgrid observe, the complete mouse and keyboard action catalog, DPI-aware coordinates, multi-monitor layouts, and post-action captures use Win32 APIs. Run FerrisGrid from an unlocked interactive desktop. Windows can reject input aimed at an elevated application or the secure desktop; run the target and FerrisGrid at the same integrity level.
Use --backend native-windows (aliases: windows, win32) to select it explicitly. The default native backend selects Windows automatically.
Quick Start
Capture the current screen:
Run one action from a Markdown action file:
Development from source
Use a local checkout when you want to build, test, or modify FerrisGrid:
On Windows, the CI-equivalent native desktop suite can be run against a built binary:
cargo build -p ferrisgrid-cli
.\scripts\windows-native-e2e.ps1 -FerrisGridBinary (Resolve-Path .\target\debug\ferrisgrid.exe)
Run one source-built action from a Markdown action file:
Agent Skills
If you are an agent, use this script to download and install the FerrisGrid skills:
|
Run it from the directory that should receive the skill folders. The script downloads the repository zip, extracts the contents of .agents/skills, and installs those skill directories into the current directory.
Docker Workspace
FerrisGrid can run inside a Linux container with its own X11 display. The agent calls FerrisGrid with docker exec; input happens inside the container, not on your main desktop.
The Docker image installs the published ferrisgrid-cli package from crates.io. By default it installs the latest published version; release builds pass the tagged version explicitly.
Build a specific published version:
Run the workspace:
Open the viewer:
http://127.0.0.1:6080/vnc.html?autoconnect=1&resize=scale
Then run:
Documentation
Official docs live in docs/official.
Agents should use the raw Markdown index: docs/official/agents.md.
Brand positioning and story notes live in docs/branding.
The TypeScript npm mirror lives in BrunoV21/FerrisGrid-CLI-ts.
The docs use a terminal-brutalist Terminal Violet palette: black surfaces, violet brand/action states, cyan coordinate accents, and status colors for execution feedback.
Community and feedback
- Bug reports
- Feature requests
- Documentation fixes
- Questions and usage help
- Open issues
- TypeScript npm package mirror
Project Status
FerrisGrid is early, local-first infrastructure for agent-facing visual control. The current focus is reliable observe/act behavior, local traces, recap output, and containerized Linux workspaces.
License
MIT