BirdEye

BirdEye

A local-first mission control for AI agent harnesses, providing a unified MCP gateway for shared memory, task queue, and encrypted secrets across multiple agents.

Category
Visit Server

README

<div align="center">

πŸ¦… BirdEye

One hub, every bird. Local-first mission control for all your AI agent harnesses β€” Claude Code, Claude Desktop, Codex, opencode, OpenClaw, Zcode, Gemini CLI, Cursor, Continue.

MIT License Node β‰₯ 23.6 No build step PRs welcome

<img src="docs/screenshots/memory-graph.png" alt="BirdEye memory graph" width="900" />

</div>


The problem

If you use more than one AI agent harness, you know this pain:

  1. Every harness is an island. Each has its own sessions, memories, MCP servers, plugins, skills, and routines. Nothing is shared.
  2. Memory doesn't travel. What Claude Code learned about you yesterday, Codex re-asks today. Import tools β€” where they exist β€” are per-harness and incompatible.
  3. Credentials multiply. Giving agents access to GitHub means configuring auth in every single harness. N harnesses = N copies of every token.
  4. Zero visibility. Which harness can touch what? How many tokens has each burned? Nobody can tell you.
  5. No shared work. You can't assign a task from one place and have different harnesses pick it up.

What BirdEye does

BirdEye is a daemon on 127.0.0.1 + an interactive dashboard + one MCP gateway that every harness joins. Free, MIT, no cloud, no telemetry β€” your data never leaves your machine.

Pillar What you get
πŸ—ΊοΈ Unified inventory Read-only adapters scan all 9 harnesses' on-disk state into one normalized model: sessions, memories, skills, plugins, MCP servers, agents, credential key names, usage.
🧠 Collective memory Every harness's native memory imported, deduped, and rendered as an interactive memory graph. Two-way: birdeye memory sync-back writes a shared memory pack into each harness's context file (CLAUDE.md, GEMINI.md, AGENTS.md…) inside safe marker blocks.
πŸ” MCP gateway + vault One MCP server every harness registers with a single line. Any agent in any harness gets memory_search / memory_save, a shared task queue, and vault_get β€” secrets stored once, AES-256-GCM encrypted.
🎯 Missions A shared task board. Write a briefing once, dispatch to any harness with a headless CLI (claude -p, codex exec, opencode run, gemini -p) and watch output stream live.

<div align="center"> <img src="docs/screenshots/aviary.png" alt="Aviary β€” fleet overview" width="900" /> </div>

Quick start

Requires Node β‰₯ 23.6 (BirdEye runs TypeScript natively β€” no build step for the daemon).

git clone https://github.com/zanni098/BirdEye.git
cd BirdEye
npm install
npm run build          # builds the dashboard (one-time, ~1s)

npm run demo           # β†’ http://127.0.0.1:4477 with rich demo data
# or scan YOUR machine:
npm run up

Then wire your harnesses into the hub:

node packages/cli/bin/birdeye.ts scan                    # inventory every harness
node packages/cli/bin/birdeye.ts register claude-code    # add the BirdEye MCP gateway (with backup)
node packages/cli/bin/birdeye.ts register codex          # ...same one-liner for each harness
node packages/cli/bin/birdeye.ts vault set GITHUB_TOKEN ghp_yourtoken
node packages/cli/bin/birdeye.ts memory sync-back        # push shared memory into every context file

The dashboard

Seven views, live over WebSocket:

  • Aviary β€” fleet overview: one card per harness with health, counts, warnings, dispatch capability.
  • Memory Graph β€” the shared brain, drawn: memories colored by source harness, tags, auto-extracted entities, [[links]]. Drag, zoom, filter, click any node for full detail.
  • Missions β€” task board with live dispatch streaming.
  • Sessions β€” cross-harness session timeline with filters.
  • Arsenal β€” skills / plugins / MCP matrix: see instantly that github MCP is configured 4 separate times.
  • Access β€” which harness holds which credential keys (names only), with duplication flagged β€” plus the encrypted vault.
  • Usage β€” tokens and cost per harness. Honest: harnesses that don't log usage show unknown, never invented numbers.

<div align="center"> <img src="docs/screenshots/missions.png" alt="Missions β€” dispatch board" width="440" /> <img src="docs/screenshots/access.png" alt="Access β€” credential matrix and vault" width="440" /> </div>

Harness support

Harness Sessions Memories Skills Plugins MCP Usage Dispatch
Claude Code βœ… βœ… βœ… βœ… βœ… βœ… ⚑ claude -p
Claude Desktop ◐ β€” β€” βœ… βœ… β€” manual
Codex βœ… βœ… β€” β€” βœ… βœ… ⚑ codex exec
opencode βœ… βœ… βœ… βœ… βœ… ◐ ⚑ opencode run
OpenClaw βœ… βœ… βœ… βœ… ◐ β€” manual
Zcode ◐ ◐ βœ… βœ… β€” β€” manual
Gemini CLI βœ… βœ… β€” β€” βœ… ◐ ⚑ gemini -p
Cursor β€” βœ… β€” βœ… βœ… β€” manual
Continue βœ… βœ… β€” β€” βœ… ◐ manual

βœ… full Β· ◐ best-effort Β· β€” the harness doesn't expose it on disk

The MCP gateway

birdeye register <harness> adds one entry to that harness's MCP config (original backed up first). After that, any agent in any harness can call:

Tool Does
memory_search {query} search the unified, deduped memory of all harnesses
memory_save {title, body, tags?} save a memory every other harness can recall
task_list / task_claim / task_update the shared work queue
vault_get {key} fetch a secret stored once in the encrypted vault

Security model

  • The daemon binds 127.0.0.1 only. No telemetry, no outbound calls.
  • Adapters are read-only; scanning never touches your harness files.
  • Credential values are never read from harness configs β€” key names only. The dashboard never displays secret values; vault_get flows only over local stdio MCP.
  • Vault: AES-256-GCM, scrypt-derived key (BIRDEYE_VAULT_PASSPHRASE, or a machine-derived default).
  • The only writers β€” register, sync-env, memory sync-back β€” are explicit commands that create timestamped backups and, for context files, only ever touch the <!-- BIRDEYE:START/END --> block.

How it runs

TypeScript monorepo, zero native dependencies, no compile step for the daemon (Node's native type-stripping). Vite builds the dashboard once.

packages/core      types Β· JSON store Β· dedup Β· memory graph Β· marker sync Β· vault
packages/adapters  9 harness scanners + registry (failure-isolated)
packages/server    Hono daemon: REST + WebSocket + dispatcher + demo mode
packages/mcp       the MCP gateway (stdio) + per-harness registration snippets
packages/cli       birdeye up Β· scan Β· register Β· vault Β· sync-env Β· memory Β· dispatch
apps/dashboard     React + d3-force dashboard

npm test β€” 62 tests across every package, fixture-driven.

Honest limits (v1)

  • Usage stats depend on what each harness logs locally β€” rich for Claude Code/Codex, honest unknown elsewhere.
  • Cursor/Continue chat data lives in app-internal storage; those adapters are shallower.
  • Dispatch needs the harness CLI on your PATH.
  • Cross-harness collaboration is via shared memory + shared task queue; automatic result-chaining between harnesses is on the roadmap.

Roadmap

  • [ ] Result-chaining: harness A's output feeds harness B's next task
  • [ ] Embedding-based memory similarity edges (currently: links, tags, entities)
  • [ ] More adapters β€” Aider, Windsurf, Cline… (add one β€” it's ~100 lines)
  • [ ] npx birdeye as a published npm package

Contributing

Adapters are the sweet spot β€” one focused file + a fixture + a test. See CONTRIBUTING.md.

MIT Β© BirdEye contributors

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured