-
Bring your own provider: 15 presets (Anthropic, OpenAI, Kimi, Z.ai, Qwen, DeepSeek,
Gemini, OpenRouter, Groq, Mistral, xAI, Ollama; Anthropic, OpenAI and Kimi each sign in with a
subscription) plus any custom endpoint speaking the OpenAI or Anthropic wire format.
-
Real trusted input: clicks and keystrokes go through the Chrome DevTools Protocol, so they
are genuine trusted events, not synthetic JS dispatches that sites can ignore.
-
Sees the page, not the HTML: the model works from a compact semantic tree
([ref=e12] button "Submit"): small prompts, stable refs, and sanitized, capped results.
Passwords, one-time codes and card numbers never leave the page.
-
Page-internals tools: when keystrokes won't land, the agent acts directly in the page
(fill, evaluate); read-only network and console rings let it see a failing request or a
script error itself.
-
Guardrails that hold: you approve the plan before anything happens, and consequential
actions (paying, sending, deleting) come back for confirmation. Automatic retry with backoff on
transient provider errors, a step budget, truncation detection, and a Stop button that actually
stops.
-
Live run status: current action, elapsed time, and token spend while the agent works,
Claude Code-style.
-
Reasoning effort control: optional per-provider effort (none → max), mapped to each
wire format; omitted entirely when you want provider defaults.
-
Auto model resolution: leave the model on Auto and TabRunner runs the newest model the
endpoint lists, showing you which one that is; pin a model and effort per task from the panel
header.
-
Remembers across runs: your standing instructions (AGENTS.md) and the agent's own notes
(MEMORY.md) load into every run; a ## site: section loads only when a task starts on that
site. Editable on the options page, off with one toggle.
-
Skills: saved instructions the agent loads when a
task matches: /skill new distills a conversation you just steered into one, /skill <name>
runs one on demand, and skills tied to a site surface only there. Import one from a URL,
GitHub owner/repo, or pasted markdown (SKILL.md-compatible); export as markdown to share.
-
Runs on a timer: "every weekday at 9am, summarize my inbox", "at 3pm, check the delivery".
Ask for it in the panel and approving the plan is the consent; the run fires later in a tab of
its own and notifies you when it lands. The agent can pace itself the same way: schedule a
follow-up, keep checking, cancel when the goal is met. Review and cancel them in Settings.
-
Two-way MCP: Claude Code, Claude Desktop, or any Model Context Protocol client can hand
TabRunner a task and follow it to the answer, using the same browser and the same logins,
labelled in your history with which client did it. The client says what it wants done and
TabRunner's model does the driving, or the client drives directly when the job is small and exact.
TabRunner dials out too: connect remote MCP servers and their tools join every run behind the
plan gate (/mcp reports what's connected), and run events can POST to your own webhook. See
docs/mcp.md. In Claude Code, the plugin sets it up in one line:
claude plugin install tabrunner --marketplace tabrunner/tabrunner
-
Speaks your language, matches your theme: English, Português (Brasil), and Español; light,
dark, or follow the OS.
-
Your data stays local: provider configs and history live in chrome.storage. There is no
TabRunner server. See PRIVACY.md for the full picture, and
TERMS.md for the terms of use.