Skip to content

chore: remove the old BrowserOS server, extension and onboarding code - #3135

Open
capy-ai[bot] wants to merge 3 commits into
mainfrom
chore/retire-browseros-code
Open

capy-ai[bot] wants to merge 3 commits into
mainfrom
chore/retire-browseros-code

Conversation

@capy-ai

@capy-ai capy-ai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Part 1 of 4 in the BrowserOS retirement stack (FEL-1): code #3135 → CI #3136 → docs #3137 → bos_build #3139. The README layer already shipped on its own as #3140. Each layer stands on its own, so #3139 can be left out.

Removes the old BrowserOS product's source from packages/browseros-agent. Neo doesn't import, bundle or ship any of it: neo's Chromium build ships the Rust claw-server and claw-app.

Removed

  • apps/server (Bun MCP server and agent loop), apps/app (BrowserOS extension) and apps/app-onboard.
  • The shared packages only apps/server used: browser-core, browser-mcp, cdp-protocol, acpx-ai-provider, agent-mcp-manager.
  • Their build and dev plumbing: scripts/build/server*, scripts/build/app-onboard*, scripts/codegen/cdp-protocol.ts and its emitters, scripts/generate-models.ts, scripts/dev/inspect-ui.ts, server.json, process-compose.yaml, .vscode/launch.json, the test-ui skill, and the package scripts that drove them (start:server, build:server*, build:agent*, dev:app-onboard, build:app-onboard*, test:env, test:main, gen:cdp, generate:models, dev:manual, devtools, …). bun.lock was regenerated.
  • packages/shared modules with no remaining importer (schemas/{sidecar-config,browser-context,llm,chat-error,conversation-panels,agent}, sentry/sanitize, types/server-config, constants/exit-codes) and the env keys only the old server and extension read (VITE_ALPHA_FEATURES, BROWSEROS_TRUSTED_ORIGINS, BROWSEROS_AI_SDK_DEVTOOLS).
  • The old suites in ci/affected-suites.ts and scripts/run-test-suite.ts, and the matching tsconfig, biome and fallow entries.
  • packages/browseros/tools/vendor_uploads: the contract test that read the deleted server-prod-resources.json.
  • tools/dev and tools/dogfood are neo-only now. watch always runs neo, --claw is hidden and deprecated, --manual and the test command are gone, and BrowserOS binary arguments, the server sidecar config and the BrowserOS watch state are removed.

Kept, and why

  • scripts/env/migrate-local.ts still reads legacy apps/server/.env* files, because it migrates old local checkouts to the root env.
  • config.dev.json / config.sample.json match the sidecar config format claw-server's tests use.
  • bos_build still models the BrowserOS components, and neo's release ledger needs them (see the bos_build layer). release/suite_test.py therefore writes stand-in manifests for the deleted packages into its fixture repository, and specs_test only checks the neo extension's manifest on disk.

Verification

  • bun run check (lint, typecheck, fallow), bun run test, bun test ci, env:examples:check, codegen:claw-api:check and test:claw-api-contract all pass. The claw MCP smoke skips unless BROWSEROS_BINARY is set, as it does on main.
  • cargo fmt --check, cargo check and cargo test --workspace --locked pass. cargo clippy -D warnings fails on the fetch_update deprecation under cargo 1.99, and it fails the same way on main.
  • go build/vet/test and gofmt are clean in tools/dev and tools/dogfood.
  • The bos_build unittest suite passes apart from four failures that also occur on main in this sandbox (patchkit.batch_apply_test ×3 and a git-bootstrap workflow test). Ruff is clean.

Open decisions for Nithin (nothing in this stack changes these)

  • Update feeds old clients still poll. updates/browser/appcast{,-x86_64,-win,-win-arm64}.xml (BrowserOS browser), updates/server/appcast-server{,.alpha}.xml (BrowserOS server OTA) and the BrowserOS agent entry (bflpfmnmnokmjhmgnolecpppdbdophmk) in updates/extensions/update-manifest*.xml / extensions*.json are still committed and published through updates/upload.sh and release-extension-feeds.yml. Keep serving, freeze, or remove?
  • OTA publishing. publish-server-ota.yml stays because neo's nightly and release-claw-server.yml call it. Its BrowserOS server target and feed are untouched.
  • docs.browseros.com pages old clients link to. Installed BrowserOS builds deep-link /features/bring-your-own-llm, /features/chatgpt-pro-oauth, /features/github-copilot-oauth, /features/qwen-code-oauth, /features/scheduled-tasks, /features/use-with-claude-code and /changelog. The docs layer removes their source, so they 404 once the docs site redeploys unless redirects are added.
  • PR chore(release): nightly BrowserOS family transaction #2534 (an open draft "nightly BrowserOS family transaction") and its branch bot/release-nightly-704e7328df92 are part of the release ledger neo reads. Closing the PR doesn't remove it from the ledger, so this stack leaves both alone.

Open in Capy

Delete apps/server, apps/app, apps/app-onboard and the five shared packages only they used, with their build scripts, codegen, package scripts, env keys and dev tooling. The dev and dogfood Go tools now run BrowserOS neo only.
@greptile-apps

greptile-apps Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

PR author is not in the allowed authors list.

@github-actions github-actions Bot added the chore label Nov 2, 2026
The manifest it read, scripts/build/config/server-prod-resources.json, was removed with the old server.

@graphify-labs graphify-labs Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Graphify reviewed this change.

No issues found by static checks — no coupling regressions or blocking issues in the code graph. That is not the same as safe to merge: see what was not checked.

Not checked: tests were not run; no formal proof of the changed code.


Graphify review — findings

Adds a dogfood daemon tool that starts, health-checks, restarts and refreshes a dev BrowserOS build under a locked operation, with its own log lifecycle. Restart requests reject --force without a pull, and start refuses a dirty checkout that sits on a different branch. Extends the dev watch command to poll Rust claw inputs for changes and fail early when cargo is missing. Also removes the test-ui skill and the VITE_ALPHA_FEATURES and BROWSEROS_TRUSTED_ORIGINS env entries, and updates the release-suite and CI affected-suite tests.

Review partial — this diff was larger than one review pass covers, so later files were not reviewed; some findings may be missing.

Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 988 functions depend on the 902 functions this change touches.

Health — this change adds coupling hotspots:

  • worse: product_record() — 7 callers, 5 callees
  • worse: resolveResetTarget() — 8 callers, 3 callees
  • worse: main() — 1 callers, 21 callees
  • worse: buildAndStartEnvironment() — 2 callers, 8 callees

Verification — 988 functions in the blast radius were not formally verified this run (proofs are advisory here).

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 979 function(s) in the blast radius were not formally verified this run

Docs that may be stale (advisory)

…and 10 more.

· 4 more finding(s) on lines outside this diff (see the check run).

@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

✅ Tests passed: 3301/3311

Ran 9 of 9 suites (0 not affected by this change).

Suite Passed Failed Skipped
✅ claw-app 512/512 0 0
✅ claw-onboard 77/77 0 0
✅ agent-cursor 11/11 0 0
✅ build 31/31 0 0
✅ release 59/59 0 0
✅ claw-server 2087/2097 0 10
✅ claw-server-quality passed 0 0
✅ claw-mcp 359/359 0 0
✅ captcha 165/165 0 0

passed = ran successfully but emits no JUnit counts (a lint/format gate).

View workflow run

…s-code

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

# Conflicts:
#	packages/browseros-agent/tools/dev/cmd/target.go
#	packages/browseros-agent/tools/dev/cmd/watch.go
#	packages/browseros-agent/tools/dev/cmd/watch_test.go

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant