Skip to content

plumpslabs/fennec

Repository files navigation

🦊 Fennec

Fennec 🦊

Ears everywhere in your stack.
AI-native developer observability MCP — browser, terminal, and process, all in one.

License: MIT npm version Node.js TypeScript pnpm PRs Welcome Cross-browser


What is Fennec?

Fennec is an MCP (Model Context Protocol) server that bridges the gap between AI agents and your development environment. Instead of you copy-pasting errors between terminal, browser, and AI, Fennec gives your AI agent direct access to all three simultaneously.

The Problem It Solves

When a developer asks an AI agent "why is my login broken?", the agent is essentially blind:

What agent sees:          What developer sees:
─────────────────         ──────────────────────────────────
"I can't access           Browser Console:
 your terminal"             ✗ TypeError: jwt.sign is undefined

"Please paste the         Terminal:
 error message"             ✗ Error: JWT_SECRET not set in env

"I don't have            Network Tab:
 browser access"            ✗ POST /api/login -> 500

The developer ends up being a copy-paste bridge between their tools and the AI. Fennec eliminates this bottleneck.

With Fennec

Bug appears
    → AI checks browser console + network + server log simultaneously
    → AI correlates: "Server missing JWT_SECRET, set it in .env"
    → Fix. Done.

Key Features

🌐 Full Cross-Browser Support

Fennec supports Chromium, Firefox, and WebKit — not just Chromium like many tools. Configure via:

{ "browser": { "type": "firefox" | "webkit" | "chromium" } }

Or environment variable: FENNEC_BROWSER_TYPE=firefox

🏆 Full-Stack Correlation (Proven)

Fennec's signature feature correlates browser errors with server logs to identify root causes automatically. The correlation engine has been tested with 7 integration scenarios covering real-world patterns:

Pattern Example Confidence
Server 500 + stderr Error POST /api/login → 500 + DB timeout 0.90
Auth token issue 401 + JWT verification failed 0.92
Missing file/env ENOENT + .env not found 0.88
Network failure + TypeError request failed + JS TypeError 0.85

The confidence scores above are derived from actual inference rules with unit-tested pattern matching, not fabricated illustrations.

🔧 123 MCP Tools Across 16 Categories

Category Tools What You Can Do
Navigation 6 Navigate, go back/forward, reload, wait for navigation
Interaction 10 Click, type, select, hover, scroll, upload file, drag-drop
DOM 9 Screenshot, DOM snapshot, accessibility tree, find elements
DevTools Console 5 Console logs, JS errors, watch console
DevTools Network 9 Network monitoring, intercept, mock, wait for request
DevTools Performance 6 Performance metrics, memory, profiling, simulate network
Storage 12 localStorage, cookies, IndexedDB, session export/import
Auth 6 Auto-fill login, save/load sessions, check auth state
Tabs 7 Multi-tab, multi-context, tab switching
Process 10 Spawn, monitor, attach by PID/port, kill, restart
Terminal 7 Watch files/pipes, filter logs by level/keyword
Diagnostic 6 diagnose_page, diagnose_fullstack, diagnose_auth, etc.
Scheduler 7 Auto-trigger workflows, manage rules, view history
Smart 7 Smart wait, smart fill form, annotated screenshots, diff
Planner 5 Execute multi-step goals, plan preview, plan management
Mobile (NEW) 11 List devices, tap, type, swipe, logcat, screenshot, install APK, launch/stop apps via ADB

💡 Token-Efficient: Tools are categorized into 16 groups (including Mobile). MCP clients can request only specific categories to reduce context window usage. Use the _categories field in ListTools response to discover available categories.

🔐 Auth Session Persistence

Save and load browser auth states across conversations:

# In one session
AI: auth_fill_login_form("admin@example.com", "password", submitAfter: true)
AI: auth_save_session("myapp-prod")

# In another conversation  
AI: auth_load_session("myapp-prod")  # skip login entirely!

🖥️ Process & Terminal Monitoring

Three ways to connect:

# 1. Pipe output (recommended)
npm run dev 2>&1 | fennec pipe --name "dev-server"

# 2. Attach by PID
fennec attach-pid 12345

# 3. Attach by port
fennec attach-port 3000

🔍 Self-Observability

Fennec monitors its own performance — track tool call durations, memory usage, error rates. Use the PerformanceMetrics API to check Fennec's health:

Total tool calls: 1,234 | Avg duration: 45ms | Error rate: 2.3% | Memory: 128MB

🛡️ Security Model

  • Sandbox mode ON by default — blocks dangerous operations
  • Permission per tool — process spawn, kill, JS evaluation independently configurable
  • Domain allowlist/blocklist — restrict browser navigation
  • Spawn allowlist — only allow specific commands (npm, node, etc.)
  • Audit log — every tool call is logged with timestamp, session, and result
  • See Security Model for details

Quick Start

Installation

# Install globally
npm install -g @plumpslabs/fennec-cli

# (Optional) Install browser engines — only needed for browser automation
fennec install-browsers

# Generate config (optional)
fennec init

Note: Playwright (browser automation) is an optional peer dependency. If you only need terminal/process monitoring, Fennec works without it. Add browser support when needed:

npm install playwright
fennec install-browsers

Configure Your MCP Client

Add to your MCP client config:

{
  "mcpServers": {
    "fennec": {
      "command": "fennec",
      "args": ["start"]
    }
  }
}

Supported clients: Claude Desktop, Claude Code, Cline, Cursor, Windsurf, Continue.dev

Your First Diagnosis

# Terminal: Start your app with Fennec watching
npm run dev 2>&1 | fennec pipe --name "my-app"

Then ask your AI agent:

"Check why my app is broken"

The AI will automatically:

  1. Open the browser to your app
  2. Check console errors
  3. Inspect failed network requests
  4. Correlate with server logs
  5. Report the root cause

Documentation

Installation Requirements

Requirement Version
Node.js >= 20.0.0
npm / pnpm / yarn Latest stable
OS macOS, Linux, Windows (native + WSL2)
Browser Chromium (auto-installed), Firefox/WebKit (optional)

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

License

MIT — see LICENSE for details.


Fennec — Ears everywhere in your stack.
Built with ❤️ for AI-native development

About

AI-native developer observability MCP (Model Context Protocol) server that gives AI agents full-stack visibility into your development environment — browser, terminal, and processes — all in one unified interface.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors