MiroFish Offline
Simulate document-driven public reaction and social dynamics entirely on local infrastructure.
What does this agent do, and when should you use it?
MiroFish Offline is an English, fully local fork of MiroFish for document-driven multi-agent simulations. Its Flask API exposes graph, simulation, and reporting functions, while Neo4j Community Edition 5.15 stores graph and memory data and Ollama supplies local models and embeddings. The system creates hundreds of personas with individual traits, opinion bias, reaction speed, influence level, and memories, then has them interact on simulated social platforms. After a run, ReportAgent combines focus-group interviews with knowledge-graph evidence to produce a structured analysis, and users can continue chatting with simulated agents. It supports Docker Compose deployment as well as a manual Python, Node.js, Neo4j, and Ollama setup.
A user uploads a document such as a press release, policy draft, or financial report. Graph Build extracts people, companies, events, and relationships, then builds a Neo4j knowledge graph with individual and group memory. Env Setup generates hundreds of personas with personality, opinion bias, reaction speed, influence level, and past-event memory. Simulation has those personas post, reply, argue, and shift opinions on simulated social platforms while tracking sentiment evolution, topic propagation, and influence dynamics. ReportAgent then interviews a focus group, searches the graph for evidence, and generates a structured analysis; Interaction lets the user ask an agent why it posted. The backend injects GraphStorage through app.extensions['neo4j_storage']; Neo4jStorage includes EmbeddingService, NERExtractor, and SearchService, with hybrid search weighted 0.7 vector similarity and 0.3 BM25 keyword search.
- A PR team uploads a draft press release before publication to examine simulated public discussion, arguments, and sentiment movement.
- A market or trading researcher feeds in financial news to observe simulated market sentiment and topic propagation.
- A policy team uploads a proposed regulation to test how distinct simulated personas may react to it.
- A researcher needs document entities and relationships extracted into a searchable Neo4j knowledge graph before running a social simulation.
- A creative practitioner wants persistent, personality-driven characters to respond and interact around a supplied text.
What are this agent's strengths and limitations?
- It replaces Zep Cloud and cloud model APIs with Neo4j Community Edition 5.15 and Ollama, enabling a documented local deployment without cloud API keys.
- It covers the complete flow from document graph construction and persona generation through social simulation, reporting, and follow-up agent conversations.
- The documented GraphStorage abstraction separates the application service layer from the graph database, so another graph database can be substituted by implementing one class.
- Its SearchService uses an explicitly defined hybrid retrieval formula: 0.7 vector similarity plus 0.3 BM25 keyword search.
- The recommended qwen2.5:32b configuration calls for 24 GB of GPU VRAM; even the minimum documented setup calls for 16 GB RAM and 10 GB VRAM, and CPU-only inference is significantly slower.
- Operation depends on Neo4j, Ollama, and an embedding model; the recommended path additionally requires Docker and Docker Compose.
- The example configuration includes the Neo4j credentials neo4j/mirofish, so deployers need to assess and change local security settings themselves.
- Although the project says LLM_BASE_URL and LLM_API_KEY can be changed for other providers, it does not provide provider-specific configuration examples or compatibility test results.
How do you install or deploy this agent?
Recommended Docker setup:
git clone https://github.com/nikmcfly/MiroFish-Offline.git
cd MiroFish-Offline
cp .env.example .env
docker compose up -d
docker exec mirofish-ollama ollama pull qwen2.5:32b
docker exec mirofish-ollama ollama pull nomic-embed-text
Then open http://localhost:3000. The documented local defaults are LLM_API_KEY=ollama, LLM_BASE_URL=http://localhost:11434/v1, LLM_MODEL_NAME=qwen2.5:32b, NEO4J_URI=bolt://localhost:7687, NEO4J_USER=neo4j, NEO4J_PASSWORD=mirofish, and EMBEDDING_MODEL=nomic-embed-text.
How do you use this agent?
Once the services are running, open http://localhost:3000 and upload the document to analyze. Use the Graph Build, Env Setup, and Simulation workflow: create the entity-and-relationship graph, generate the persona environment, and run the simulated social interactions. Review the structured analysis produced by ReportAgent, then use Interaction to continue a conversation with a simulated persona. On lighter hardware, set LLM_MODEL_NAME in .env to qwen2.5:14b or qwen2.5:7b; the documented embedding model remains nomic-embed-text.
How does this agent compare with similar options?
Compared with the original MiroFish, this fork provides an English UI and replaces Zep Cloud graph memory, DashScope/OpenAI APIs, and Zep embeddings with local Neo4j Community Edition 5.15, Ollama, and Ollama-hosted nomic-embed-text. The original is described as Chinese-market oriented, while this fork is positioned around zero cloud dependencies.