Loopin — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Loopin (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Give your AI coding agent eyes on the browser. Capture UI elements, text, styles, and accessibility data — then send it all directly to your agent via MCP.
Browser Extension → HTTP → LoopIn Server → MCP (stdio) → AI AgentLoopIn runs a local server that bridges your browser and your AI agent. The Chrome extension captures elements you click on, enriches them with context (HTML, CSS, selectors, accessibility attributes, React components), and sends it to the server. Your agent reads captures through MCP tools — no copy-paste, no screenshots.
The simplest setup. Everything runs on one machine.
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Chrome │────▶│ LoopIn Server│────▶│ Claude Code │
│ Extension │ │ (port 3456) │ │ (local) │
└─────────────┘ └──────────────┘ └─────────────┘
Your laptop1. Install & build
git clone https://github.com/skip5this/LoopIn.git
cd LoopIn
npm install
npm run build2. Add LoopIn as an MCP server
Add to your ~/.claude.json:
{
"mcpServers": {
"loopin": {
"command": "node",
"args": ["/path/to/LoopIn/dist/server.js"]
}
}
}3. Restart Claude Code so it picks up the new MCP server.
4. Load the Chrome extension
chrome://extensionsextension/ folder5. Capture
That's it. Your agent can now see what you see.
This is for when your AI agent runs on a different machine than your browser — like an always-on server, a home lab setup, or an OpenClaw agent.
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Chrome │────▶│ LoopIn Server│───── network ────▶│ AI Agent │
│ Extension │ │ (port 3456) │ │ (other machine)│
└─────────────┘ └──────────────┘ └──────────────┘
Your laptop Your laptop Server / iMac / etc.The key difference: your agent can't use stdio MCP directly because it's on a different machine. Instead, the agent hits LoopIn's HTTP API over the network.
1. Set up LoopIn on your laptop
Same as Option A — install, build, load the extension. But you'll also need to make the server accessible on your network:
# Start the server (it listens on all interfaces by default on port 3456)
npm run build && node dist/server.js2. Configure your agent to reach LoopIn
Your remote agent needs to know your laptop's IP and LoopIn's port. The agent calls the HTTP API directly:
# Check for new captures
curl http://YOUR_LAPTOP_IP:3456/captures
# Get the latest capture
curl http://YOUR_LAPTOP_IP:3456/captures/latest
# Get pending tasks (captures with instructions)
curl http://YOUR_LAPTOP_IP:3456/tasks/pending
# Mark a task done
curl -X POST http://YOUR_LAPTOP_IP:3456/tasks/0/done3. Webhook notifications (optional)
Want your agent to be notified instantly when you capture something? Set the OPENCLAW_WEBHOOK_URL environment variable:
OPENCLAW_WEBHOOK_URL=http://AGENT_IP:PORT/webhook node dist/server.jsLoopIn will POST to that URL every time a capture comes in — so your agent doesn't have to poll.
4. Extension settings
If the LoopIn server is running on a different machine than Chrome (less common), open the extension settings (gear icon) and change the server URL from http://localhost:3456 to http://SERVER_IP:3456.
Real-world example: This is exactly how we use LoopIn. Scott browses on his MacBook, captures UI elements, and Rene (an OpenClaw agent running on an iMac across the room) picks them up over the local network and acts on them.
| Button | Action |
|---|---|
| ● Capture | Toggle capture mode — hover to highlight, click to capture |
| 📋 Tasks | View all captures in a session panel |
| ⚙ Settings | Server URL, connection status |
| Tool | Description |
|---|---|
get_captured_element | Get the most recent capture |
list_captures | List all captures with timestamps |
get_capture | Get a specific capture by index |
clear_captures | Clear all captures |
get_pending_tasks | Get captures that have instructions attached |
mark_task_done | Mark a task as complete |
get_console_errors | Get captured console errors from the page |
| Endpoint | Method | Description |
|---|---|---|
/health | GET | Server status check |
/stats | GET | Capture count and server info |
/captures | GET | List all captures |
/captures/latest | GET | Most recent capture |
/capture/element | POST | Submit a capture (used by extension) |
/tasks/pending | GET | Captures with instructions |
/tasks/:index/done | POST | Mark task complete |
Every element capture includes:
| Variable | Default | Description |
|---|---|---|
BROWSER_BRIDGE_PORT | 3456 | Port for the HTTP server |
OPENCLAW_WEBHOOK_URL | — | URL to POST capture notifications to |
All data stays local. LoopIn runs entirely on your machine — no cloud services, no telemetry, no data collection. Captures exist only in memory and are cleared when the server restarts. See PRIVACY.md for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.