An open API service indexing awesome lists of open source software.

https://github.com/3p3r/oatmeal

Oatmeal is a single binary tray application that extends your web agent's capabilities via an MCP server with browser automation, Bash, Python, and other automation utilities.
https://github.com/3p3r/oatmeal

agent-browser mcp mcp-server page-agent

Last synced: about 2 months ago
JSON representation

Oatmeal is a single binary tray application that extends your web agent's capabilities via an MCP server with browser automation, Bash, Python, and other automation utilities.

Awesome Lists containing this project

README

          

# Oatmeal

Oatmeal is a single binary tray application that extends your web agent's capabilities via an MCP server with browser automation, Bash, Python, and other automation utilities.

Oatmeal Logo

- [Quick Start](#quick-start)
- [Configuration](#configuration)
- [Command Mode](#command-mode)
- [Exporting Files from Command Mode](#exporting-files-from-command-mode)
- [MCP Tools](#mcp-tools)
- [CLI Equivalents](#cli-equivalents)
- [URI Launch Mode](#uri-launch-mode)
- [Platform Notes](#platform-notes)

## Quick Start

Oatmeal is meant to be used with its complementary barebones React component: [Storybook here](https://3p3r.github.io/oatmeal/storybook/). Build on top of this foundation to create your own custom agent interfaces, or use the MCP server directly in your agents without a UI.

Download the latest binary from [releases](https://github.com/3p3r/oatmeal/releases):

- Linux: `oatmeal-linux`
- macOS: `oatmeal-mac`
- Windows: `oatmeal-windows.exe`

Run it:

```bash
# Linux/macOS
chmod +x ./oatmeal-*
./oatmeal-*

# Windows
.\oatmeal-windows.exe
```

By default, Oatmeal starts an MCP server on `http://localhost:9607/mcp`.

macOS note:

```bash
xattr -d com.apple.quarantine ./oatmeal-mac
```

Windows note:

You may need to allow the binary through SmartScreen or Windows Defender the first time you run it.

## Configuration

Oatmeal works without configuration. Default behavior:

- Host: `0.0.0.0`
- Port: `9607`
- Browser path: auto-detected
- Page-agent model: `qwen3.5-plus`
- Page-agent URL: `http://localhost:11434/v1`
- Page-agent key: `NA`

Optional config sources:

- `~/.oatmeal`
- `./.oatmeal`
- `OATMEAL_*` environment variables
- CLI flags

Example config:

```toml
port = 9607
host = "0.0.0.0"
browser_path = "/path/to/browser"

[page_agent]
model = "qwen3.5-plus"
url = "http://localhost:11434/v1"
key = "NA"
```

Nested page-agent environment variables use double underscores:

- `OATMEAL_PAGE_AGENT__MODEL`
- `OATMEAL_PAGE_AGENT__URL`
- `OATMEAL_PAGE_AGENT__KEY`

Precedence is:

`built-in defaults -> ~/.oatmeal -> ./.oatmeal -> OATMEAL_* -> CLI flags`

## Command Mode

Use `--command` when you want to run a shell-style script instead of starting the MCP server.

Inside command mode, both `agent-browser` and the shorter `ab` alias are available.

Examples:

```bash
./oatmeal-* --command "agent-browser open https://example.com"
./oatmeal-* --command "ab open https://example.com"
./oatmeal-* --command "ab --headed open https://example.com"
./oatmeal-* --command "name=world && echo hello-$name > /report.txt"
./oatmeal-* --command "python3 -c \"print(2 ** 10)\""
```

Synthetic browser helpers are also supported:

```bash
./oatmeal-* --command "ab agentic-open https://example.com"
./oatmeal-* --command "ab agentic-prompt https://example.com 'summarize this page'"
./oatmeal-* --command "ab agentic-prompt 'find the primary CTA on the current page'"
```

## Exporting Files from Command Mode

Oatmeal detects files created during command execution with a best-effort algorithm and captures them into MCP resources automatically.

## MCP Tools

When Oatmeal is running as an MCP server, it exposes these tools:

- `health`
- `version`
- `cache_directory`
- `screenshot_system`
- `shell_command`
- `delete_resource`
- `delete_all_resources`
- `uri_scheme`
- `shutdown`

User-facing behavior:

- `shell_command` runs the same script surface as CLI `--command`
- files generated by MCP command execution are returned as MCP resources
- `cache_directory` returns the cache folder used by Oatmeal, agents can use this to pass to `agent-browser` for file downloads
- `screenshot_system` captures all attached monitors as image resources
- `delete_resource` and `delete_all_resources` clean up generated resources from the current server

## CLI Equivalents

Standalone CLI flags expose the same functionality as the corresponding MCP tools:

| MCP Tool | CLI Flag | Output |
|----------|----------|--------|
| `version` | `--version-json` | `{"version": "X.Y.Z"}` |
| `cache_directory` | `--cache-dir` | `{"cache_dir": "..."}` |
| `screenshot_system` | `--screenshot` | saves PNGs to cache dir, prints paths as JSON |
| `shell_command` | `--command` | stdout/stderr passthrough |
| `uri_scheme register` | `--register-uri` | confirmation text |
| `uri_scheme unregister` | `--unregister-uri` | confirmation text |

## URI Launch Mode

Oatmeal supports an `oatmeal://` URI handler.

You can register or remove it explicitly:

```bash
./oatmeal-* --register-uri
./oatmeal-* --unregister-uri
```

When Oatmeal starts in default HTTP mode, it will register the URI handler automatically if needed.

Example URIs:

- `oatmeal://open?port=9911`
- `oatmeal://open?port=9911&host=127.0.0.1`

## Platform Notes

- Linux: x86_64 + aarch64
- macOS: universal binary
- Windows: 64-bit executable