{"_id":"@ayush1271/nodemind","_rev":"6-3a7d3cf1c88235fa30110784491226d1","name":"@ayush1271/nodemind","dist-tags":{"latest":"1.0.7"},"versions":{"1.0.0":{"name":"@ayush1271/nodemind","version":"1.0.0","keywords":[],"author":{"name":"TT Captains","email":"ayush1271@gmail.com"},"license":"MIT","_id":"@ayush1271/nodemind@1.0.0","maintainers":[{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"}],"homepage":"https://github.com/gummybearansh/NodeMind#readme","bugs":{"url":"https://github.com/gummybearansh/NodeMind/issues"},"bin":{"nodemind":"bin/cli.js"},"dist":{"shasum":"ca0681a89000129d4ab307b13bf367dd6bb6ea7d","tarball":"https://registry.npmjs.org/@ayush1271/nodemind/-/nodemind-1.0.0.tgz","fileCount":3,"integrity":"sha512-XoINUGmjy9cPo2UJGWemPWs/X1bEZnkLX88OudVolLvOp5GTsJ9enjbJiidqdkdVJa6hsdYc6ZQzDQGLP7YcVw==","signatures":[{"sig":"MEYCIQD7SRzW2uEiZDdwZyeQD8Vl048J1uMlBLvJ78iAdhwgawIhAK76cKV+T8i8gSlqK0X6aadi4CI2B47evU4NPeF2dcX3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16746},"main":"index.js","type":"module","gitHead":"705413c21c271229088c1716984482354d7abe6f","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"},"repository":{"url":"git+https://github.com/gummybearansh/NodeMind.git","type":"git"},"_npmVersion":"11.3.0","description":"NodeMind AI dev agent CLI","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nodemind_1.0.0_1775541937238_0.22081862157434862","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ayush1271/nodemind","version":"1.0.1","keywords":[],"author":{"name":"TT Captains","email":"ayush1271@gmail.com"},"license":"MIT","_id":"@ayush1271/nodemind@1.0.1","maintainers":[{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"}],"homepage":"https://github.com/gummybearansh/NodeMind#readme","bugs":{"url":"https://github.com/gummybearansh/NodeMind/issues"},"bin":{"nodemind":"bin/cli.js"},"dist":{"shasum":"a8dece2e0623c1af746f4bf9cbdbd541554144dc","tarball":"https://registry.npmjs.org/@ayush1271/nodemind/-/nodemind-1.0.1.tgz","fileCount":3,"integrity":"sha512-80Gs0BIyEPmJDJIKoj/bndDxm8Kr/GVrBA1FMzjom50N5vSaIg0syyZnB9dHbCrzLQYWsernejxs2QNGX/P3MA==","signatures":[{"sig":"MEYCIQD+2CwCiMReD7baQNI2KMUwORT2KNy4En7aLy10bSQNZAIhAPQyXAQyFPG7WqjrX2LEazybh5ibHOjDYGpfRWZEiTNM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16746},"main":"index.js","type":"module","gitHead":"705413c21c271229088c1716984482354d7abe6f","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"},"repository":{"url":"git+https://github.com/gummybearansh/NodeMind.git","type":"git"},"_npmVersion":"11.3.0","description":"NodeMind AI dev agent CLI","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nodemind_1.0.1_1775542212765_0.6303766946195384","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@ayush1271/nodemind","version":"1.0.3","keywords":[],"author":{"name":"TT Captains","email":"ayush1271@gmail.com"},"license":"MIT","_id":"@ayush1271/nodemind@1.0.3","maintainers":[{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"}],"homepage":"https://github.com/gummybearansh/NodeMind#readme","bugs":{"url":"https://github.com/gummybearansh/NodeMind/issues"},"bin":{"nodemind":"bin/cli.js"},"dist":{"shasum":"25a340bd64244cfd5f42250764a7d686d829d5e0","tarball":"https://registry.npmjs.org/@ayush1271/nodemind/-/nodemind-1.0.3.tgz","fileCount":24,"integrity":"sha512-EnT9Dr+SwArPDZAsZl3HmRB2mTsUsMbQYVO/W9r037Tp8+f5xcojrwlZxgPpOEFyYrTnwEU8GUa8Wixr9PctGg==","signatures":[{"sig":"MEQCIAFKSthkYjX+SZ0ieYLLZje/omhQrputu93lZ9HlC6G3AiBSlFP4lO+DaanyuPlFy+qqCAaEOjuNWir/gBF/dbGWTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53262},"main":"index.js","type":"module","gitHead":"705413c21c271229088c1716984482354d7abe6f","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"},"repository":{"url":"git+https://github.com/gummybearansh/NodeMind.git","type":"git"},"_npmVersion":"11.3.0","description":"NodeMind AI dev agent CLI","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nodemind_1.0.3_1775546438577_0.11107523420599175","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@ayush1271/nodemind","version":"1.0.5","keywords":[],"author":{"name":"TT Captains","email":"ayush1271@gmail.com"},"license":"MIT","_id":"@ayush1271/nodemind@1.0.5","maintainers":[{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"}],"homepage":"https://github.com/gummybearansh/NodeMind#readme","bugs":{"url":"https://github.com/gummybearansh/NodeMind/issues"},"bin":{"nodemind":"bin/cli.js"},"dist":{"shasum":"897d6ca0d142327d10f371e9d2671a0f375d0a7e","tarball":"https://registry.npmjs.org/@ayush1271/nodemind/-/nodemind-1.0.5.tgz","fileCount":24,"integrity":"sha512-0CQohPFw8bFhAnA0VvZIv0vTiN6egjQ03K4erDgcgDxd9LffT5yaq2RYztwuJxnHIDFp/UFFf7a0XWM7suqKUA==","signatures":[{"sig":"MEQCIArGvbZ7+up0a08zdP5CMMTtm+6QFxjpQWJtcechPexXAiAds9UkG1DsnEF7DhiilQr7WL2sJ25teRiSvBD1h+OUwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51510},"main":"index.js","type":"module","gitHead":"183ca7e34828fa27dbb91a8a9e9df7412e050693","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"},"repository":{"url":"git+https://github.com/gummybearansh/NodeMind.git","type":"git"},"_npmVersion":"11.3.0","description":"NodeMind AI dev agent CLI","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nodemind_1.0.5_1775547530694_0.12144956769761661","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@ayush1271/nodemind","version":"1.0.6","keywords":[],"author":{"name":"TT Captains","email":"ayush1271@gmail.com"},"license":"MIT","_id":"@ayush1271/nodemind@1.0.6","maintainers":[{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"}],"homepage":"https://github.com/gummybearansh/NodeMind#readme","bugs":{"url":"https://github.com/gummybearansh/NodeMind/issues"},"bin":{"nodemind":"bin/cli.js"},"dist":{"shasum":"26496f27459d91594e867996763aefe8d4e1eab4","tarball":"https://registry.npmjs.org/@ayush1271/nodemind/-/nodemind-1.0.6.tgz","fileCount":40,"integrity":"sha512-xaC4ODxym7fhD/Z3xd8ohh3T9bdqJ4OmwxwDb3fdcsxLweZtfII1Ekkcun5LkwXusCw/AODpV4Tn71EZDQtQaw==","signatures":[{"sig":"MEUCIQCyDdhQYggb5yhkoZeJ+P8Uho9WDE9qhc4hMMULdVVeYwIgeG5wMPYvCBpe4EMyC0yY9Zd0/p8Wul1In5P6TR+SzXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88080},"main":"index.js","type":"module","gitHead":"183ca7e34828fa27dbb91a8a9e9df7412e050693","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"},"repository":{"url":"git+https://github.com/gummybearansh/NodeMind.git","type":"git"},"_npmVersion":"11.3.0","description":"NodeMind AI dev agent CLI","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nodemind_1.0.6_1775548781230_0.12401122722062885","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@ayush1271/nodemind","version":"1.0.7","description":"NodeMind AI dev agent CLI","bin":{"nodemind":"bin/cli.js"},"type":"module","license":"MIT","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/gummybearansh/NodeMind.git"},"keywords":[],"author":{"name":"TT Captains","email":"ayush1271@gmail.com"},"bugs":{"url":"https://github.com/gummybearansh/NodeMind/issues"},"homepage":"https://github.com/gummybearansh/NodeMind#readme","_id":"@ayush1271/nodemind@1.0.7","gitHead":"183ca7e34828fa27dbb91a8a9e9df7412e050693","_nodeVersion":"24.1.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-Fbi3czM8mIr5/G2eqm4iabA2r/fNoJeX/AOY7MMSksjaVc2gQtaSHeEYSXcbGYx/EeqhRM1TBEfImiVWl1ymiw==","shasum":"222ecd4aea3c4144e0666ee587082bb73c42b159","tarball":"https://registry.npmjs.org/@ayush1271/nodemind/-/nodemind-1.0.7.tgz","fileCount":40,"unpackedSize":90087,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCpbFDrDbqPuylED8mk5unnTYUhzG5pqaFnVmuUgE4J2QIgQRkv70/alHEwzW8oUTkgrrwZ1X5YATYg3UDkTwp/tLI="}]},"_npmUser":{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"},"directories":{},"maintainers":[{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nodemind_1.0.7_1775551758442_0.21448101029370115"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-07T06:05:37.119Z","modified":"2026-04-07T08:49:18.705Z","1.0.0":"2026-04-07T06:05:37.399Z","1.0.1":"2026-04-07T06:10:12.906Z","1.0.3":"2026-04-07T07:20:38.761Z","1.0.5":"2026-04-07T07:38:50.829Z","1.0.6":"2026-04-07T07:59:41.385Z","1.0.7":"2026-04-07T08:49:18.597Z"},"bugs":{"url":"https://github.com/gummybearansh/NodeMind/issues"},"author":{"name":"TT Captains","email":"ayush1271@gmail.com"},"license":"MIT","homepage":"https://github.com/gummybearansh/NodeMind#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/gummybearansh/NodeMind.git"},"description":"NodeMind AI dev agent CLI","maintainers":[{"name":"ayush1271","email":"ayush.23mip10135@vitbhopal.ac.in"}],"readme":"# NodeMind\r\n\r\n> **Graph Memory for Multi-Agent AI Systems.**\r\n> Replace the linear context window with a persistent, semantic knowledge graph — shared across every agent in your swarm.\r\n\r\n---\r\n\r\n## The Problem with Multi-Agent Memory\r\n\r\nEvery major multi-agent framework — LangChain, AutoGen, CrewAI — hits the same wall.\r\n\r\nWhen you spin up a swarm of agents, each one operates inside its own **isolated, linear context window**. The Project Manager writes a spec. The Frontend Engineer writes components. The Backend Engineer writes APIs. But none of them have any real awareness of what the others are doing — unless you staple every previous message into the next prompt.\r\n\r\nThis creates two compounding problems:\r\n\r\n**1. The Black Box Problem**\r\nYour Backend Engineer is writing an API schema without knowing what data structures the Frontend Engineer needs. Your QA Tester is writing test cases without knowing what edge cases the Backend already handled. Each agent is working in a **black box**, guessing at context it can't see.\r\n\r\n**2. The Token Explosion Problem**\r\nThe standard fix is to inject prior agent outputs as context into every subsequent call. Works for 2 agents. At 5 agents across 10 rounds, you're sending **every prior conversation** in every prompt. Token costs scale quadratically. At some point, you hit the context limit and the system breaks entirely.\r\n\r\n---\r\n\r\n## NodeMind's Solution: Graph Memory\r\n\r\nNodeMind replaces the flat, repeating context dump with a **persistent knowledge graph**.\r\n\r\nEach agent writes **atomic Markdown notes** as it works — small, focused files that capture a single decision, design choice, or architectural insight. These notes are stored locally in `.brain/`, embedded into a vector database (ChromaDB), indexed in MongoDB, and immediately visible to every other agent in the swarm via **semantic search**.\r\n\r\nWhen a new agent starts work, instead of receiving a massive dump of prior conversation history, it receives only the **most semantically relevant notes** from the graph — retrieved via vector similarity, not recency. The Frontend Engineer gets context about the API contract the Backend defined. The QA Tester finds the edge case the PM flagged. Each agent navigates the graph, not a transcript.\r\n\r\nThe result:\r\n- **Token usage stays bounded.** The graph grows, but each agent query only loads the relevant slice.\r\n- **Context improves over time.** As more notes accumulate, the semantic search gets more precise, not noisier.\r\n- **Agents are no longer black boxes.** Every decision is a node in the graph, visible to everyone.\r\n\r\n---\r\n\r\n## Architecture\r\n\r\n```\r\n┌─────────────────────────────────────────────────────────────────┐\r\n│                         NodeMind Stack                           │\r\n├─────────────────────────────────────────────────────────────────┤\r\n│                                                                   │\r\n│   ┌─────────────┐    ┌──────────────┐    ┌──────────────────┐   │\r\n│   │   Browser   │    │  FastAPI     │    │  Agent Swarm     │   │\r\n│   │  React Flow │◄───│  WebSocket   │◄───│  (Gemini 2.5)    │   │\r\n│   │  Visualizer │    │  :8000       │    │  4 Agents        │   │\r\n│   └─────────────┘    └──────────────┘    └──────────────────┘   │\r\n│          │                  │                      │             │\r\n│          │            ┌─────▼──────┐         ┌────▼────────┐    │\r\n│          │            │  MongoDB   │         │  .brain/    │    │\r\n│          │            │  (Nodes +  │         │  session_*/ │    │\r\n│          │            │   Edges)   │         │  *.md files │    │\r\n│          │            └─────┬──────┘         └────┬────────┘    │\r\n│          │                  │                      │             │\r\n│          │            ┌─────▼──────────────────────▼────────┐   │\r\n│          └────────────│         ChromaDB (Vector Store)      │   │\r\n│                       │     Semantic Similarity Engine        │   │\r\n│                       └──────────────────────────────────────┘   │\r\n└─────────────────────────────────────────────────────────────────┘\r\n```\r\n\r\n### Agent Swarm Pipeline\r\n\r\n```\r\nUser Prompt\r\n    │\r\n    ▼\r\n┌─────────────────┐\r\n│ Project Manager │  → Breaks prompt into 3-4 scoped architecture notes\r\n└────────┬────────┘\r\n         │ (semantic context passed forward)\r\n    ▼\r\n┌─────────────────────┐\r\n│ Frontend Engineer   │  → Writes 3-4 UI/UX component notes\r\n└────────┬────────────┘\r\n         │ (semantic context from PM + prior nodes)\r\n    ▼\r\n┌─────────────────────┐\r\n│ Backend Engineer    │  → Writes 3-4 API/DB/infra notes\r\n└────────┬────────────┘\r\n         │ (semantic context from all prior nodes)\r\n    ▼\r\n┌────────────────┐\r\n│ QA Tester      │  → Writes 3-4 test case / edge case notes\r\n└────────┬───────┘\r\n         │\r\n    ▼\r\n[ Semantic Pass ]  → ChromaDB indexes all ~12-16 nodes\r\n                     Cross-owner edges computed (max 3 per node)\r\n                     Animated edges broadcast to React Flow canvas\r\n```\r\n\r\n---\r\n\r\n## Features\r\n\r\n### 🧠 Graph Memory\r\n- Every agent output is atomized into individual Markdown notes stored in `.brain/session_*/`\r\n- Notes are embedded into ChromaDB as dense vector representations\r\n- All nodes and edges persisted in MongoDB\r\n- Each session gets an isolated timestamped directory — no cross-session contamination\r\n\r\n### 🔗 Semantic Neural Linking\r\n- After all nodes are created, a **post-swarm semantic pass** runs across every node in the session\r\n- ChromaDB finds the top semantic matches for each node across **all agents** (not just its own category)\r\n- Edges are built **exclusively between different agent owners** — enforcing cross-discipline semantic connections\r\n- Maximum 3 edges per node to keep the graph sparse and meaningful, not cluttered\r\n\r\n### 📊 Real-Time React Flow Visualizer\r\n- **4 strict swimlane columns**, one per agent owner (PM / Frontend / Backend / QA)\r\n- Nodes appear in their owner column as agents generate them — no layout engine, no physics\r\n- Semantic edges animate in **after all nodes are placed**, so you see: grid first → connections second\r\n- `fitView` auto-zooms to fit every new node added\r\n- Click any node to open a **Markdown Drawer** with the full note content\r\n\r\n### 🖥️ Hacker Terminal Feed\r\n- macOS-style terminal UI in the top-right corner\r\n- Color-coded log lines: `+` green for node creation, `~` cyan for semantic linking, `✗` red for errors\r\n- Live status pill tracks each pipeline phase: `⚡ Initiating` → `🧠 PM thinking` → `🕸️ Semantic search` → `🔗 Linking` → `✅ Done`\r\n- Auto-scrolls to the latest log in real time\r\n\r\n### 📡 WebSocket Real-Time Pipeline\r\n- FastAPI backend streams events to the frontend via WebSocket\r\n- Two distinct event types:\r\n  - `addNode` — fired immediately when a node is written, places it in the correct column\r\n  - `semanticLink` — fired once after the full swarm completes, wires the cross-owner edges\r\n- `log` events stream status and progress messages to the terminal feed\r\n\r\n### 🗂️ Session Isolation\r\n- Each user prompt creates a new timestamped `.brain/session_YYYYMMDD_HHMMSS/` directory\r\n- Frontend canvas clears on every new prompt submission\r\n- Canvas column counters reset so nodes always stack cleanly from the top\r\n\r\n### 📐 Atomic Note Structure\r\nEach agent note follows a consistent Frontmatter + Markdown schema:\r\n\r\n```markdown\r\n---\r\nowner: Frontend Engineer\r\n---\r\n# Component: Mapbox Live Tracking Layer\r\n\r\nThe primary map view renders driver positions in real time using Mapbox GL JS...\r\n[[Backend_WebSocket_Server]]\r\n```\r\n\r\nOwner metadata drives column placement. `[[Wiki-links]]` allow explicit cross-references (filtered to cross-owner only).\r\n\r\n---\r\n\r\n## Tech Stack\r\n\r\n| Layer | Technology |\r\n|---|---|\r\n| Agent LLM | Google Gemini 2.5 Flash (Structured JSON Outputs) |\r\n| Backend API | FastAPI + Uvicorn |\r\n| WebSockets | FastAPI WebSocket + custom broadcast manager |\r\n| Vector DB | ChromaDB (local persistent) |\r\n| Document DB | MongoDB (via Motor async driver) |\r\n| Frontend | Next.js 14 (App Router) |\r\n| Graph UI | React Flow (`@xyflow/react`) |\r\n| Terminal UI | Custom hacker-theme panel (no library) |\r\n| File Watching | Watchdog |\r\n| CLI | Click + Rich + Textual (TUI) |\r\n\r\n---\r\n\r\n## Local Setup\r\n\r\n### Prerequisites\r\n\r\n- Python 3.11+\r\n- Node.js 18+\r\n- MongoDB running locally (`mongod`) or a MongoDB Atlas URI\r\n- A Google Gemini API key\r\n\r\n### 1. Clone the repository\r\n\r\n```bash\r\ngit clone https://github.com/your-username/NodeMind.git\r\ncd NodeMind\r\n```\r\n\r\n### 2. Set up the Python backend\r\n\r\n```bash\r\npython -m venv venv\r\nsource venv/bin/activate      # Windows: venv\\Scripts\\activate\r\npip install -e .\r\n```\r\n\r\n### 3. Configure environment variables\r\n\r\n```bash\r\ncp .env.example .env\r\n```\r\n\r\nEdit `.env`:\r\n\r\n```env\r\nGEMINI_API_KEY=your_gemini_api_key_here\r\nMONGO_DB_URL=mongodb://localhost:27017\r\nCHROMA_PERSIST_DIR=./chroma_db\r\n```\r\n\r\n### 4. Start MongoDB\r\n\r\n```bash\r\nmongod --dbpath /usr/local/var/mongodb   # macOS with Homebrew\r\n# or\r\nbrew services start mongodb-community\r\n```\r\n\r\n### 5. Install the frontend\r\n\r\n```bash\r\ncd frontend\r\nnpm install\r\ncd ..\r\n```\r\n\r\n### 6. Start NodeMind\r\n\r\nIn **Terminal 1** — start the backend daemon:\r\n\r\n```bash\r\nnodemind start\r\n```\r\n\r\nIn **Terminal 2** — start the frontend:\r\n\r\n```bash\r\ncd frontend\r\nnpm run dev\r\n```\r\n\r\nOpen `http://localhost:3000` in your browser.\r\n\r\n---\r\n\r\n## Installation via pip *(coming soon)*\r\n\r\nNodeMind will be available as a pip-installable package. Once released:\r\n\r\n```bash\r\npip install nodemind\r\nnodemind start\r\n```\r\n\r\nNo clone required. The visualizer frontend will be bundled and served automatically.\r\n\r\n---\r\n\r\n## Installation via curl *(coming soon)*\r\n\r\nOne-line setup script for macOS/Linux:\r\n\r\n```bash\r\ncurl -sSL https://nodemind.dev/install.sh | bash\r\n```\r\n\r\nThis will:\r\n1. Check Python and Node.js requirements\r\n2. Install the `nodemind` CLI globally\r\n3. Walk you through `.env` configuration\r\n4. Launch the daemon and open the visualizer\r\n\r\n---\r\n\r\n## Usage\r\n\r\n### Running a prompt\r\n\r\nType any software architecture task into the input field and hit **Run Swarm**:\r\n\r\n```\r\nBuild a real-time collaborative whiteboard application.\r\nDesign a secure authentication system for a microservices architecture.\r\nCreate a product catalog management system for an e-commerce platform.\r\nArchitect a local AI-powered email summarization desktop app.\r\n```\r\n\r\nThe swarm will:\r\n1. **Project Manager** breaks the problem into 3-4 architectural scope notes\r\n2. **Frontend Engineer** writes 3-4 UI/UX component notes\r\n3. **Backend Engineer** writes 3-4 API, database, and infra notes\r\n4. **QA Tester** writes 3-4 edge case and test strategy notes\r\n5. **Semantic pass** runs ChromaDB across all ~12-16 nodes and wires cross-agent edges\r\n\r\n### Viewing notes\r\n\r\nClick any node on the canvas to open a Markdown Drawer showing the full note content.\r\n\r\n### Session files\r\n\r\nAll notes are saved locally in `.brain/session_YYYYMMDD_HHMMSS/` as plain Markdown files — readable, editable, and version-controllable.\r\n\r\n---\r\n\r\n## Why This Matters for AI Agent Scaling\r\n\r\nAs you add more agents to a swarm, the standard approach of passing conversation history breaks down. The graph memory approach scales differently:\r\n\r\n| Agents | Standard Token Cost | NodeMind Token Cost |\r\n|--------|--------------------|--------------------|\r\n| 2      | O(n)               | O(k) where k = relevant neighbors |\r\n| 5      | O(n²)              | O(k) |\r\n| 10     | Context limit hit  | O(k) |\r\n| 50     | Impossible         | O(k) |\r\n\r\n`k` is bounded by the semantic search result count (e.g. k=3 per query), regardless of how many total nodes exist in the graph. The graph grows; the per-agent query cost stays fixed.\r\n\r\n---\r\n\r\n## Project Structure\r\n\r\n```\r\nNodeMind_Backend/\r\n├── backend/\r\n│   ├── api/\r\n│   │   ├── server.py          # FastAPI routes + WebSocket endpoint\r\n│   │   └── websockets.py      # WebSocket broadcast manager\r\n│   ├── core/\r\n│   │   ├── config.py          # Pydantic settings / .env loading\r\n│   │   └── queue.py           # TUI log queue\r\n│   ├── db/\r\n│   │   ├── chroma_manager.py  # ChromaDB vector operations\r\n│   │   └── mongo_manager.py   # MongoDB async collections\r\n│   ├── execution/\r\n│   │   ├── agent_simulator.py # Swarm orchestration + session management\r\n│   │   └── agents.py          # System prompts for each agent role\r\n│   ├── observer/\r\n│   │   ├── translator.py      # File → MongoDB + ChromaDB + WebSocket\r\n│   │   └── watcher.py         # Watchdog filesystem observer\r\n│   └── tui/\r\n│       └── app.py             # Textual TUI dashboard\r\n├── frontend/\r\n│   └── src/app/\r\n│       ├── page.js            # React Flow visualizer (swimlane layout)\r\n│       ├── globals.css        # Dark mode + glow animations\r\n│       └── components/\r\n│           ├── CustomNode.js  # Owner-colored graph node card\r\n│           └── MarkdownDrawer.js  # Slide-in note viewer\r\n├── .brain/                    # Session note directories (gitignored)\r\n├── chroma_db/                 # ChromaDB vector store (gitignored)\r\n├── .env                       # Secrets (gitignored)\r\n├── .gitignore\r\n├── setup.py\r\n└── README.md\r\n```\r\n\r\n---\r\n\r\n## Roadmap\r\n\r\n- [ ] **pip install / curl installer** — one-command setup\r\n- [ ] **Node click → edit** — edit notes directly from the visualizer\r\n- [ ] **Session history sidebar** — reload and browse past sessions\r\n- [ ] **Exponential backoff** — graceful Gemini rate limit handling\r\n- [ ] **Custom agent roles** — define your own agent archetypes via config\r\n- [ ] **Export** — export the session graph as a PNG, JSON, or Obsidian vault\r\n- [ ] **Multi-model support** — swap Gemini for Claude, GPT-4o, or local Ollama models\r\n- [ ] **Electron wrapper** — ship as a desktop app with bundled MongoDB + ChromaDB\r\n\r\n---\r\n\r\n## Contributing\r\n\r\nContributions are welcome. Open an issue to discuss major changes before submitting a PR.\r\n\r\n1. Fork the repo\r\n2. Create a feature branch (`git checkout -b feature/my-feature`)\r\n3. Commit your changes (`git commit -m 'feat: add my feature'`)\r\n4. Push and open a Pull Request\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT © NodeMind Contributors\r\n","readmeFilename":"README.md"}