Repository navigation
feat: agents sharing a worktree each get a browser tab of their own - #87
Merged
Merged
Conversation
… one you pick On a box with browser.tabs, each agent can have a tab of its own in a worktree's browser. The agent's view lists them in a strip with a dot on the ones in use, opens on the tab used last, and then only moves when you pick another, or when the watched tab closes (with a short note). The address, size, screencast and Console drawer follow the watched tab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
berthd browser --tab NAME (or $BERTH_BROWSER_TAB) gives an agent its own page in the worktree's Chromium: its own refs, console, requests, size and cookies, in a browser context and window of its own, so it renders at full speed whether or not anyone watches. Without it, agents in one worktree shared a page and took it from each other, and the live view jumped between their pages. Every per-worktree browser route takes ?tab=; status and the new tabs route list the tabs (with idle_ms, by the box's clock); close --tab closes one; browser.tab.opened/closed are events, and navigated/shot name the tab. A worktree's browser has 2 to 8 tabs by the box's memory; at the cap a tab idle for a minute makes room, else open is refused. The skills tell agents working side by side to use a tab each. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
sean-brydon
added a commit
to Stener1/berthd
that referenced
this pull request
Oct 14, 2026
v0.3.17 never went out (a draft: Apple was slow notarizing its dmg), and is being tagged again on main, which now has cosscom#87. Its changelog entry moves from Unreleased into v0.3.17. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
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.
Why
When several agents check pages in one worktree at once (a lead with a dozen teammates, say), they all drove the worktree's single agent-browser page. Each
opentook the page from the others: refs went stale, a shot could be of another agent's page, and the live view in the app jumped from one agent's page to the next.What
Box
berthd browser … --tab NAME(or$BERTH_BROWSER_TAB) gives an agent a tab of its own in the worktree's Chromium. Each tab has its own page, refs, console, failed requests, size and cookies, in a browser context of its own. Without--tab, commands use the main tab, as before.?tab=.statusand the newtabsroute list the tabs, withidle_msby the box's clock andbusy.close?tab=closes one tab.browser.tab.openedandbrowser.tab.closedare new events, andnavigatedandshotcarrytab. The box advertises thebrowser.tabscapability.openis refused, so no agent loses a page it's on. Each tab costs about 100 MB with a small page.App
browser.tabs, the agent's view shows a strip of tabs with a dot on the busy ones. It opens on the tab used last and then stays on the one you pick. The address, size, screencast and Console/Network drawer all follow the watched tab. If the watched tab closes, the view moves to the tab used last and says so.Skills and docs:
berth-browsertells agents working side by side to use a tab each, andberth-orchestratetells leads to name one in each brief. Agent browser guide, berthd and events references, and a changelog line.Checks
go vet ./... && go test -race ./..., including a real-Chromium test of two agents at once. It covers independent pages and refs, separate cookies, rendering unwatched, the proxy in new contexts, per-tab size and screencast, the cap, and events.cargo check, the app's checks,pnpm test(398) andpnpm build,npx tsc -p e2e, and the docs build.agent-browser-tabs(new),agent-browser-size,agent-browser-besideanddevtoolsall pass.Needs the box upgraded; older boxes behave as before.
🤖 Generated with Claude Code