dev-browser
A Claude Skill to give your agent the ability to use a web browser
A local-first multi-agent orchestration platform. One manager, many workers, zero tab-juggling. Middleman is pre-v1, experimental, and updated constantly. Expect breaking changes.
$ npx -y skills add SawyerHood/middleman --agent claude-code
Repo: SawyerHood/middleman
What's inside
[!IMPORTANT] Middleman is being superseded by bb, an agentic IDE that orchestrates Claude Code, Codex, and Pi in long-lived threads you can follow live and steer at any turn. Try it with
npx bb-app@latest, then openhttp://localhost:38886. Requires Node 22.12.0+ on macOS/Linux, or Windows via WSL2.
A local-first multi-agent orchestration platform. One manager, many workers, zero tab-juggling.
[!WARNING] Middleman is pre-v1, experimental, and updated constantly. Expect breaking changes.
If you're using agentic coding tools, you've probably hit this wall: you start with one agent, then two, then five. You're branching, worktree-ing, reviewing, merging, context-switching. The agents are cranking out code. But your entire day is spent managing them, sequencing work, checking output, nudging things along.
You're not an IC anymore. You've become a project manager. You need a middle manager.
Middleman gives you one. You talk to a single persistent manager agent per project. You describe what needs to be done, whether it's a feature, a batch of bug fixes, or a refactor, and the manager dispatches workers, parallelizes where it makes sense, and surfaces only the things that need your attention.

