Repository navigation
v0.0.2
The first release. Everything is new, which is why there is no Changed or
Fixed below — both are relative to a version somebody is running, and there
isn't one.
Added
-
Drive a real Chrome or Firefox browser from an agent. Fourteen actions: open and end a browser, navigate, click, hover, type, press keys, read an element, screenshot, print to PDF, upload a file, switch frames, answer dialogs, resize, and run JavaScript.
-
Every action is an MCP tool and a plain HTTP endpoint, one to one. Hand the whole job to an agent over MCP, or drive the same actions yourself from an n8n HTTP node when you want exact control.
-
The browser stays open between calls, keeping its page, cookies and scroll position — it lives on the Grid, so a restart of this server does not lose it.
-
The server can hold your browser for you. Name your session with
?session=<name>on the MCP URL or anX-Session-Keyheader, andsession_idbecomes optional on every call. -
A session outlives its browser. When the Grid reaps one, or an operator ends it, the session keeps the browser choice, the window size and the page it was on — so
open_session()with no arguments puts you back where you were. -
Chrome or Firefox, chosen per session with
open_session(browser="firefox"). Every other action behaves identically on either. -
session://currentsays what you are holding: the browser, the page, the window size, whether you are inside a frame, and whether the Grid still has it. Reading it never opens a browser. -
Screenshots come back as images an agent can see — the viewport, one element, or the whole scrollable page.
-
save_pdfprints with the browser's own print engine, so the text stays selectable and the whole document is included rather than just the viewport. -
Everything the browser downloads is kept with the session, alongside anything saved with
screenshot(save=true)orsave_pdf, and listed assession://files. -
Signed file URLs, so a screenshot can be shown in a chat transcript or an
<img>tag rather than described. Rotating the server token revokes every link. -
An admin UI at
/admin: live sessions, what each has downloaded, clickable thumbnails, the Grid's own console, and buttons to clear a session's files or end its browser. It updates itself as things change. -
Bearer token auth on both surfaces.
/healthstays open so a kubelet can probe a pod that has no credentials, and reports Grid readiness rather than just process liveness. -
GET /openapi.yamldescribing the HTTP surface, generated from the MCP tool schemas so the two contracts cannot drift. -
An Agent Skill ships inside the wheel, written as an index so an agent loads only the reference its task needs.
-
MCP Apps components: a host that implements the extension renders a file grid instead of JSON.
-
Sessions in memory or Redis, and
--statelessfor running more than one replica. -
Ships as the
kubed/selenium-flowimage, and as a wheel attached to each release. The manual is the wiki.
What's Changed
- ci: static analysis, audits and a package step for the PR flow by @kferrone in #1
- fix(tests): run on Python 3.10, which the matrix proved they never did by @kferrone in #3
- deps(pip): Update redis requirement from <7,>=5.0 to >=5.0,<9 by @dependabot[bot] in #2
- refactor: a quality pass over code, tests and the lint that guards them by @kferrone in #4
- chore: prepare the first release by @kferrone in #5
- ci: stop the release notes being silently dropped, and two doc corrections by @kferrone in #7
New Contributors
- @kferrone made their first contribution in #1
- @dependabot[bot] made their first contribution in #2
Full Changelog: v0.0.1...v0.0.2
Container image
The image is what this repo ships, and what the cluster runs:
docker pull kubed/selenium-flow:v0.0.2Python package
Not on PyPI. The wheel and sdist are attached to this release:
pip install https://github.com/kubed-io/selenium-flow/releases/download/v0.0.2/kubed_selenium_flow-0.0.2-py3-none-any.whlOr straight from the tag:
pip install git+https://github.com/kubed-io/selenium-flow.git@v0.0.2