Skip to content

feat: integrate og-memory-graph plugin (Outline Graph memory graph)#411

Open
chenbys4 wants to merge 1 commit into
OpenBMB:mainfrom
chenbys4:feat/og-memory-graph
Open

feat: integrate og-memory-graph plugin (Outline Graph memory graph)#411
chenbys4 wants to merge 1 commit into
OpenBMB:mainfrom
chenbys4:feat/og-memory-graph

Conversation

@chenbys4

Copy link
Copy Markdown

Summary

This PR integrates og-memory-graph — an Outline Graph (OG) memory-graph service — into PilotDeck as a self-contained, pluggable add-on. It turns a workspace's memory (.md files under Project/ and Feedback/) into a knowledge graph and a polished report, viewable from a new top-bar tab.

What's included

1. og-memory-graph/ (new subdirectory — self-contained service)

A standalone Python FastAPI service + PilotDeck plugin package. Independent of the PilotDeck main process.

  • og/ — Framework A: 19 LLM agents, OutlineGraph data structure (9 node types / 14 edge types), pipeline (build → curate → balanced → polish), storage (GraphStore + ChromaDB/BM25 vector store)
  • server/ — FastAPI: embed page + REST API (/api/pd/*, graph/report endpoints)
  • frontend/ — React embed page (rendered in an iframe)
  • plugins/og-memory-graph/ — PilotDeck plugin package:
    • manifest.json — PilotDeck plugin manifest (slot: tab)
    • server.js — Node process spawned by PilotDeck; manages og6 lifecycle (healthcheck-first, spawns uvicorn only if not running) and exposes /config
    • index.js — front-end bundle; mount() fetches /config via rpc and renders an iframe to the og6 embed page
  • README.md, .env.template, pyproject.toml, .gitignore

2. ui/src/components/app-shell/MainAreaV2.tsx (the only PilotDeck source change)

Surface enabled plugin tabs in the V2 top bar. Currently plugin tabs (plugin:<name>) are not shown in the static TABS list. This appends enabled plugins as top-bar tabs — a generic plugin capability, not specific to og-memory-graph.

3. INTEGRATION.md

Setup instructions (install og service, deploy plugin package, run).

How it works

  • PilotDeck spawns the plugin's server.js (per the existing plugin-server protocol — Node process reporting {ready, port} on stdout).
  • server.js healthchecks the og6 FastAPI service; if not running, it spawns uvicorn. Reuses a running instance if present.
  • The plugin tab's index.js calls /config via PilotDeck's rpc proxy, then renders an iframe pointing to og6's /embed/memory-graph.
  • og6 scans the workspace memory directory, builds the Outline Graph, and serves the graph + report.
  • On startup, og6 registers a 60s poller per pd-* cluster to sync memory changes incrementally (with cross-process mutex + auto-rebuild after 5 syncs).

Setup (for reviewers)

cd og-memory-graph
pip install -e .
cp .env.template .env   # fill API keys
cd frontend && npm install && npm run build && cd ..
cp -R plugins/og-memory-graph ~/.pilotdeck/plugins/
# edit ~/.pilotdeck/plugins/og-memory-graph/config.json with local paths

Launch PilotDeck → a "og-memory-graph" tab appears → select a project → the graph/report loads.

Notes

  • The og-memory-graph/ subdirectory is fully self-contained; no other PilotDeck source files are modified.
  • No secrets committed (.env.template has placeholders only; config.json uses <placeholder> paths).
  • frontend/dist/ is gitignored — reviewers run npm run build to generate it.

Checklist

  • Only one PilotDeck source file changed (MainAreaV2.tsx)
  • Plugin is self-contained under og-memory-graph/
  • No secrets / local paths in committed code
  • INTEGRATION.md documents setup

Add og-memory-graph as a pluggable memory-graph service:
- og-memory-graph/: OG Framework A (agents/core/pipeline/storage) +
  FastAPI server + React embed page + PilotDeck plugin package
- ui/MainAreaV2.tsx: surface enabled plugin tabs in the top bar
  (generic plugin capability, not og-specific)

Plugin is self-contained under og-memory-graph/; PilotDeck source has
only one change (MainAreaV2 plugin tabs). See INTEGRATION.md for setup.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant