A maki plugin that provides browser automation tools via Playwright/Chromium. The agent can launch a browser, navigate pages, click elements, fill forms, execute JavaScript, take screenshots, and inspect network/console logs — all through tools available inside maki sessions.
The plugin spawns a detached Node.js process running a Playwright-managed Chromium browser. It communicates with the Node server through temp-file IPC (JSON-lines): commands are written to cmd.jsonl, responses are read from resp.jsonl. A single browser context is shared across all navigations, so cookies and localStorage persist between calls unless reset_state=true is used.
The Node.js server script is embedded directly in the Lua source (browser.lua) and written to disk at runtime — no separate server files are needed.
10 tools registered under the "browser" kind:
| Tool | Description |
|---|---|
browser_launch |
Launch Chromium and navigate to a URL. Supports headless mode, custom viewport, and fresh context resets. |
browser_click |
Click an element by CSS selector. Reports URL, network activity, and console errors after the click. |
browser_fill |
Type text into form fields. Clears existing content first by default. |
browser_evaluate |
Execute arbitrary JavaScript in the page. Returns JSON-serialized results. |
browser_content |
Get the rendered HTML of the page or a specific element. |
browser_assert_text |
Check whether text appears (or is absent) on the page. Returns PASS/FAIL. |
browser_network_log |
View captured network requests (method, URL, status, optional body). Saves artifacts to .maki/browser/. |
browser_console_log |
View browser console entries, filterable by level (error, warn, log). |
browser_screenshot |
Capture a PNG screenshot of the page or a specific element, returned as a base64 image. |
browser_close |
Close the browser and stop the Playwright server. |
- Node.js — the plugin spawns a Node.js process to run Playwright.
- Playwright + Chromium — install with:
npm install playwright npx playwright install chromium
-
Copy
browser.luainto your maki Lua directory, for example:cp browser.lua ~/.config/maki/lua/ -
Load it from your maki init file (
~/.config/maki/init.lua):require("browser")
-
Set permissions in
~/.config/maki/plugin.toml— the plugin needsrun(to spawn Node.js) andfs_read/fs_write(for temp-file IPC and artifact saving):[permissions] run = true fs_read = true fs_write = true
The plugin registers two options you can set in your maki config:
maki.setup({
plugins = {
["maki-browser-plugin"] = {
cmd = "node", -- Node.js binary path
server_timeout = 15, -- Timeout in seconds for each server command
},
},
})This plugin was generated 100% by DeepSeek V4 Pro, after its human operator got fed up with silly indentation bugs when generating HAML.
MIT