npx middleman-app
That's it. Open http://localhost:47187, go to Settings, sign in with your OpenAI or Anthropic key, create a new manager, and start talking.
git clone https://github.com/SawyerHood/middleman.git
cd middleman
pnpm i
pnpm dev
# http://127.0.0.1:47187
Middleman is three things running on your machine:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Dashboard UI (TanStack + Vite SPA) โ
โ Chat, agent status, settings, artifacts โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ WebSocket
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Backend Daemon (Node.js) โ
โ HTTP + WS server, agent orchestration, โ
โ message routing, persistence, scheduler โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ spawns & messages
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Agents (pi / Codex) โ
โ Manager โ Workers โ Merger โ
โ Each in its own worktree โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
apps/backend is the daemon. HTTP + WebSocket server, swarm orchestration runtime, persistence, and scheduler.apps/ui is the dashboard. Real-time agent monitoring, chat interface, and settings management.This is a vibecoded project. It's here to inspire, not to be a polished product. Fork it, tear it apart, or use it as a starting point to build your own middle manager.
Apache-2.0
.env.example
.github/
workflows/
ci.yml
release.yml
.gitignore
.husky/
pre-commit
.mods
.prettierignore
.prettierrc
AGENTS.md
apps/
backend/
package.json
src/
build-hash.ts
config.ts
index.ts
notes/
note-storage.ts
reboot/
control-pid.ts
scheduler/
cron-scheduler-service.ts
schedule-types.ts
schedule-utils.ts
swarm/
archetypes/
archetype-prompt-registry.ts
builtins/
manager.md
merger.md
cwd-policy.ts
directory-picker.ts
memory-paths.ts
model-presets.ts
secrets-env-service.ts
session-model-descriptor.ts
skill-frontmatter.ts
skill-metadata-service.ts
skills/
builtins/
brave-search/
content.js
package.json
search.js
SKILL.md
cron-scheduling/
SKILL.md
image-generation/
generate.d.ts
generate.js
SKILL.md
memory/
SKILL.md
swarm-manager-lifecycle.ts
swarm-manager-transcript.ts
swarm-manager.ts
swarm-runtime-context.ts
swarm-sql.ts
swarm-tools.ts
types.ts
test/
archetype-prompt-registry.test.ts
config.test.ts
cron-scheduler-service.test.ts
directory-picker.test.ts
file-editor-targets.test.ts
image-generation-helper.test.ts
model-presets.test.ts
scheduler-routes.test.ts
secrets-env-service.test.ts
swarm-manager-bootstrap.test.ts
swarm-manager-completion-report.test.ts
swarm-manager-events.test.ts
swarm-manager-host-call.test.ts
swarm-manager-lifecycle.test.ts
swarm-manager-transcript.test.ts
swarm-runtime-context.test.ts
swarm-sql-migrations.test.ts
swarm-tools.test.ts
ws-command-parser.test.ts
ws-handler.test.ts
ws/
attachment-parser.ts
hono-utils.ts
http-utils.ts
routes/
agent-routes.ts
conversation-routes.ts
file-editor-targets.ts
file-routes.ts
health-routes.ts
manager-routes.ts
notes-routes.ts
scheduler-routes.ts
settings-routes.ts
server.ts
ws-command-parser.ts
ws-handler.ts
tsconfig.build.json
vitest.config.ts
cli/
bin/
middleman
package.json
src/
index.ts
tsconfig.build.json
site/
.gitignore
package.json
README.md
src/
router.tsx
routes/
__root.tsx
index.tsx
routeTree.gen.ts
styles.css
tailwind.config.ts
tsconfig.json
vite.config.ts
ui/
.cta.json
.gitignore
.vscode/
settings.json
components.json
e2e/
chat.e2e.ts
notes-settings.e2e.ts
support/
middleman-stack.ts
ui-helpers.ts
package.json
playwright.config.ts
public/
agents/
claude-logo.svg
codex-app-logo.svg
codex-logo.svg
logo192.png
logo512.png
manifest.json
pi-logo.svg
robots.txt
tanstack-circle-logo.png
tanstack-word-logo-white.svg
README.md
src/
components/
chat/
AgentSidebar.test.ts
AgentSidebar.tsx
ArtifactPanel.test.ts
ArtifactPanel.tsx
ArtifactsSidebar.tsx
AttachedFiles.test.ts
AttachedFiles.tsx
ChatHeader.tsx
ContentZoomDialog.tsx
ContextWindowIndicator.tsx
CreateManagerDialog.tsx
DeleteManagerDialog.tsx
MarkdownMessage.test.ts
MarkdownMessage.tsx
message-list/
AgentMessageRow.test.ts
AgentMessageRow.tsx
ConversationMessageRow.test.tsx
ConversationMessageRow.tsx
EmptyState.tsx
message-row-utils.tsx
MessageAttachments.test.tsx
MessageAttachments.tsx
MessageAttachmentsLightbox.test.ts
ToolLogRow.test.tsx
ToolLogRow.tsx
types.ts
MessageInput.tsx
MessageList.scroll.test.ts
MessageList.test.ts
MessageList.tsx
SettingsDialog.tsx
dev/
ReactGrabBootstrap.tsx
RootDevtools.tsx
notes/
ImageNode.tsx
notes-api.ts
notes-lexical.css
notes-storage.ts
NoteSearchPalette.tsx
NotesMarkdownEditor.test.ts
NotesMarkdownEditor.tsx
NotesTree.tsx
NotesView.test.ts
NotesView.tsx
settings/
settings-api.ts
settings-row.tsx
settings-types.ts
SettingsAuth.tsx
SettingsGeneral.tsx
SettingsLayout.tsx
SettingsSkills.tsx
ui/
badge.tsx
button.tsx
checkbox.tsx
command.tsx
context-menu.tsx
dialog.test.ts
dialog.tsx
dropdown-menu.tsx
input.tsx
label.tsx
scroll-area.tsx
select.tsx
separator.tsx
switch.tsx
tabs.tsx
textarea.tsx
tooltip.tsx
ViewHeader.tsx
hooks/
index-page/
use-dynamic-favicon.ts
use-file-drop.ts
use-manager-actions.ts
use-pending-response.ts
use-route-state.ts
use-visible-messages.test.ts
use-ws-connection.ts
lib/
agent-hierarchy.test.ts
agent-hierarchy.ts
agent-message-utils.ts
agent-status.ts
api-endpoint.ts
artifacts.test.ts
artifacts.ts
chat-view-preferences.test.ts
chat-view-preferences.ts
collect-artifacts.test.ts
collect-artifacts.ts
context-window.ts
conversation-history.ts
favicon.ts
file-attachments.ts
manager-order.ts
message-drafts.ts
model-preset.test.ts
model-preset.ts
read-file-url.ts
theme.ts
utils.ts
visible-messages.ts
ws-client.test.ts
ws-client.ts
ws-request-tracker.ts
ws-state.test.ts
ws-state.ts
router.tsx
routes/
__root.tsx
-index.test.ts
index.tsx
routeTree.gen.ts
styles.css
tsconfig.json
vite.config.ts
vitest.config.ts
data/
sessions/
manager.jsonl
prod-script-worker.jsonl
swarm/
agents.json
docs/
images/
middleman-header.png
ui-screenshot.png
LICENSE
package.json
packages/
protocol/
package.json
src/
attachments.ts
client-commands.ts
index.ts
server-events.ts
shared-types.ts
tsconfig.json
swarmd/
.gitignore
AGENTS.md
examples/
chat-ui/
index.html
package.json
package.json
README.md
src/
bootstrap.ts
config/
.gitkeep
defaults.ts
env.ts
core/
events/
.gitkeep
event-bus.ts
index.ts
ids.ts
services/
.gitkeep
index.ts
message-capture.ts
message-service.ts
message-store.ts
operation-service.ts
session-service.ts
store/
.gitkeep
db.ts
index.ts
message-repo.ts
migrations/
.gitkeep
operation-repo.ts
schema.ts
session-repo.ts
shared.ts
supervisor/
.gitkeep
index.ts
recovery-manager.ts
runtime-supervisor.ts
worker-protocol.ts
types/
.gitkeep
events.ts
index.ts
messages.ts
runtime.ts
sessions.ts
index.ts
runtime/
claude/
.gitkeep
claude-adapter.ts
claude-mapper.ts
claude-query-session.ts
claude-sdk-loader.ts
index.ts
codex/
.gitkeep
codex-adapter.ts
codex-jsonrpc-client.ts
codex-mapper.ts
index.ts
common/
.gitkeep
adapter.ts
checkpoint.ts
event-normalizer.ts
host-tools.ts
index.ts
raw-events.ts
scripted-backend-adapter.ts
pi/
.gitkeep
index.ts
pi-adapter.ts
pi-mapper.ts
pi-session-host.ts
worker-entry.ts
version.ts
test/
.gitkeep
adapter-contract.test.ts
claude-adapter.test.ts
codex-adapter.test.ts
event-bus.test.ts
fixtures/
fake-codex-app-server.mjs
host-tools.test.ts
message-capture.test.ts
message-service.test.ts
message-store.test.ts
operation-service.test.ts
pi-adapter.test.ts
recovery-manager.test.ts
scripted-backend-adapter.test.ts
session-service.test.ts
store.test.ts
... 17 moreA Claude Skill to give your agent the ability to use a web browser
FAQ
middleman is a Claude Code plugin with 4 hand-picked skills for agent orchestration work, indexed on Flowy. Install it with the command on its page. It includes brave-search, cron-scheduling, image-generation. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.