DocsHow it works

How it works

Tilda has three parts that work together: the plugin your agent runs, the Tilda app on your Mac, and the Tilda extension in your browser.

The parts#

  • The plugin is an MCP server your agent starts. It gives the agent the JsReplExec and JsReplReset tools and runs the kernel, a Node.js process that keeps its state between calls. The kernel runs in the plugin’s process, beside your agent, not inside the app.

  • The app serves two Unix sockets in ~/.tilda: daemon.sock for agents and browser-relay.sock for the browser. It shares your browsers among agents, runs the MCP servers you configured, and carries out actions in Mac apps. It opens no network port for agents or browsers.

  • The extension lets Tilda drive your browser. The browser starts Tilda’s relay by native messaging, and the relay connects to the app.

What happens when an agent sends a program#

  1. Your agent writes a script. Tilda gives it one tool that runs JavaScript against your browser and your Mac apps. That one tool replaces a long list of per-click tools.

  2. Tilda runs it on your Mac. Variables, open pages, and terminals stay put between scripts. Nothing reaches the model unless the script prints or returns it.

  3. Only signed agents get in. Tilda runs scripts only from Claude Code, OpenCode, and Grok, as signed by their makers. Anything else is turned away.

  4. Your browser, through the Tilda extension. The extension connects your browser to the Tilda app, and each checks the other is genuine. Each agent’s tabs sit in a tab group named after it.

  5. Your Mac apps, through Accessibility. Tilda holds the Accessibility and Screen Recording permissions, so agents don’t need their own. Scripts work an app’s buttons and fields directly, without taking over your screen.

  6. Your MCP servers, set up once. Add MCP servers in Tilda’s settings and sign in once. Every agent’s scripts can call them.

When Tilda isn’t open#

When an agent needs Tilda and nothing serves ~/.tilda/daemon.sock, the plugin opens the app itself, in the background, and waits for it. If Tilda isn’t installed, the agent reports that it can’t reach Tilda; see Troubleshooting.

Only the answer reaches the model#

A cell’s result holds what the program printed, its last value, and any images it chose to send. Pages, tool results, and files the program touched stay in the kernel, so the model’s context holds the result, not the transcript. The next call can pick up where this one ended: an open page, parsed data, or a helper the agent wrote is still there.