Masashi Umezawa https://github.com/mumez/pharo-agentic-browser
Each session is called a topic:
@ClassName
Dedicated GUI tools for AI coding agents are becoming standard:
These tools lower the barrier for interacting with AI agents beyond simple chat.
The AI can now handle entire feature-level tasks, not just line completions.
Tools are evolving: the UI is no longer "editor + chat" — it's session orchestration.
Pharo developers should be able to leverage the same paradigm:
@Class>>method
Open a Playground in a Pharo 12+ image and evaluate:
Metacello new baseline: 'AgenticBrowser'; repository: 'github://mumez/pharo-agentic-browser:main/src'; load.
Then open the browser:
AgenticBrowser open.
Any ACP-compatible agent - preset list:
npm install -g @agentclientprotocol/claude-agent-acp
npm install -g @agentclientprotocol/codex-acp
gemini --acp
copilot --acp --stdio
agent acp
Also supported: OpenCode, Kilo Code, and more
Recommended: Install smalltalk-dev-plugin in your agent for better Smalltalk
/st-buddy
Each topic follows a clear state machine:
?
●
✓
When the AI requests permission:
Respond by clicking the button — the AI resumes seamlessly.
Reference Pharo classes or methods directly in the chat:
@QueryClass @DBAdapter>>connect please refactor this
AgenticBrowser resolves each @mention to its Tonel source and attaches it as an ACP text resource — no copy-paste needed.
@mention
@ClassName>>methodName
Click the [ ] button to attach a screenshot:
[ ]
@sc-20260528-001.png
Files are saved to <agenticBrowserRoot>/screenshots/sc-YYYYMMDD-NNN.png.
<agenticBrowserRoot>/screenshots/sc-YYYYMMDD-NNN.png
Right-click a topic → Set Goal... to enter a completion condition:
all tests pass
AgenticBrowser sends a goal prompt to the AI:
Goal has been set: all tests pass. When the goal is achieved, summarize and report in result-<topic-id>.md. Keep retrying until the goal is achieved.
When result-<topic-id>.md is created, the topic transitions to ✓ (#goalAchieved).
result-<topic-id>.md
#goalAchieved
Two hooks fire when a goal is reached:
topic announcer when: AbTopicGoalAchieved do: [:ann | Transcript crShow: ann topic title , ' achieved: ' , ann goal result].
topic whenGoalAchieved: [:goal | Transcript crShow: goal result].
Integrate goal events into your own automation workflows.
Topics are automatically saved to ab-topics.fuel using Pharo's Fuel serializer — they survive image restarts.
ab-topics.fuel
Manual save/restore:
AbTopicManager save. AbTopicManager load.
Per-topic state (settings, status, conversation) is fully persisted.
Place mcp.json in your AgenticBrowser root directory:
mcp.json
{ "mcpServers": { "my-server": { "command": "uvx", "args": ["my-server-package"], "env": {"API_KEY": "value"} } } }
smalltalk-interop
smalltalk-validator
useDefaultMcpServers: false
AbSettings default codingAgents: (AbSettings default codingAgents copyWith: {'name' -> 'my-agent'. 'command' -> #('my-agent' '--acp')} asDictionary). AbSettings save.
ab-settings.json
The agent appears as a preset in the New Topic dialog on next open.
useDefaultMcpServers
true
aiPermissionWaitTimeoutSeconds
1800
aiPermissionTimeoutOption
#reject_once
allow_once
allow_always
reject_once
exportApprovalWaitTimeoutSeconds
30
Settings can also be configured per-topic via right-click → Edit Settings...
pharo-agentic-browser brings the multi-agent delegation paradigm to Pharo:
https://github.com/mumez/pharo-agentic-browser