[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74150":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},74150,"MiroFish-Offline","nikmcfly\u002FMiroFish-Offline","nikmcfly","Offline multi-agent simulation & prediction engine. English fork of MiroFish with Neo4j + Ollama local stack.","https:\u002F\u002Fx.com\u002Fnikmcfly69\u002Fstatus\u002F2033147482331390328",null,"Python",2278,611,26,10,0,14,42,127,110.36,"GNU Affero General Public License v3.0",false,"main",true,[26,27,28,29,30,31,32,33,34,35],"ai","multi-agent","neo4j","offline","ollama","open-source","prediction","simulation","swarm-intelligence","vue","2026-06-12 04:01:13","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\".\u002Fstatic\u002Fimage\u002Fmirofish-offline-banner.png\" alt=\"MiroFish Offline\" width=\"100%\"\u002F>\n\n# MiroFish-Offline\n\n**Fully local fork of [MiroFish](https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish) — no cloud APIs required. English UI.**\n\n*A multi-agent swarm intelligence engine that simulates public opinion, market sentiment, and social dynamics. Entirely on your hardware.*\n\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fnikmcfly\u002FMiroFish-Offline?style=flat-square&color=DAA520)](https:\u002F\u002Fgithub.com\u002Fnikmcfly\u002FMiroFish-Offline\u002Fstargazers)\n[![GitHub Forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fnikmcfly\u002FMiroFish-Offline?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fnikmcfly\u002FMiroFish-Offline\u002Fnetwork)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Build-2496ED?style=flat-square&logo=docker&logoColor=white)](https:\u002F\u002Fhub.docker.com\u002F)\n[![License: AGPL-3.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-AGPL--3.0-blue?style=flat-square)](.\u002FLICENSE)\n\n\u003C\u002Fdiv>\n\n## What is this?\n\nMiroFish is a multi-agent simulation engine: upload any document (press release, policy draft, financial report), and it generates hundreds of AI agents with unique personalities that simulate the public reaction on social media. Posts, arguments, opinion shifts — hour by hour.\n\nThe [original MiroFish](https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish) was built for the Chinese market (Chinese UI, Zep Cloud for knowledge graphs, DashScope API). This fork makes it **fully local and fully English**:\n\n| Original MiroFish | MiroFish-Offline |\n|---|---|\n| Chinese UI | **English UI** (1,000+ strings translated) |\n| Zep Cloud (graph memory) | **Neo4j Community Edition 5.15** |\n| DashScope \u002F OpenAI API (LLM) | **Ollama** (qwen2.5, llama3, etc.) |\n| Zep Cloud embeddings | **nomic-embed-text** via Ollama |\n| Cloud API keys required | **Zero cloud dependencies** |\n\n## Workflow\n\n1. **Graph Build** — Extracts entities (people, companies, events) and relationships from your document. Builds a knowledge graph with individual and group memory via Neo4j.\n2. **Env Setup** — Generates hundreds of agent personas, each with unique personality, opinion bias, reaction speed, influence level, and memory of past events.\n3. **Simulation** — Agents interact on simulated social platforms: posting, replying, arguing, shifting opinions. The system tracks sentiment evolution, topic propagation, and influence dynamics in real time.\n4. **Report** — A ReportAgent analyzes the post-simulation environment, interviews a focus group of agents, searches the knowledge graph for evidence, and generates a structured analysis.\n5. **Interaction** — Chat with any agent from the simulated world. Ask them why they posted what they posted. Full memory and personality persists.\n\n## Screenshot\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\".\u002Fstatic\u002Fimage\u002Fmirofish-offline-screenshot.jpg\" alt=\"MiroFish Offline — English UI\" width=\"100%\"\u002F>\n\u003C\u002Fdiv>\n\n## Quick Start\n\n### Prerequisites\n\n- Docker & Docker Compose (recommended), **or**\n- Python 3.11+, Node.js 18+, Neo4j 5.15+, Ollama\n\n### Option A: Docker (easiest)\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnikmcfly\u002FMiroFish-Offline.git\ncd MiroFish-Offline\ncp .env.example .env\n\n# Start all services (Neo4j, Ollama, MiroFish)\ndocker compose up -d\n\n# Pull the required models into Ollama\ndocker exec mirofish-ollama ollama pull qwen2.5:32b\ndocker exec mirofish-ollama ollama pull nomic-embed-text\n```\n\nOpen `http:\u002F\u002Flocalhost:3000` — that's it.\n\n### Option B: Manual\n\n**1. Start Neo4j**\n\n```bash\ndocker run -d --name neo4j \\\n  -p 7474:7474 -p 7687:7687 \\\n  -e NEO4J_AUTH=neo4j\u002Fmirofish \\\n  neo4j:5.15-community\n```\n\n**2. Start Ollama & pull models**\n\n```bash\nollama serve &\nollama pull qwen2.5:32b      # LLM (or qwen2.5:14b for less VRAM)\nollama pull nomic-embed-text  # Embeddings (768d)\n```\n\n**3. Configure & run backend**\n\n```bash\ncp .env.example .env\n# Edit .env if your Neo4j\u002FOllama are on non-default ports\n\ncd backend\npip install -r requirements.txt\npython run.py\n```\n\n**4. Run frontend**\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\nOpen `http:\u002F\u002Flocalhost:3000`.\n\n## Configuration\n\nAll settings are in `.env` (copy from `.env.example`):\n\n```bash\n# LLM — points to local Ollama (OpenAI-compatible API)\nLLM_API_KEY=ollama\nLLM_BASE_URL=http:\u002F\u002Flocalhost:11434\u002Fv1\nLLM_MODEL_NAME=qwen2.5:32b\n\n# Neo4j\nNEO4J_URI=bolt:\u002F\u002Flocalhost:7687\nNEO4J_USER=neo4j\nNEO4J_PASSWORD=mirofish\n\n# Embeddings\nEMBEDDING_MODEL=nomic-embed-text\nEMBEDDING_BASE_URL=http:\u002F\u002Flocalhost:11434\n```\n\nWorks with any OpenAI-compatible API — swap Ollama for Claude, GPT, or any other provider by changing `LLM_BASE_URL` and `LLM_API_KEY`.\n\n## Architecture\n\nThis fork introduces a clean abstraction layer between the application and the graph database:\n\n```\n┌─────────────────────────────────────────┐\n│              Flask API                   │\n│  graph.py  simulation.py  report.py     │\n└──────────────┬──────────────────────────┘\n               │ app.extensions['neo4j_storage']\n┌──────────────▼──────────────────────────┐\n│           Service Layer                  │\n│  EntityReader  GraphToolsService         │\n│  GraphMemoryUpdater  ReportAgent         │\n└──────────────┬──────────────────────────┘\n               │ storage: GraphStorage\n┌──────────────▼──────────────────────────┐\n│         GraphStorage (abstract)          │\n│              │                            │\n│    ┌─────────▼─────────┐                │\n│    │   Neo4jStorage     │                │\n│    │  ┌───────────────┐ │                │\n│    │  │ EmbeddingService│ ← Ollama       │\n│    │  │ NERExtractor   │ ← Ollama LLM   │\n│    │  │ SearchService  │ ← Hybrid search │\n│    │  └───────────────┘ │                │\n│    └───────────────────┘                │\n└─────────────────────────────────────────┘\n               │\n        ┌──────▼──────┐\n        │  Neo4j CE   │\n        │  5.15       │\n        └─────────────┘\n```\n\n**Key design decisions:**\n\n- `GraphStorage` is an abstract interface — swap Neo4j for any other graph DB by implementing one class\n- Dependency injection via Flask `app.extensions` — no global singletons\n- Hybrid search: 0.7 × vector similarity + 0.3 × BM25 keyword search\n- Synchronous NER\u002FRE extraction via local LLM (replaces Zep's async episodes)\n- All original dataclasses and LLM tools (InsightForge, Panorama, Agent Interviews) preserved\n\n## Hardware Requirements\n\n| Component | Minimum | Recommended |\n|---|---|---|\n| RAM | 16 GB | 32 GB |\n| VRAM (GPU) | 10 GB (14b model) | 24 GB (32b model) |\n| Disk | 20 GB | 50 GB |\n| CPU | 4 cores | 8+ cores |\n\nCPU-only mode works but is significantly slower for LLM inference. For lighter setups, use `qwen2.5:14b` or `qwen2.5:7b`.\n\n## Use Cases\n\n- **PR crisis testing** — simulate the public reaction to a press release before publishing\n- **Trading signal generation** — feed financial news and observe simulated market sentiment\n- **Policy impact analysis** — test draft regulations against simulated public response\n- **Creative experiments** — someone fed it a classical Chinese novel with a lost ending; the agents wrote a narratively consistent conclusion\n\n## License\n\nAGPL-3.0 — same as the original MiroFish project. See [LICENSE](.\u002FLICENSE).\n\n## Credits & Attribution\n\nThis is a modified fork of [MiroFish](https:\u002F\u002Fgithub.com\u002F666ghj\u002FMiroFish) by [666ghj](https:\u002F\u002Fgithub.com\u002F666ghj), originally supported by [Shanda Group](https:\u002F\u002Fwww.shanda.com\u002F). The simulation engine is powered by [OASIS](https:\u002F\u002Fgithub.com\u002Fcamel-ai\u002Foasis) from the CAMEL-AI team.\n\n**Modifications in this fork:**\n- Backend migrated from Zep Cloud to local Neo4j CE 5.15 + Ollama\n- Entire frontend translated from Chinese to English (20 files, 1,000+ strings)\n- All Zep references replaced with Neo4j across the UI\n- Rebranded to MiroFish Offline\n","MiroFish-Offline 是一个完全本地化的多智能体模拟与预测引擎，用于模拟公众意见、市场情绪和社会动态。项目基于Python开发，采用Neo4j和Ollama作为本地技术栈，无需依赖任何云端API。其核心功能包括从文档中提取实体及其关系以构建知识图谱，生成具有独特个性的智能体，并在模拟的社交平台上进行互动，实时追踪情感演变、话题传播及影响力动态。最终，系统会生成一份结构化的分析报告。此外，用户还可以与模拟世界中的任意智能体进行对话，了解其行为背后的动机。此工具特别适用于需要在本地环境中研究舆情变化、市场反应或社会趋势的场景。",2,"2026-06-11 03:49:04","high_star"]