{"id":50053571,"url":"https://github.com/brainbot-lab/brainbot","last_synced_at":"2026-05-21T11:02:50.895Z","repository":{"id":336153869,"uuid":"1063739112","full_name":"brainbot-lab/brainbot","owner":"brainbot-lab","description":"One brain, many bodies. Distributed AI agents powered by Claude Code that share memories across a mesh network. Features networked Pong, three-tier memory system, and runs on Raspberry Pi to MacBook. ","archived":false,"fork":false,"pushed_at":"2026-02-03T02:46:49.000Z","size":3027,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-03T16:36:08.252Z","etag":null,"topics":["ai","ai-agents-automation","chatbot","claude-code-cli","distributed-systems","educational","local-ai","mesh-network","python","raspberry-pi","tinyllama"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brainbot-lab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-25T03:55:11.000Z","updated_at":"2026-02-03T02:46:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/brainbot-lab/brainbot","commit_stats":null,"previous_names":["brainbot-lab/brainbot"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/brainbot-lab/brainbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainbot-lab%2Fbrainbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainbot-lab%2Fbrainbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainbot-lab%2Fbrainbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainbot-lab%2Fbrainbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brainbot-lab","download_url":"https://codeload.github.com/brainbot-lab/brainbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainbot-lab%2Fbrainbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33298268,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T02:57:32.698Z","status":"ssl_error","status_checked_at":"2026-05-21T02:57:31.990Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents-automation","chatbot","claude-code-cli","distributed-systems","educational","local-ai","mesh-network","python","raspberry-pi","tinyllama"],"created_at":"2026-05-21T11:02:49.505Z","updated_at":"2026-05-21T11:02:50.886Z","avatar_url":"https://github.com/brainbot-lab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo/brainbot-logo-256.png\" alt=\"BrainBot Logo\" width=\"128\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eBrainBot\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.python.org/downloads/\"\u003e\u003cimg src=\"https://img.shields.io/badge/python-3.10+-blue.svg\" alt=\"Python 3.10+\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.raspberrypi.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Raspberry%20Pi-Compatible-red.svg\" alt=\"Raspberry Pi\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://claude.ai\"\u003e\u003cimg src=\"https://img.shields.io/badge/Powered%20by-Claude%20Code-blueviolet.svg\" alt=\"Powered by Claude\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eOne brain. Many bodies. Powered by Claude Code agents.\u003c/strong\u003e\u003c/p\u003e\n\n[![Watch BrainBot agents play Pong](https://img.youtube.com/vi/bliV394AMk8/maxresdefault.jpg)](https://youtu.be/bliV394AMk8?si=lvWQLMs7fNZSFcFk)\n\n\u003e *Click to watch two BrainBot agents play networked Pong across devices*\n\n---\n\n## What is BrainBot?\n\nBrainBot is a distributed AI agent system where multiple devices share a single \"brain\" but operate as independent \"bodies.\" Each node—whether a Raspberry Pi, MacBook, or Linux server—runs its own Claude Code agent while synchronizing memories across the mesh network.\n\n**Yesterday, two BrainBot nodes played Pong against each other over the network.**\n\n![Networked Pong Gameplay](media/pong_reel/slide4_gameplay.png)\n\n---\n\n## Table of Contents\n\n- [Executive Summary](#executive-summary)\n- [Explain Like I'm Five](#explain-like-im-five)\n- [Architecture Deep Dive](#architecture-deep-dive)\n  - [The Distributed Brain](#the-distributed-brain)\n  - [Memory System](#memory-system)\n  - [Mesh Network](#mesh-network)\n  - [Node Identity \u0026 Personas](#node-identity--personas)\n- [Features](#features)\n- [Getting Started](#getting-started)\n- [Modes of Operation](#modes-of-operation)\n- [Hardware Support](#hardware-support)\n- [Screenshots \u0026 Media](#screenshots--media)\n- [Technical Reference](#technical-reference)\n\n---\n\n## Executive Summary\n\nBrainBot is an autonomous AI agent platform designed for edge computing. It implements a novel **distributed cognition architecture** where:\n\n- **Shared Memory**: All nodes access a unified three-tier memory system (short-term, medium-term, long-term) that syncs via gossip protocol\n- **Individual Bodies**: Each node has unique hardware capabilities (displays, sensors, GPUs) and auto-generated personas\n- **Claude Code Powered**: Every node runs Claude Code agents that can delegate tasks, write code, and interact with their environment\n- **Mesh Networking**: Nodes discover each other automatically, sync memories, and can collaborate on tasks or play games together\n\n**Key Innovation**: Unlike traditional distributed systems where nodes are identical workers, BrainBot nodes are *individuals* with shared experiences—like humans who grew up together and share memories but have different bodies and capabilities.\n\n### Current Capabilities\n\n| Capability | Status |\n|------------|--------|\n| Autonomous daily schedule (wake/sleep/activities) | Production |\n| Three-tier memory with automatic archival | Production |\n| Mesh network peer discovery \u0026 sync | Production |\n| Networked multiplayer games (Pong) | Production |\n| Hardware control (LCD, LED, fan) | Production |\n| Voice assistant mode | Production |\n| Inter-node task delegation | Beta |\n| Bedtime story generation | Production |\n\n---\n\n## Explain Like I'm Five\n\nImagine you have a best friend who lives far away. You both remember the same fun things you did together—like that time you built a treehouse! Even though you're in different places with different toys, you share the same memories.\n\n**BrainBot is like that, but for computers!**\n\n```\n    🧠 One Brain (Shared Memories)\n         /        |        \\\n        /         |         \\\n      🤖         🤖         🤖\n    Pi Bot    Mac Bot    Linux Bot\n   (has LCD)  (has GPU)  (has speaker)\n```\n\n- **The Brain** = All the memories and things BrainBot has learned\n- **The Bodies** = Different computers (Raspberry Pi, MacBook, etc.)\n- **Each body** has different superpowers (one has a screen, one is fast, one can talk)\n\nWhen one BrainBot learns something new, it tells all the other BrainBots. When they play games together, they can see each other even though they're on different computers!\n\n**Yesterday, the Pi Bot and Mac Bot played Pong together!** The Pi Bot controlled the rainbow paddle on the left, and Mac Bot controlled the blue paddle on the right. They talked over the internet to move the ball back and forth.\n\n---\n\n## Architecture Deep Dive\n\n### The Distributed Brain\n\nBrainBot implements a **federated memory architecture** where each node maintains a local copy of shared memories while contributing new experiences back to the collective.\n\n```mermaid\ngraph TB\n    subgraph \"Shared Brain\"\n        LTM[(Long-Term Memory\u003cbr/\u003eArchive)]\n        MTM[(Medium-Term Memory\u003cbr/\u003eActive Markdown)]\n        STM[(Short-Term Memory\u003cbr/\u003eSQLite State)]\n    end\n\n    subgraph \"Node: Raspberry Pi 5\"\n        A1[Claude Code Agent]\n        H1[Hardware: LCD + LED]\n        L1[Local State]\n    end\n\n    subgraph \"Node: MacBook Pro\"\n        A2[Claude Code Agent]\n        H2[Hardware: GPU + Speaker]\n        L2[Local State]\n    end\n\n    subgraph \"Node: Linux Server\"\n        A3[Claude Code Agent]\n        H3[Hardware: Storage + Network]\n        L3[Local State]\n    end\n\n    A1 \u003c--\u003e|Gossip Protocol| A2\n    A2 \u003c--\u003e|Gossip Protocol| A3\n    A1 \u003c--\u003e|Gossip Protocol| A3\n\n    L1 --\u003e MTM\n    L2 --\u003e MTM\n    L3 --\u003e MTM\n\n    MTM --\u003e LTM\n```\n\n### Memory System\n\nBrainBot uses a **three-tier memory hierarchy** inspired by human memory:\n\n```mermaid\ngraph LR\n    subgraph \"Tier 1: Short-Term (HOT)\"\n        ST[SQLite Database\u003cbr/\u003e~/.brainbot/state/memory.db]\n    end\n\n    subgraph \"Tier 2: Medium-Term (WARM)\"\n        MT[Markdown Files\u003cbr/\u003e~/.brainbot/brain/active/]\n    end\n\n    subgraph \"Tier 3: Long-Term (COLD)\"\n        LT[Archived Markdown\u003cbr/\u003e~/.brainbot/brain/archive/]\n    end\n\n    ST --\u003e|Promote to file| MT\n    MT --\u003e|Archive after 7 days| LT\n    LT --\u003e|Weekly summaries| SUM[Consolidated Summaries]\n```\n\n#### Memory Tiers Explained\n\n| Tier | Storage | Contents | Lifecycle |\n|------|---------|----------|-----------|\n| **Short-Term** | SQLite | Current goals, journal entries, active tasks | Session-based, persisted |\n| **Medium-Term** | Markdown in `brain/active/` | Working memories, project notes, learnings | Tiered reading (recent = full, older = summary) |\n| **Long-Term** | Markdown in `brain/archive/` | Historical memories organized by week/month | Auto-archived after 7 days inactive |\n\n#### How New Nodes Sync Memories\n\nWhen a new BrainBot node joins the network:\n\n```mermaid\nsequenceDiagram\n    participant New as New Node\n    participant Seed as Seed Peer\n    participant Registry as Peer Registry\n    participant Sync as Sync Protocol\n\n    New-\u003e\u003eNew: Generate UUID (node_id.json)\n    New-\u003e\u003eNew: Detect hardware capabilities\n    New-\u003e\u003eNew: Generate persona from capabilities\n\n    New-\u003e\u003eSeed: Connect to seed peer\n    Seed-\u003e\u003eNew: Return known peers list\n    New-\u003e\u003eRegistry: Populate peer registry\n\n    loop Every 60 seconds\n        New-\u003e\u003eSync: Exchange manifests with peers\n        Sync-\u003e\u003eNew: Pull missing brain/active/*.md files\n        Sync-\u003e\u003eNew: Push local new memories\n        Note over New,Sync: Conflicts resolved via last-write-wins\n    end\n```\n\n#### Memory Safety Features\n\n- **Prompt injection protection**: All memories sanitized before inclusion in Claude prompts\n- **Thread-safe access**: Database operations use locks and context managers\n- **Storage tracking**: `memory_file_sync` table tracks origin node, hash, and sync status\n\n### Mesh Network\n\nNodes communicate via an HTTP-based mesh network with gossip protocol for peer discovery:\n\n![Network Architecture](media/pong_reel/slide2_architecture.png)\n\n```mermaid\ngraph TB\n    subgraph \"Mesh Network Components\"\n        MN[MeshNode\u003cbr/\u003eCentral Coordinator]\n        PR[PeerRegistry\u003cbr/\u003eTrack Known Peers]\n        GP[GossipProtocol\u003cbr/\u003ePeer Discovery]\n        SP[SyncProtocol\u003cbr/\u003eData Synchronization]\n        VS[VersionedStore\u003cbr/\u003eConflict Resolution]\n        TR[Transport\u003cbr/\u003eHTTP/aiohttp]\n    end\n\n    MN --\u003e PR\n    MN --\u003e GP\n    MN --\u003e SP\n    MN --\u003e VS\n\n    GP --\u003e TR\n    SP --\u003e TR\n\n    subgraph \"Peer States\"\n        ALIVE[ALIVE\u003cbr/\u003eResponding]\n        SUSPECTED[SUSPECTED\u003cbr/\u003e1-2 missed heartbeats]\n        DEAD[DEAD\u003cbr/\u003e3+ missed heartbeats]\n    end\n\n    ALIVE --\u003e|Miss heartbeat| SUSPECTED\n    SUSPECTED --\u003e|Respond| ALIVE\n    SUSPECTED --\u003e|Miss 2 more| DEAD\n    DEAD --\u003e|Pruned after 1 hour| REMOVED[Removed]\n```\n\n#### Network Endpoints\n\n| Endpoint | Method | Purpose |\n|----------|--------|---------|\n| `/heartbeat` | GET | Health check (every 10s) |\n| `/gossip` | POST | Peer discovery exchange |\n| `/sync/manifest` | GET | Metadata for sync comparison |\n| `/sync/pull` | POST | Pull data from peer |\n| `/sync/push` | POST | Push data to peer |\n| `/chat` | POST | Inter-node chat messages |\n| `/task` | POST | Task delegation |\n\n### Node Identity \u0026 Personas\n\nEach BrainBot node has a unique identity and auto-generated persona based on its hardware:\n\n```mermaid\ngraph LR\n    subgraph \"Identity Generation\"\n        HW[Hardware Detection] --\u003e CAP[Capability Manifest]\n        CAP --\u003e ROLE[Role Assignment]\n        ROLE --\u003e PERSONA[Persona Generation]\n    end\n\n    subgraph \"Example Personas\"\n        P1[\"GPU Studio\u003cbr/\u003eRole: compute\u003cbr/\u003eHas: CUDA GPU\"]\n        P2[\"Story Visual\u003cbr/\u003eRole: display\u003cbr/\u003eHas: 5-inch LCD\"]\n        P3[\"Ear Bot\u003cbr/\u003eRole: listener\u003cbr/\u003eHas: Microphone\"]\n    end\n```\n\n#### Hardware Capabilities Detected\n\n- **Displays**: 1-inch OLED, 5-inch LCD, HDMI, headless\n- **GPU**: CUDA, ROCm, Metal, None\n- **Audio**: Microphone, speaker\n- **Sensors**: Temperature, humidity, motion, light\n- **Lighting**: NeoPixel LED strips\n- **Network**: Ethernet, WiFi, Bluetooth\n\n---\n\n## Features\n\n### Autonomous Operation\n\nBrainBot runs on a daily schedule (US Central Time):\n\n| Time | Activity |\n|------|----------|\n| 00:00 - 07:00 | Sleep (minimal activity, LEDs dim) |\n| 07:00 | Wake up, morning routine |\n| 07:15 | Review yesterday, plan today |\n| 07:30 - 23:30 | Active period (coding, creating, learning) |\n| 23:30 | Write bedtime story |\n| 23:55 | Evening reflection |\n| 00:00 | Go to sleep |\n\n### Networked Games\n\nBrainBot nodes can play games together! Currently supports **Networked Pong**:\n\n```bash\n# On the host (Raspberry Pi)\npython -m brainbot.games.net_pong --host --persona \"Pi 5\"\n\n# On the client (MacBook)\npython -m brainbot.games.net_pong --join 192.168.1.100 --persona \"MacBook Pro\"\n```\n\nFeatures:\n- Rainbow paddles with smooth color transitions\n- Real-time game state sync at ~60 FPS\n- Slack notifications for game events\n- AI fallback if player disconnects\n- `--loop` flag for continuous tournaments\n\n### Voice Assistant\n\nFull offline voice control with wake word detection:\n\n```bash\npython brain_bot.py --voice\n```\n\n- Wake word: \"Computer\"\n- Speech-to-text via whisper.cpp\n- Text-to-speech via Piper\n- 100% offline after initial setup\n\n### Hardware Control\n\nMCP server for Raspberry Pi hardware:\n\n```python\n# 1-inch OLED display\nlcd_1inch_text(line1=\"Status\", line2=\"Active\")\n\n# LED mood lighting\nled_mood(\"excited\")  # Patterns: content, excited, focused, tired, curious\n\n# Fan control\nfan_auto()  # Temperature-based control\n```\n\n---\n\n## Getting Started\n\n### Quick Start (Daemon Mode)\n\n```bash\n# Clone the repository\ngit clone https://github.com/brainbot-lab/brainbot.git\ncd brainbot\n\n# Create virtual environment\npython3 -m venv venv\nsource venv/bin/activate\n\n# Install dependencies\npip install -r requirements.txt\n\n# Initialize BrainBot\npython -m brainbot init\n\n# Start the daemon\npython -m brainbot start\n\n# Check status\npython -m brainbot status\n```\n\n### Chat Mode (Interactive)\n\nFor the original TUI chat experience with local TinyLlama:\n\n```bash\n./setup.sh\n./run.sh\n```\n\n![BrainBot Chat Interface](assets/brainbot-demo.png)\n\n### Multi-Node Setup\n\nTo add a new node to your BrainBot network:\n\n1. Install BrainBot on the new device\n2. Configure seed peers in `~/.brainbot/config/config.json`:\n   ```json\n   {\n     \"mesh\": {\n       \"seed_peers\": [\"192.168.1.100:7777\"]\n     }\n   }\n   ```\n3. Start the daemon—it will automatically:\n   - Generate a unique node ID\n   - Detect hardware capabilities\n   - Create a persona\n   - Connect to the mesh\n   - Sync memories from peers\n\n---\n\n## Modes of Operation\n\n| Mode | Command | Use Case |\n|------|---------|----------|\n| **Daemon** | `python -m brainbot start` | Autonomous operation with schedule |\n| **Chat** | `python brain_bot.py` | Interactive TUI with local LLM |\n| **Voice** | `python brain_bot.py --voice` | Voice assistant mode |\n| **Foreground** | `python -m brainbot start -f` | Debugging daemon behavior |\n\n---\n\n## Hardware Support\n\n### Tested Platforms\n\n| Platform | Status | Notes |\n|----------|--------|-------|\n| Raspberry Pi 5 (4GB+) | Full support | Primary development platform |\n| Raspberry Pi 4 (4GB+) | Full support | Voice mode slightly slower |\n| MacBook (Apple Silicon) | Full support | Metal GPU acceleration |\n| MacBook (Intel) | Full support | - |\n| Linux x86_64 | Full support | CUDA if available |\n| Windows WSL2 | Partial | No hardware integration |\n\n### Supported Hardware\n\n- **Displays**: SSD1306 OLED (1\"), ILI9486 LCD (5\"), HDMI\n- **LEDs**: NeoPixel/WS2812B strips\n- **Audio**: USB microphones, 3.5mm speakers\n- **Cooling**: PWM fans with temperature control\n\n### Build Your Own BrainBot\n\nWant to build the exact hardware shown in this project? Here's what we use:\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n**[FREENOVE Raspberry Pi 5 Case with Screen](https://amzn.to/3ZNKWK6)**\n\nThe all-in-one enclosure includes:\n- 4.3\" Touchscreen display\n- 128GB M.2 NVMe SSD (800 MB/s)\n- 5MP Camera module\n- 1.3\" OLED status screen\n- Stereo speakers\n- 3.5mm \u0026 optical audio (S/PDIF)\n- Active cooling\n\n*Affiliate link - helps support the project*\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n![FREENOVE Pi 5 Case](https://m.media-amazon.com/images/I/71Z0URU6RsL._AC_SL1500_.jpg)\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n**BrainBot Running on the Hardware:**\n\n![BrainBot Hardware](media/brainbot-hardware.jpg)\n\n*BrainBot TUI running on Raspberry Pi 5 with the FREENOVE case. The 1.3\" OLED shows system stats (CPU temp, fan speed), while the main 4.3\" touchscreen displays the chat interface with [TinyLlama-1.1B-Chat-v1.0](https://huggingface.co/TinyLlama/TinyLlama-1.1B-Chat-v1.0) running locally via [llama.cpp](https://github.com/ggerganov/llama.cpp). We use the [Q4_K_M quantized GGUF](https://huggingface.co/TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF) version (~670MB) which runs entirely offline with ~1.5GB RAM.*\n\n---\n\n## Screenshots \u0026 Media\n\n### Networked Pong\n\n![Pong Title](media/pong_reel/slide1_title.png)\n\n![Pong Architecture](media/pong_reel/slide2_architecture.png)\n\n![Pong Gameplay](media/pong_reel/slide4_gameplay.png)\n\n### Chat Interface\n\n![BrainBot TUI](assets/brainbot-demo.png)\n\n### Placeholder: More Screenshots Coming\n\n\u003c!-- TODO: Add these screenshots --\u003e\n\u003c!-- ![Mesh Network Dashboard](media/screenshots/mesh-dashboard.png) --\u003e\n\u003c!-- ![Memory Browser](media/screenshots/memory-browser.png) --\u003e\n\u003c!-- ![Node Status Panel](media/screenshots/node-status.png) --\u003e\n\u003c!-- ![Bedtime Story Display](media/screenshots/bedtime-story.png) --\u003e\n\u003c!-- ![LED Mood Lighting](media/screenshots/led-moods.png) --\u003e\n\n---\n\n## Technical Reference\n\n### Data Directory Structure\n\n```\n~/.brainbot/\n├── config/\n│   ├── config.json          # Main configuration\n│   ├── hardware.json        # GPIO pin mappings\n│   ├── node_id.json         # Unique node identifier\n│   └── persona.json         # Auto-generated persona\n├── brain/\n│   ├── active/              # Medium-term memories (synced)\n│   └── archive/             # Long-term memories (YYYY-MM/week-NN/)\n├── state/\n│   ├── state.json           # Current bot state\n│   ├── memory.db            # SQLite short-term storage\n│   ├── journal/             # Daily markdown journals\n│   └── goals/               # Active and completed goals\n├── projects/                # Code projects BrainBot builds\n├── bedtime_stories/         # Archive of generated stories\n└── logs/                    # Daemon and session logs\n```\n\n### Key Files\n\n| File | Purpose | LOC |\n|------|---------|-----|\n| `brainbot/memory/brain.py` | Markdown memory system | 885 |\n| `brainbot/memory/store.py` | SQLite storage | 663 |\n| `brainbot/network/mesh/node.py` | Mesh coordinator | 367 |\n| `brainbot/network/mesh/sync.py` | Data synchronization | 433 |\n| `brainbot/network/mesh/gossip.py` | Peer discovery | 324 |\n| `brainbot/games/net_pong.py` | Networked Pong | 875 |\n\n### Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `BRAINBOT_DATA_DIR` | `~/.brainbot` | Data directory |\n| `BRAINBOT_TIMEZONE` | `America/Chicago` | Schedule timezone |\n| `BRAINBOT_LOG_LEVEL` | `INFO` | Logging verbosity |\n\n---\n\n## Roadmap\n\n- [ ] Multi-node task orchestration\n- [ ] Distributed code execution\n- [ ] More networked games (chess, collaborative puzzles)\n- [ ] Web dashboard for mesh monitoring\n- [ ] Mobile app for remote interaction\n- [ ] Plugin system for custom activities\n\n---\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n**Model Licenses**:\n- TinyLlama: Apache 2.0\n- Piper TTS: MIT\n- whisper.cpp: MIT\n\n---\n\n## Acknowledgments\n\n- **Claude Code** by Anthropic - Powers each BrainBot agent\n- **Textual** - Python TUI framework\n- **llama.cpp** - Local LLM inference\n- **TinyLlama** - Compact chat model\n- **Porcupine** - Wake word detection\n\n---\n\n**One brain. Many bodies. Infinite possibilities.**\n\n*Built with curiosity by humans and Claude.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrainbot-lab%2Fbrainbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrainbot-lab%2Fbrainbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrainbot-lab%2Fbrainbot/lists"}