linuxdo-idea-ui
linuxdo-idea-ui linux.do용 유저스크립트 테마 모음
Chrome·Firefox용 확장 프로그램 및 로컬 MCP 서버
A Chrome/Firefox extension and local MCP server. Human-approved automation, API reverse engineering, OpenAPI generation and reusable workflows. Local-first, MIT.
플러그인TypeScript · JavaScriptGitHub @zoghlamimostafa온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Give AI agents a real Chrome/Firefox browser through MCP. Human-approved automation, API reverse engineering, OpenAPI generation and reusable workflows. Local-first.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Give your AI agent a real browser, and turn the traffic it sees into API docs and clients.
A local-first Firefox + Chrome extension and MCP server for Claude Code, OpenAI Codex and any other MCP client.
Chrome, Edge and Brave use the Chrome Web Store build. Then install the small local program: on Windows run the installer above (it brings its own Node.js; Windows may warn because it is not code-signed yet: More info, then Run anyway), elsewhere see Quick start.
The approval step (12 s). Watch the full 73-second demo (MP4): fill a form, approve the submit, turn traffic into an OpenAPI spec, open the dashboard. Recorded on the demo site in this repo; a script plays the agent. Re-record it with npm run demo:record.
AI agents are good at deciding what to do on a website and bad at being trusted with your accounts. BrowserForge closes that gap: the agent works in your real browser through an extension, a small local program carries its requests, and you approve anything consequential (submit, send, pay, passwords, uploads) with a click the agent cannot answer. What the agent sees and learns stays on your computer and is turned into reusable things: replayable flows, shareable skills, and API specs and clients built from the traffic it observed. The longer story, how this differs from headless automation and other browser bridges, and where the project is going: docs/VISION.md.
| Real browser, real session | A WebExtension, not a headless clone: your tabs, your logins, your cookies. |
| Local-first | Everything runs on 127.0.0.1. No cloud service, no API credits. |
| Reverse-engineer APIs | Capture traffic, then get endpoints, schemas, auth and pagination, an OpenAPI 3.1 spec and Python / TypeScript / JavaScript / PHP clients. |
| Human in the loop | Submitting forms, purchases, sending, accepting terms, passwords and uploads wait for a click in the extension popup that the agent cannot answer. A red STOP halts the agent until you resume. |
| Honest output | Every inferred API fact is labelled observed, inferred or hypothesis with confidence and evidence. Per-browser capture limits are documented in docs/LIMITATIONS.md. |
| Secure by default | Token-authenticated loopback transports, Origin/Host checks, strict schemas, secret redaction, path-safe file access. See docs/SECURITY.md. |
Requires Node.js 22 or newer, and Chrome, Edge, Brave or Firefox, on Linux, macOS or Windows (Linux is the one it has been tested on; see docs/INSTALL.md).
# From npm (no build): npm install -g @el-makina-ai/browserforge-mcp then: browserforge setup
# From a checkout:
npm install && npm run build
node apps/mcp-server/dist/cli.js serve # prints endpoints, creates tokens in ~/.config/browserforge/
node apps/mcp-server/dist/cli.js tokens # shows the extension token
Install the extension from the store:
Working from a checkout? Load your own build instead:
about:debugging#/runtime/this-firefox → Load Temporary Add-on → apps/firefox-extension/dist/firefox/manifest.jsonchrome://extensions → Developer mode → Load unpacked → apps/firefox-extension/dist/chromeConnect it. Click the toolbar icon, paste the extension token, press Connect.
Connect your agent. Guides: Codex · Claude Code
codex mcp add browserforge --url http://127.0.0.1:7345/mcp --bearer-token-env-var BROWSERFORGE_MCP_TOKEN
claude mcp add --transport http browserforge http://127.0.0.1:7345/mcp --header "Authorization: Bearer $(cat ~/.config/browserforge/mcp-token)"
Try it. Start the demo site with node tests/fixtures/demo-site/server.mjs, then ask your agent:
Call
system_status, then openhttp://127.0.0.1:8099/applyand describe the form.
Full instructions: docs/INSTALL.md · guides in the wiki · what is planned: the roadmap board. Problems: docs/TROUBLESHOOTING.md.
From a website to a working API client, in one conversation: the agent browses the shop, BrowserForge analyses the requests it saw (by code, not a model), writes an OpenAPI spec and a Python client that passes its own tests, and the client fetches real data:
Watch the 41-second API demo (MP4). Recorded on the demo site in this repo with npm run demo:record -- --scene api; a script plays the agent.
More end-to-end examples: docs/WORKFLOWS.md.
| Namespace | Tools |
|---|---|
| browser | browser_get_tabs, browser_get_active_tab, browser_select_tab, browser_close_tab, browser_navigate, browser_click, browser_type, browser_fill_field, browser_select_option, browser_scroll, browser_press_key, browser_get_page_text, browser_get_dom_snapshot, browser_get_interactive_elements, browser_take_screenshot, browser_wait_for_element, browser_get_forms, browser_extract_table, browser_verify, browser_fill_form, browser_get_downloads, browser_get_console_errors, browser_solve_captcha, browser_pending_requests, browser_pause, browser_resume, browser_stop |
| network | network_list_requests, network_get_request, network_get_request_details, network_search_requests, network_list_captures, network_configure_capture, network_export_har, network_import_har, network_clear_capture |
| api (reverse engineering) | api_analyze_traffic, api_list_endpoints, api_get_endpoint_details, api_generate_openapi, api_generate_client |
| form | form_profile_save, form_profile_list, form_profile_delete, form_discover, form_fill_from_profile, form_validate, form_preview_submission, form_prepare_cover_letter |
| goal (optional, local model) | browser_run_goal, browser_goal_feedback |
| knowledge | knowledge_add_document, knowledge_search, knowledge_list, , |
Read-only tools carry readOnlyHint. Every tool has a strict JSON schema (unknown arguments are rejected) and bounded output.
browser_run_goal is an optional fast path: local models pick one routine step at a time from a compact table of the page. By default Qwen (via Ollama) decides; --decider cascade puts Laya (via Ollaya) first with Qwen as backup. The run hands back to your agent when the models are unsure, and every step says which model decided. It only types values you pass in, never navigates to other sites, and goes through the same approval gate as every other action.
Analysis and code generation themselves are deterministic and use no LLM.
BrowserForge records what an agent does on each website as a flow: steps, several ways to find each element, and your typed values as named parameters (passwords are never kept). Replay a flow with no model (flow_run), or export it as a script for Playwright (TypeScript, Python), Selenium (Python, Java), Chrome DevTools Recorder / Puppeteer Replay, or neutral JSON:
browserforge flow list
browserforge flow export <id> --format playwright-ts --out signup.ts
FLOW_CONFIRM=1 FLOW_PARAM_FIRST_NAME=Grace npx tsx signup.ts
Exported scripts stop before submits, sends and uploads unless you say FLOW_CONFIRM=1, since outside BrowserForge there is no approval prompt. Details: docs/FLOWS.md.
browser_extract_table reads HTML tables and ARIA grids (also inside iframes) as column names and rows, with merged cells expanded, as JSON or CSV (spreadsheet formulas neutralised), or saved to a file so a big table does not fill the agent's context.site_note. See docs/SITES.md.browser_run_goal, the page is read for a confirmation or an error, and the run is labelled good or bad without waiting for anyone. browser_verify does it on demand.flow_consolidate merges many recordings of a task into one clean flow, and flow_to_skill turns it into a shareable skill that replays with no model.browserforge dashboard opens a read-only page on your own computer: connected browsers, MCP sessions and every tool, the plugins and skills you installed (with the permissions you approved, in plain words), recorded flows and how the local models are doing. It changes nothing and has its own token. Details: docs/DASHBOARD.md.
Anyone can add to BrowserForge without touching the core:
SKILL.md (and optional ready-made workflows). No code; agents read it. browserforge skill new my-skill. docs/SKILLS.mdbrowserforge plugin new my-tool. docs/PLUGINS.mdbrowserforge plugin search cv # npm packages tagged "browserforge-plugin"
browserforge plugin add ./plugins/rendercv
browserforge plugin config rendercv cvDir=~/cv rendercv=~/venv/bin/rendercv
For a read-only public API example without tokens, see examples/plugins/github-stats.
The first plugin is plugins/rendercv: tailor a RenderCV resume to each job (reorder and reword only; it rejects any number, link or tool name not already in your CV), render it, and keep an application log. Its companion skill skills/job-apply is a worked example of a skill. Contributing: CONTRIBUTING.md.
flowchart LR
A["Your agent<br/>Claude Code · Codex · any MCP client"] -->|"MCP + token"| D
subgraph D["browserforge daemon · 127.0.0.1"]
T["Tools"] --- N["Traffic analyzer<br/>+ client generator"]
T --- F["Flows"]
T --- M["Memory<br/>site cards · traces"]
T --- L["Local deciders<br/>Qwen · Laya"]
end
D -->|"WebSocket + token"| E["Extension<br/>Chrome · Firefox<br/>approvals · STOP"]
N --> O["OpenAPI · API clients · HAR"]
F --> S["Playwright · Selenium ·<br/>Chrome Recorder scripts"]
F -->|"flow_to_skill"| K["Skills"]
K --> A
P["Plugins<br/>permission manifests"] --> T
The extension, the daemon and the typed protocol between them are the core. Flows, skills and plugins are how it grows without touching the core, and the local models and site memory make repeated tasks cheaper. Each part, and where it is heading (a shared library of skills, local models that learn from your demonstrations, more plugins, more browsers and platforms), is in docs/VISION.md.
Claude Code / Codex ──MCP (HTTP + Bearer)──► browserforge daemon ──WebSocket (token + Origin)──► extension in Firefox / Chrome
MCP tools · BrowserHub background · content script · popup
NetworkStore · analyzer · generator approvals · STOP
Deeper dive: docs/ARCHITECTURE.md · docs/BROWSER_PROTOCOL.md · docs/RESEARCH.md.
--allow-reveal.browser_solve_captcha (local CapSkip app, needs --capskip and YOLO mode; see SECURITY.md).apps/firefox-extension cross-browser extension source (builds dist/firefox and dist/chrome)
apps/mcp-server daemon: MCP (HTTP/stdio), extension WebSocket hub, tools, CLI
packages/browser-protocol versioned Zod message and action schemas
packages/network-inspector capture store, filters, redacted views, HAR
packages/api-analyzer traffic to endpoints, schemas, pagination, auth, evidence
packages/client-generator OpenAPI 3.1, Python/TS/JS/PHP clients, safe writer, validators
packages/knowledge local reference documents (BM25) and run traces
packages/flows flow format, builder and exporters (Playwright, Selenium, Chrome Recorder, JSON)
packages/plugin-sdk what plugin authors import: manifest, permission-checked api, test helper
plugins/ reference plugins (rendercv)
skills/ reference skills (job-apply)
packages/shared errors, limits, redaction, path safety, tokens, logger
tests/ unit · security · integration · e2e (real browsers) · demo site
docs/ examples/ CONTRIBUTING.md
| Command | What it does |
|---|---|
npm run build | TypeScript project build and extension bundles |
npm run typecheck | tsc for packages, server, extension and tests |
npm run lint | ESLint and web-ext lint |
npm test | unit, security and integration tests (no browser needed) |
npm run test:e2e | real Firefox (geckodriver) and Chromium (Playwright); BF_BROWSERS=firefox to pick one |
npm run package | artifacts/browserforge-{firefox,chrome}-<version>.zip |
npm run dev | rebuild on change and restart the daemon |
Version 0.2.1 (the Chrome Web Store and Firefox Add-ons are updated after each release), published on the Chrome Web Store and Firefox Add-ons. BrowserForge reports what a WebExtension can actually see; it does not capture all browser traffic. For example, Firefox cannot observe WebSocket frames, closed shadow roots and sandboxed iframes are invisible to it, and consequential-action detection is heuristic.
Read docs/LIMITATIONS.md for the full list and docs/RELEASE_CHECKLIST.md for the manual checks still required before a release.
Use BrowserForge only on sites and accounts you are authorised to automate or inspect, and respect their terms of service and the law. It is built for your own sessions and for legitimate testing, integration and documentation work.
If BrowserForge saves you time, a ⭐ on this repository helps other people find it. Ideas, questions and plugins are welcome in Discussions; things you can pick up right now are the issues marked help wanted, and the plan is on the roadmap board.
knowledge_removeknowledge_export_dataset| flows | flow_list, flow_get, flow_save, flow_delete, flow_record, flow_export, flow_run, flow_consolidate, flow_to_skill |
| sites | site_info, site_note, site_list |
| skills | skill_list, skill_get, skill_run_workflow (plus one prompt per skill) |
| plugins | whatever the plugins you install add, e.g. cv_* from the RenderCV plugin |
| workflow | workflow_create, workflow_run, workflow_pause, workflow_resume, workflow_get_status |
| system | system_status, system_diagnostics |