Frontend perception engine with optional CRG-powered navigation hints for Browser Use.
Project description
Frontend Perception Engine (CRG as Optional Library)
This project implements a frontend navigation layer where:
- Browser Use stays the browser automation engine.
- Code Review Graph (CRG) is used only as an optional knowledge source.
- Browser execution continues even when CRG is unavailable.
Architecture
Cursor / Claude
↓
Our MCP
↓
Frontend Navigation Layer
↓
Browser Use
↓
Browser
CRG is integrated behind ICodeGraph, so it can be replaced later by another backend such as FrontendInteractionGraph without changing Browser Use orchestration.
Dependency Integration
CRG is integrated as a dependency (not forked, not modified):
code-review-graph>=2.3.6browser-use>=0.13.3
Install:
pip install -e .
Frontend Perception MCP (No LLM in Server)
The MCP server is deterministic runtime only (browser observation + actions + verify).
Your coding agent (Cursor/Claude/Codex) remains the brain.
Install
Both PyPI names install the same MCP server:
| Package | Install |
|---|---|
frontend-perception-engine |
pip install frontend-perception-engine |
frontend-mcp (alias) |
pip install frontend-mcp |
Recommended (quiet output + next steps):
uvx --from frontend-perception-engine frontend-perception-install
Or the shorter alias name:
uvx --from frontend-mcp frontend-mcp-install
With Chromium for Browser Use:
uvx --from frontend-perception-engine frontend-perception-install --with-browser
Development install from this repo:
python -m navigation.cli.install --editable .
Or classic pip:
pip install frontend-perception-engine
Run MCP server
Using module entrypoint:
python -m navigation.mcp
Using script entrypoint:
frontend-perception-mcp
Using uvx (no local install in current environment):
uvx --from frontend-perception-engine frontend-perception-mcp
# or
uvx --from frontend-mcp frontend-mcp
Cursor MCP config
{
"mcpServers": {
"frontend-perception": {
"command": "python",
"args": ["-m", "navigation.mcp"],
"env": {
"PYTHONPATH": "C:/Users/usman/Projects/frontend-perception-engine/src"
}
}
}
}
Runtime prerequisites
- Start the sandbox app:
cd sandbox && npm run dev - Default URL used by tests/tools:
http://localhost:5173 - No API keys are required to run the MCP path itself
CRG Documentation and Public API Notes
The integration uses CRG public tool functions from:
code_review_graph.tools.build.build_or_update_graphcode_review_graph.tools.query.query_graphcode_review_graph.tools.query.semantic_search_nodescode_review_graph.tools.query.get_impact_radiuscode_review_graph.tools.query.list_graph_statscode_review_graph.tools.query.traverse_graph_func
Graph lifecycle
- Initialize graph (incremental/minimal):
build_or_update_graph(full_rebuild=False, postprocess="minimal") - Refresh graph (incremental):
build_or_update_graph(full_rebuild=False) - Rebuild graph (full):
build_or_update_graph(full_rebuild=True)
Incremental indexing
CRG incremental path is handled by incremental_update under the hood and can detect changed files from VCS (base=HEAD~1 by default).
Watch mode
CRG supports continuous updates via:
- CLI:
code-review-graph watch - API internals:
code_review_graph.incremental.watchandstart_watch_thread
This wrapper does not require watch mode, but is compatible with repositories kept fresh by CRG watch/daemon.
Querying
- Pattern queries (neighbors/file relationships):
query_graph - Search (hybrid semantic + keyword):
semantic_search_nodes - Blast radius / route impact:
get_impact_radius - Traversal/path-like exploration:
traverse_graph_func - Stats/health:
list_graph_stats
Wrapper Layer
All CRG coupling is isolated in:
src/navigation/codeGraph/
Public contract:
initialize()refresh()rebuild()search()shortest_path()get_neighbors()get_component()get_file()get_route()query()
Future-oriented methods are already represented on ICodeGraph:
findNavigationHint(...)style equivalent viafind_navigation_hint(...)find_relevant_components(...)find_likely_route(...)find_related_files(...)find_button_candidates(...)find_component_hierarchy(...)find_entry_point(...)
Browser Use Integration
BrowserUseNavigator provides a lightweight dry-run timeline for tests.
PerceptionAgentRunner runs a real Browser Use agent with optional graph hints injected via extend_system_message. Graph output is never a mandatory stage — if CRG or AWS credentials are missing, the agent either skips hints or reports a clear error.
Live agent (Bedrock Nova)
- Start the sandbox:
cd sandbox && npm run dev
- Configure AWS (copy
.env.example→.env):
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=us-east-1
BEDROCK_MODEL=amazon.nova-pro-v1:0
SANDBOX_URL=http://localhost:5173
- Install AWS extra and run:
pip install -e ".[aws]"
python src/run_agent.py --task "Add Pulse Watch to cart and complete checkout"
Dry-run (graph hints only, no browser):
python src/run_agent.py --dry-run --task "Log in as admin and open admin report"
Flags:
--no-graph— disable CRG hints--headless— headless browser--max-steps 25— step limit--url http://localhost:5174— custom sandbox URL
Demo
Run:
python src/demo.py
Expected behavior:
- Browser Use execution starts.
- Optional code graph query is attempted.
- Browser Use continues regardless of query success.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file frontend_perception_engine-0.2.0.tar.gz.
File metadata
- Download URL: frontend_perception_engine-0.2.0.tar.gz
- Upload date:
- Size: 52.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89982f7d3376abd9a2d20fdbabd777a5557098b9a2629663d4986a6240ad9c87
|
|
| MD5 |
6cba1ccd62d9ae2a5eeeb2fbb269bf79
|
|
| BLAKE2b-256 |
74871f70412ae0d6e4e9c44d315abff6661cce9bfd977a36156f447d70109f75
|
File details
Details for the file frontend_perception_engine-0.2.0-py3-none-any.whl.
File metadata
- Download URL: frontend_perception_engine-0.2.0-py3-none-any.whl
- Upload date:
- Size: 73.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb302346a508f89d53fa89b1148e2ec3675af24a012488a5df729d3bf438c49d
|
|
| MD5 |
bec07b2dab8e9ae06ebec54a11b3eed5
|
|
| BLAKE2b-256 |
24c40a061dea2a1c5fc90393ecbfc698eb0544f863282bbc7d1eb9cea8a7289c
|