Repository navigation
feat(computer): a chromium computer app in a shipped browsers bundle - #435
Merged
earakely-scale merged 5 commits intoNov 2, 2026
Merged
earakely-scale merged 5 commits into
earakely-scale merged 5 commits into
Conversation
…ny app agentenv_protocol.website_browser holds Chromium's install for a computer: Chrome for Testing 156.0.8078.4, the build Playwright 1.64.1 pins, for amd64 and arm64, by sha256; the packages it needs; ChromiumInstall, whose install step unpacks it with unzip and writes managed policies where Chrome for Testing reads them (no sign-in, sync, first-run or promotional tabs, prompts, updates or warning bars); and chromium_command, unsandboxed, without /dev/shm and with no proxy. The new apps bundle ships chromium, a computer app on that install that opens at boot on its start_urls, its profile its data, so each deploy and each reset starts clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hromium test bundle Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A launch is ready on any window of its class, so two apps on one computer that start Chromium with the same class would each take the other's window for their own. `chromium_command` takes `window_class`, `WINDOW_CLASS` by default. The installer's container journey counts the apps bundle among the shipped ones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The shipped bundles are named for what they hold (agents, computers, drivers), and chromium will also run outside a computer once it moves onto WebsiteBrowserEnvironment, so its bundle is `browsers`, not `apps`. Its id becomes `@local/agentenv-framework/browsers/chromium`; the `chromium` alias is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…package The protocol package is the SDK environments are written with. Its browser piece is a base class for website browsers, still to come, while a particular build, its archives, packages, install step, policies and command, belongs to the app that ships it. So all of it moves into the browsers bundle's chromium.py, and agentenv_protocol.website_browser goes. An app that wants the same Chromium, such as the bench's, pins it itself, which also keeps its browser fixed whatever a framework release ships. With no other app starting Chromium through it, the command no longer takes a window class. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
earakely-scale
deleted the
edgararakelyan/fd-4370-m16-ready-made-chromium-computer-app
branch
November 2, 2026 01:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A ready-made Chromium for computers: the
chromiumcomputer app, shipped in a newbrowsersbundle.agents,computersanddrivers, and like them is named for what it holds. The name still fits once Chromium also runs outside a computer.src/agent_env/browsers/envs/chromium/, anenv.tomlandchromium.py, which holds all of it:--class=Chromium(which the launch matches), its profile and a cache outside it, then the start URLs. No proxy flags..config/chromium) is its data, so a reset clears it. Astart_urlssetting, empty by default.apps = ["chromium"]in a computer'senv.tomlgives it a browser.Nothing changes in
agentenv-protocol. Per the website browser design, the protocol will getWebsiteBrowserEnvironment, the base class for what agentenv owns about any browser (flags, policies, CA trust,browser/v1over CDP), and this app becomes its subclass. A particular Chromium build belongs to the app that ships it. An app elsewhere that wants the same browser, such as the bench's, pins it itself, which also keeps a benchmark's browser fixed whatever a framework release ships.Policies
Chrome for Testing reads managed policies only from
/etc/opt/chrome_for_testing/policies/managed, not Chromium's folder or Chrome's.Without them a fresh window shows three things: CfT's "only for automated testing" bar, a
--no-sandboxwarning bar and a "Sign in to Chromium?" pill. The policy set turns off sign-in, sync, promotional tabs, the default-browser prompt, telemetry, password and autofill prompts, translation, component updates, and geolocation and notification prompts.CommandLineFlagSecurityWarningsEnabled=falsealso removes both bars.Tests
tst/unit/env/envs/test_chromium_app.py:browsersbundle parses to@local/agentenv-framework/browsers/chromiumwith thechromiumalias;start_urls;browsers.tst/integration/computer/chromium_app_test.py(int_test_slow): a desktop on ubuntu-24.04 withapps = ["chromium"].start_urlsshows exactly one Chromium window, on the first page, and Control+Tab through MCP reaches the second.Part of FD-4370 (M1.6).
🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge; no blocking issue was found.Summary
Adds the shipped
browsersbundle with achromiumcomputer app.chromium.No new actionable issues were found in the changes since the previous review.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart LR A["Computer lists chromium"] --> B["Resolve browsers bundle"] B --> C["Download archive for target architecture"] C --> D["Unpack browser and write policies"] D --> E["Launch Chromium at boot"] E --> F["Wait for Chromium window"] G["Reset app data"] --> H["Clear browser profile"] H --> EReviews (4) · Last reviewed commit: "refactor(computer): keep chromium's pin ..." · Reviewed by Greptile