All notable changes to Agent Browser are recorded here. The format follows Keep a Changelog, and this project uses Semantic Versioning.
0.2.3 - 2026-10-01
- An observer-authorized, image-only
POST /browser/view-frameendpoint and matching Python/Node client methods for the authenticated Aether RC browser relay. Capture is limited to one frame per second per owned session, omits page text and form values, and does not consume model vision steps. The local noVNC port remains loopback-only and must not be tunneled.
0.2.2 - 2026-09-04
server.jsonat the repository root, so Agent Browser can be published to the official MCP Registry asio.github.AetherAI3/agent-browser. It lists both clients — the npm and PyPIaether-browserpackages — each started asaether-browser mcpover stdio, withAGENT_BROWSER_URLand the two tokens declared as optional environment variables.- Registry ownership proof carried by the packages themselves: an
mcpNamefield in the npm client'spackage.json, and anmcp-namemarker at the top of the PyPI client's README, which is that package's long description. The registry verifies both against live package metadata, so this is the first release that can be published to it.
- Version bumped to 0.2.2 across the runtime, both clients, the image label, and the Compose
tag. No runtime behaviour changes, and the API contract stays
api_version: "v1".
0.2.1 - 2026-09-04
- Reconciled the public demo record: current continuous media and the superseded v0.1 still montage are now clearly scoped, with checksums and the limits of the retained public provenance.
- Updated the launch kit, repository metadata, and release copy to cover the Python client, PyPI, and both MCP servers instead of describing the old v0.1.0 release candidate.
- Prepared the patch release so its tag is created only after the runtime, evidence-rebind, and manifest commits close; this keeps the tagged source archive and release evidence coherent.
0.2.0 - 2026-09-03
- MCP server, in both clients, under the same nine tool names:
aether-browser mcp(Python) andnpx aether-browser mcp(Node) serve one Agent Browser session to any MCP client over stdio, so Claude Code, Claude Desktop, Cursor and Windsurf can drive the session a human is watching. The JSON-RPC transport is implemented directly inclients/node/src/mcp.jsandclients/python/src/aether_browser/mcp.py, so neither client gains a runtime dependency. Documented indocs/MCP.md. - The MCP server owns the session id, so the model never carries it, and every response that can
carry the live view URL does. Its
initializeinstructions tell the model to stop and ask for a human takeover at a login, a payment, or a 2FA prompt rather than guessing. - A packaging test asserts the two MCP servers expose an identical toolset, so the Node and Python servers cannot drift apart without failing CI. Each server also reports the version its own package declares, with a test per client, so a release bump cannot leave an MCP server advertising a stale version.
- The README demo is a real recorded run rather than the previous montage of three static frames,
and it plays inline instead of linking to a file.
docs/DEMO_EVIDENCE.mdrecords how it was made and states its limits. - Documentation that describes an ongoing property of the pre-1.0 line — the unauthenticated
loopback-only noVNC surface, the closed API contract, the locally built container — now says
v0.xrather thanv0.1, so those statements stay true across releases instead of silently going stale on every bump. Statements that name the release itself sayv0.2.0. SECURITY.mdno longer describes the project as preparing its first release candidate, and its supported-version table names the current release line.
0.1.0 - 2026-09-03
First stable release of the v1 API contract and both clients.
- Python client and CLI in
clients/python, published to PyPI asaether-browser— the same distribution name, commands, and closedv1contract as the npm client, released version for version with it (0.1.0rc1is npm's0.1.0-rc.1). No runtime dependencies: the transport isurllibfrom the standard library. Requires Python 3.10 or newer. pypi-publish.yml, the exact sibling ofnpm-publish.yml: manual dispatch, the same exact-current-main ref proof, a default dry run, and PyPI Trusted Publishing (OIDC) instead of a stored token.python-clientCI job covering unit tests, strict typing, wheel contents, and a server-free CLI run. Its packaging tests readclients/node/package.json, so a version or command that drifts between the two clients fails in CI rather than on a registry.
- Both clients leave the release-candidate line: npm
0.1.0-rc.1and PyPI0.1.0rc1become0.1.0, sonpm install aether-browserandpip install aether-browserneed no prerelease flag. The CLI'supnow fetches thev0.1.0source tag.
0.1.0-rc.1 - 2026-09-02
First public, source-only release candidate, published as Agent Browser by Aether AI.
- Single-session runtime that owns one headed Google Chrome Stable instance behind a closed v0.1 HTTP API: session create/end, navigation, structured snapshots, and bounded interaction (click, type, press, scroll).
- Separate controller and observer authorization roles, with fail-closed capacity rejection.
- Live human observation and takeover of the same session over noVNC.
- Egress policy that refuses direct SSRF targets and out-of-policy redirects, keeps downloads non-persistent, and bounds popups.
- Deterministic teardown covering browser processes, the browser profile, and the container.
- Docker Compose quickstart that binds user-facing listeners to numeric loopback.
- Release evidence pipeline: rootless image build, SBOM and vulnerability scan, isolated acceptance against the exact image ID, quickstart reproduction, and a strict repository gate.
The project is Agent Browser by Aether AI, and this is the first candidate published under
that name. The repository is AetherAI3/agent-browser, the Python package is agent_browser, the
distribution is agent-browser, and the runtime environment prefix is AGENT_BROWSER_*.
An earlier candidate was briefly published under the working name "Aether Browser" before the
rename settled. It was withdrawn rather than kept alongside this one, so v0.1.0-rc.1 is the only
release and it carries the final naming throughout.
- The v0.1 noVNC surface is unauthenticated and is intended only for numeric loopback on a machine
you control. See
docs/SECURITY-MODEL.md. - Grype runs against the exact image with
--fail-on high --only-fixed. A green build means no fixed high-or-higher findings, not an absence of vulnerabilities; seedocs/RELEASE_EVIDENCE.mdfor the full posture.