{
 "id": 4363,
 "status": "publish",
 "lang": "en",
 "slug": "mirofish-ai-market-simulation",
 "url": "https://soymarketingultra.com/en/mirofish-ai-market-simulation/",
 "title": "MiroFish Review: Simulate Market Reactions with AI",
 "excerpt": "",
 "date_gmt": "2026-09-15T21:46:20Z",
 "modified_gmt": "2026-09-15T21:46:20Z",
 "categories": [
  {
   "slug": "applied-ai-en",
   "name": "Applied AI",
   "url": "https://soymarketingultra.com/en/category/applied-ai-en/"
  }
 ],
 "tags": [
  {
   "slug": "ai-agents",
   "name": "AI agents"
  },
  {
   "slug": "market-simulation",
   "name": "market simulation"
  },
  {
   "slug": "swarm-intelligence",
   "name": "swarm intelligence"
  },
  {
   "slug": "open-source-ai-tools",
   "name": "open source AI tools"
  },
  {
   "slug": "market-research",
   "name": "market research"
  }
 ],
 "featured_image": {
  "url": "https://soymarketingultra.com/wp-content/uploads/review-mirofish-4363-en.png",
  "alt": "MiroFish review: analysis, limitations and verdict",
  "width": 1536,
  "height": 864
 },
 "translation": {
  "lang": "es",
  "url": "https://soymarketingultra.com/mirofish-simulacion-mercado-agentes-ia/",
  "id": 4362
 },
 "seo": {
  "title": "MiroFish Review: Simulate Market Reactions with AI",
  "description": "MiroFish runs thousands of AI agents to predict market reactions before you spend a dime. Open-source, fast, and surprisingly sharp. Try it now.",
  "focus_keyword": "AI market simulation tool"
 },
 "html": "<p>MiroFish generates thousands of AI agents with their own personalities and memory, lets them interact with each other, and predicts how the market will react to your launch, your price, or your campaign. <strong>Massive AI simulation to rehearse market response before spending a dime</strong>. Over 73,000 GitHub stars, AGPL-3.0 license, and a live demo: the question isn't whether it exists, it's whether it actually works.</p>\n\n<div class=\"mu-tldr\">\n  <div class=\"mu-tldr__header\">\n    <img src=\"https://soymarketingultra.com/wp-content/themes/astra-child/assets/brand/despiram-sorprendido.png\" alt=\"Marketing Ultra Mascot\" class=\"mu-tldr__mascot\" />\n    <p class=\"mu-tldr__title\">TL;DR: The No-Nonsense Summary</p>\n  </div>\n  <div class=\"mu-tldr__body\">\n    <ul>\n      <li><strong>What it is</strong>: An open-source swarm intelligence engine that simulates thousands of AI agents to predict market reactions to a launch, a price, or a campaign.</li>\n      <li><strong>Traction</strong>: 73,593 GitHub stars, backed by Shanda Group, engine built on CAMEL-AI's OASIS.</li>\n      <li><strong>Real cost</strong>: The tool is free (AGPL-3.0), but every simulation burns tokens from whatever LLM API you configure.</li>\n      <li><strong>The big catch</strong>: Agents are LLM prompts with no evidence verification. They can generate convincing answers with no real basis.</li>\n    </ul>\n    <div class=\"mu-tldr__verdict\"><svg class=\"mu-tldr__gavel\" aria-hidden=\"true\" viewBox=\"0 0 26 18\" width=\"40\" height=\"28\" shape-rendering=\"crispEdges\" style=\"image-rendering:pixelated\"><rect x=\"6\" y=\"0\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"7\" y=\"0\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"8\" y=\"0\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"5\" y=\"1\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"6\" y=\"1\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"7\" y=\"1\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"8\" y=\"1\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"9\" y=\"1\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"10\" y=\"1\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"5\" y=\"2\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"6\" y=\"2\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"7\" y=\"2\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"8\" y=\"2\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"9\" y=\"2\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"10\" y=\"2\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"11\" y=\"2\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"12\" y=\"2\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"5\" y=\"3\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"6\" y=\"3\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"7\" y=\"3\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"8\" y=\"3\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"9\" y=\"3\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"10\" y=\"3\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"11\" y=\"3\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"12\" y=\"3\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"13\" y=\"3\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"5\" y=\"4\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"6\" y=\"4\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"7\" y=\"4\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"8\" y=\"4\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"10\" y=\"4\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"11\" y=\"4\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"12\" y=\"4\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"13\" y=\"4\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"4\" y=\"5\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"5\" y=\"5\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"6\" y=\"5\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"7\" y=\"5\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"8\" y=\"5\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"9\" y=\"5\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"10\" y=\"5\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"11\" y=\"5\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"12\" y=\"5\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"4\" y=\"6\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"5\" y=\"6\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"6\" y=\"6\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"7\" y=\"6\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"8\" y=\"6\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"9\" y=\"6\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"10\" y=\"6\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"11\" y=\"6\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"2\" y=\"7\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"3\" y=\"7\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"4\" y=\"7\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"5\" y=\"7\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"6\" y=\"7\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"7\" y=\"7\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"8\" y=\"7\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"9\" y=\"7\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"10\" y=\"7\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"11\" y=\"7\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"2\" y=\"8\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"3\" y=\"8\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"4\" y=\"8\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"5\" y=\"8\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"6\" y=\"8\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"7\" y=\"8\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"8\" y=\"8\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"9\" y=\"8\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"10\" y=\"8\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"11\" y=\"8\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"12\" y=\"8\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"13\" y=\"8\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"17\" y=\"8\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"18\" y=\"8\" width=\"1\" height=\"1\" fill=\"#b87575\"/><rect x=\"19\" y=\"8\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"20\" y=\"8\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"21\" y=\"8\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"22\" y=\"8\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"23\" y=\"8\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"1\" y=\"9\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"2\" y=\"9\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"3\" y=\"9\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"4\" y=\"9\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"5\" y=\"9\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"6\" y=\"9\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"7\" y=\"9\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"8\" y=\"9\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"9\" y=\"9\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"10\" y=\"9\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"11\" y=\"9\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"12\" y=\"9\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"13\" y=\"9\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"14\" y=\"9\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"15\" y=\"9\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"16\" y=\"9\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"17\" y=\"9\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"18\" y=\"9\" width=\"1\" height=\"1\" fill=\"#fcc378\"/><rect x=\"19\" y=\"9\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"20\" y=\"9\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"21\" y=\"9\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"22\" y=\"9\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"23\" y=\"9\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"24\" y=\"9\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"1\" y=\"10\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"2\" y=\"10\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"3\" y=\"10\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"4\" y=\"10\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"5\" y=\"10\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"6\" y=\"10\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"7\" y=\"10\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"8\" y=\"10\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"9\" y=\"10\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"11\" y=\"10\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"12\" y=\"10\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"13\" y=\"10\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"14\" y=\"10\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"15\" y=\"10\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"16\" y=\"10\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"17\" y=\"10\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"18\" y=\"10\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"19\" y=\"10\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"20\" y=\"10\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"21\" y=\"10\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"22\" y=\"10\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"23\" y=\"10\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"24\" y=\"10\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"25\" y=\"10\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"2\" y=\"11\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"3\" y=\"11\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"4\" y=\"11\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"5\" y=\"11\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"6\" y=\"11\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"7\" y=\"11\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"8\" y=\"11\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"13\" y=\"11\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"14\" y=\"11\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"15\" y=\"11\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"16\" y=\"11\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"17\" y=\"11\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"18\" y=\"11\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"19\" y=\"11\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"20\" y=\"11\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"21\" y=\"11\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"22\" y=\"11\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"23\" y=\"11\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"24\" y=\"11\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"25\" y=\"11\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"0\" y=\"12\" width=\"1\" height=\"1\" fill=\"#fd5d5b\"/><rect x=\"1\" y=\"12\" width=\"1\" height=\"1\" fill=\"#fcc378\"/><rect x=\"2\" y=\"12\" width=\"1\" height=\"1\" fill=\"#ffee94\"/><rect x=\"5\" y=\"12\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"6\" y=\"12\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"7\" y=\"12\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"8\" y=\"12\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"14\" y=\"12\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"15\" y=\"12\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"16\" y=\"12\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"17\" y=\"12\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"18\" y=\"12\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"19\" y=\"12\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"20\" y=\"12\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"21\" y=\"12\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"22\" y=\"12\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"23\" y=\"12\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"24\" y=\"12\" width=\"1\" height=\"1\" fill=\"#c09068\"/><rect x=\"25\" y=\"12\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"0\" y=\"13\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"1\" y=\"13\" width=\"1\" height=\"1\" fill=\"#fcc378\"/><rect x=\"2\" y=\"13\" width=\"1\" height=\"1\" fill=\"#ffee94\"/><rect x=\"3\" y=\"13\" width=\"1\" height=\"1\" fill=\"#ffee94\"/><rect x=\"4\" y=\"13\" width=\"1\" height=\"1\" fill=\"#ffee94\"/><rect x=\"14\" y=\"13\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"15\" y=\"13\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"16\" y=\"13\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"17\" y=\"13\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"18\" y=\"13\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"19\" y=\"13\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"20\" y=\"13\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"21\" y=\"13\" width=\"1\" height=\"1\" fill=\"#873235\"/><rect x=\"22\" y=\"13\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"23\" y=\"13\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"24\" y=\"13\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"25\" y=\"13\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"1\" y=\"14\" width=\"1\" height=\"1\" fill=\"#fd5d5b\"/><rect x=\"2\" y=\"14\" width=\"1\" height=\"1\" fill=\"#fd5d5b\"/><rect x=\"3\" y=\"14\" width=\"1\" height=\"1\" fill=\"#fd5d5b\"/><rect x=\"4\" y=\"14\" width=\"1\" height=\"1\" fill=\"#fcc378\"/><rect x=\"5\" y=\"14\" width=\"1\" height=\"1\" fill=\"#ffee94\"/><rect x=\"6\" y=\"14\" width=\"1\" height=\"1\" fill=\"#ffee94\"/><rect x=\"7\" y=\"14\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"15\" y=\"14\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"16\" y=\"14\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"17\" y=\"14\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"18\" y=\"14\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"19\" y=\"14\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"20\" y=\"14\" width=\"1\" height=\"1\" fill=\"#b87575\"/><rect x=\"21\" y=\"14\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"22\" y=\"14\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"23\" y=\"14\" width=\"1\" height=\"1\" fill=\"#0a0000\"/><rect x=\"24\" y=\"14\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"25\" y=\"14\" width=\"1\" height=\"1\" fill=\"#8a7060\"/><rect x=\"1\" y=\"15\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"4\" y=\"15\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"5\" y=\"15\" width=\"1\" height=\"1\" fill=\"#fcc378\"/><rect x=\"6\" y=\"15\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"7\" y=\"15\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"8\" y=\"15\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"16\" y=\"15\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"17\" y=\"15\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"18\" y=\"15\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"19\" y=\"15\" width=\"1\" height=\"1\" fill=\"#c09068\"/><rect x=\"20\" y=\"15\" width=\"1\" height=\"1\" fill=\"#b87575\"/><rect x=\"21\" y=\"15\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"22\" y=\"15\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"23\" y=\"15\" width=\"1\" height=\"1\" fill=\"#aa6666\"/><rect x=\"24\" y=\"15\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"25\" y=\"15\" width=\"1\" height=\"1\" fill=\"#ffe2e2\"/><rect x=\"5\" y=\"16\" width=\"1\" height=\"1\" fill=\"#e5a97c\"/><rect x=\"6\" y=\"16\" width=\"1\" height=\"1\" fill=\"#ffe2e2\"/><rect x=\"7\" y=\"16\" width=\"1\" height=\"1\" fill=\"#ffe2e2\"/><rect x=\"8\" y=\"16\" width=\"1\" height=\"1\" fill=\"#ffdab0\"/><rect x=\"17\" y=\"16\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"18\" y=\"16\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"19\" y=\"16\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"20\" y=\"16\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"21\" y=\"16\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"22\" y=\"16\" width=\"1\" height=\"1\" fill=\"#6b4535\"/><rect x=\"23\" y=\"16\" width=\"1\" height=\"1\" fill=\"#696969\"/><rect x=\"19\" y=\"17\" width=\"1\" height=\"1\" fill=\"#b87575\"/><rect x=\"20\" y=\"17\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"21\" y=\"17\" width=\"1\" height=\"1\" fill=\"#3a1510\"/><rect x=\"22\" y=\"17\" width=\"1\" height=\"1\" fill=\"#696969\"/></svg>Verdict: a tool for cheap, fast rehearsal, not definitive validation. Use it as a first gut-check before the expensive one.</div>\n  </div>\n</div>\n\n<div class=\"mku-ficha\"><table class=\"mku-ficha-tabla\"><tbody><tr><th>What it is</th><td>Open-source swarm intelligence engine that simulates thousands of AI agents to predict the outcome of social, market, or political scenarios.</td></tr><tr><th>Official website</th><td><a href=\"https://mirofish.ai/\" rel=\"noopener\" target=\"_blank\">https://mirofish.ai/</a></td></tr><tr><th>Repository</th><td><a href=\"https://github.com/666ghj/mirofish\" rel=\"noopener\" target=\"_blank\">repo</a></td></tr><tr><th>License</th><td>AGPL-3.0</td></tr><tr><th>Pricing</th><td>freemium</td></tr><tr><th>Alternative to</th><td>manual forecasting with spreadsheets and focus groups</td></tr><tr><th>GitHub Stars</th><td>73,593</td></tr><tr><th>Launch year</th><td>2025</td></tr><tr><th>Maintainer</th><td>666ghj (individual)</td></tr></tbody></table><p class=\"mku-ficha-fecha\">Reviewed on 2026-09-15</p></div><div class=\"mku-caja-roundup\"><p>This tool is part of the living roundup <a href=\"https://soymarketingultra.com/en/skills-for-claude-code-codex-and-coding-agents/\">Skills for Claude Code, Codex and other code agents</a> →</p></div>\n\n<h2>The Problem It Solves</h2>\n\n<p>MiroFish targets a gap every marketing team knows well: there's no cheap dress rehearsal for the market. Testing a campaign or a launch with real people means a focus group that costs thousands and takes weeks, a survey riddled with self-selection bias, or, let's be honest, launching and hoping for the best.</p>\n<figure class=\"wp-block-image size-full mu-diagram\"><img src=\"https://soymarketingultra.com/wp-content/uploads/mirofish-review-simulate-market-reactions-with-ai-diagrama.webp\" alt=\"Diagrama: The Problem It Solves\" class=\"wp-image-4366\"/></figure>\n\n<p>The pitch is straightforward: give it your material (a launch post, a new price point, an ad), tell it what you want to know, and <a href=\"https://mirofish.ai/\" target=\"_blank\" rel=\"noopener\">MiroFish</a> generates hundreds of AI personas with diverse profiles. It lets them react to each other and hands you back a prediction report. A synthetic focus group, running twenty-four hours a day, with no moderator and no catering bill.</p>\n\n<p>Under the hood, its simulation engine runs on OASIS (Open Agent Social Interaction Simulations), a research project from CAMEL-AI. This isn't a side project with a pretty README: it has an academic foundation and corporate backing from Shanda Group.</p>\n\n<h2>Getting It Up and Running</h2>\n\n<p>MiroFish is deployed from source (Node.js + Python) or via Docker, and needs two external API keys to work.</p>\n<figure class=\"mu-captura\"><img src=\"https://soymarketingultra.com/wp-content/uploads/review-mirofish-simulacion-mercado-agentes-ia-home.png\" alt=\"MiroFish official website\" loading=\"lazy\" /><figcaption>The MiroFish official website, captured on 2026-09-15.</figcaption></figure>\n\n<p>For the source route: clone the <a href=\"https://github.com/666ghj/mirofish\" target=\"_blank\" rel=\"noopener\">repository</a>, copy .env.example to .env, and fill in two required keys. The first is an LLM API compatible with the OpenAI SDK format (the project recommends Alibaba's Qwen-plus via Bailian). The second is a Zep Cloud account for agent memory, which offers a free monthly quota for basic use. Requirements: Node.js 18+, Python between 3.11 and 3.12, and the uv package manager.</p>\n\n<p>Then: <code>npm run setup:all</code> installs everything and <code>npm run dev</code> starts the services. Frontend at localhost:3000, API at localhost:5001. With Docker it comes down to copying the .env and running <code>docker compose up -d</code>. If you'd rather not install anything yet, there's an <a href=\"https://666ghj.github.io/mirofish-demo/\" target=\"_blank\" rel=\"noopener\">interactive demo</a> to experiment with a pre-designed scenario.</p>\n\n<div class=\"mu-prompt-box\">\n  <div class=\"mu-prompt-bar\">\n    <span class=\"mu-prompt-bar__icon\">▶</span>\n    <span class=\"mu-prompt-bar__title\">Want to try it yourself?</span>\n  </div>\n  <div class=\"mu-prompt-body\">\n    <p>Copy this and paste it into <strong>Claude Code</strong>, <strong>Cursor</strong>, or your favorite coding assistant:</p>\n  </div>\n  <div class=\"mu-prompt-code-wrap\">\n    <pre class=\"mu-prompt-code\">Clone <span class=\"hl-url\">https://github.com/666ghj/mirofish</span>, configure the .env with my LLM API key and a free Zep Cloud account, install dependencies with npm run setup:all, and run a test simulation with 20 agents reacting to this launch text: [paste your text here].</pre>\n  </div>\n  <div class=\"mu-prompt-foot\">\n    <p><strong>No coding knowledge required.</strong> The assistant handles installation, configuration, and testing.</p>\n  </div>\n</div>\n\n<h2>Using It in Real Marketing Work</h2>\n\n<p>So what does this actually get you if you work at an agency or as a freelancer? The typical scenario: a client wants to \"validate the message before investing in paid media.\" Translation: three weeks of surveys, an external market study, or your gut feeling dressed up as strategy.</p>\n<figure class=\"mu-captura\"><img src=\"https://soymarketingultra.com/wp-content/uploads/review-mirofish-simulacion-mercado-agentes-ia-app_video.png\" alt=\"MiroFish in action\" loading=\"lazy\" /><figcaption>MiroFish in action, frame from the <a href=\"https://www.youtube.com/watch?v=QmdCkaTM1P4\" rel=\"noopener\" target=\"_blank\">Tech With Tim video</a>.</figcaption></figure>\n\n<figure class=\"mu-captura\"><img src=\"https://soymarketingultra.com/wp-content/uploads/review-mirofish-simulacion-mercado-agentes-ia-app.png\" alt=\"MiroFish running\" loading=\"lazy\" /><figcaption>MiroFish running (screenshot from 2026-09-15).</figcaption></figure>\n\n<p>With MiroFish you could feed the simulation your landing page draft, the proposed price, and the ad copy. Generate 500 agents with varied profiles and see what comes out. We've already covered <a href=\"https://soymarketingultra.com/en/ai-agents-marketing/\">AI agents applied to marketing</a>: MiroFish goes a step further, because it simulates a complete social behavior pattern.</p>\n\n<p>My take: the useful part isn't taking the simulation at face value. It's the angles you hadn't seen. If 300 of your 500 agents react badly to the price but not the product, that's a signal. Not a truth, a signal. Anyone who confuses the two has a bigger problem than tool selection.</p>\n\n<h2>What They Don't Tell You</h2>\n\n<p>MiroFish agents are LLM prompts, not simulated people with real cognition. Each persona's \"opinion\" is what a language model predicts someone with that profile would say. Those profiles haven't lived through anything. What they return is a language model predicting which words follow other words. ONLY that. And that has a ceiling. Know it before making decisions based on what it returns.</p>\n\n<p>The cost: MiroFish is free, but every simulation consumes tokens from whatever API you've configured. A long simulation with hundreds of agents can send the bill soaring. The README itself recommends starting with fewer than 40 rounds.</p>\n\n<p>The setup isn't trivial. Two API keys, a specific Python environment (3.11-3.12, no other version works), Node.js, and uv. For a marketing professional without a technical team, this barrier is not a minor hurdle.</p>\n\n<p>And the license. AGPL-3.0 requires you to release any modifications you distribute under the same license. If an agency wants to embed MiroFish in its own product, check the legal implications before building anything.</p>\n\n<h2>What People Are Saying</h2>\n\n<p>On r/MiroFish, a user opens the debate by asking what the real barrier to using the tool is, putting the usual suspects on the table: setup complexity, documentation gaps, prompt design, and not knowing whether the output has any real quality. The path from \"I'll install it\" to \"it gives me something useful\" is longer than the README suggests.</p>\n<blockquote class=\"mku-social-proof\"><p>\"For most people I assume it is one of these: setup complexity cost unclear use cases documentation gaps prompt design not knowing how to evaluate output quality What is the real blocker for you right now? Would be useful to see whether the biggest problem is technical, conceptual\" <a href=\"https://www.reddit.com/r/MiroFish/comments/1rywzkl/what_is_the_biggest_barrier_to_using_mirofish/\" rel=\"noopener\" target=\"_blank\">srch4aheartofgold on Reddit</a></p></blockquote>\n\n<blockquote class=\"mku-social-proof\"><p>\"TL;DR: MiroFish spawns AI agents to predict things. Cool idea, but the agents hallucinate and they make up plausible justifications with zero evidence checking. I built Brain in the Fish , a Rust MCP server that fixes this with a Spiking Neural Network verification layer that mak\" <a href=\"https://www.reddit.com/r/SideProject/comments/1s1d169/i_built_the_brain_that_mirofish_was_missing_be/\" rel=\"noopener\" target=\"_blank\">Successful-Farm5339 on Reddit</a></p></blockquote>\n\n<blockquote class=\"mku-social-proof\"><p>\"TL;DR: MiroFish spawns AI agents to predict things. Cool idea, but the agents hallucinate and they make up plausible justifications with zero evidence checking. I built Brain in the Fish , a Rust MCP server that fixes this with a Spiking Neural Network verification layer that mak\" <a href=\"https://www.reddit.com/r/VibeCodersNest/comments/1s1zimc/a_brain_for_mirofish/\" rel=\"noopener\" target=\"_blank\">Successful-Farm5339 on Reddit</a></p></blockquote>\n\n<p>On r/SideProject, a developer built an entire project (\"Brain in the Fish\") to solve what he sees as MiroFish's core problem: that the agents \"fabricate plausible justifications with no evidence verification.\" When someone builds a whole tool to patch another tool's central hole, that tells you everything about how serious that limitation is.</p>\n\n<h2>Alternatives</h2>\n\n<p>MiroFish competes with the classics: in-person focus groups, quantitative surveys, and spreadsheet forecasting models. AI simulation wins on speed and cost. The alternatives win on something that can't be manufactured: real people with real opinions.</p>\n\n<p>As of today, there's nothing open-source with comparable traction. If you're after genuine validation, online surveys remain the most reliable and accessible option. MiroFish doesn't replace them, it precedes them as a cheap first filter.</p>\n\n<h2>Verdict</h2>\n\n<p>MiroFish's idea makes sense. The execution still has rough edges. The promise of simulating thousands of customers before launch sounds great, but what you're actually simulating is what an LLM thinks those customers would think. That's not the same thing.</p>\n\n<p>Is it worth trying? If you have the technical chops to set it up and the discipline not to confuse a simulation with a validation, yes. It makes complete sense as a cheap first filter before you commit serious budget. But nobody should mistake this for talking to real people, because it doesn't come close.</p>\n<script type=\"application/ld+json\" data-mku-schema=\"review\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"SoftwareApplication\",\"name\":\"MiroFish\",\"applicationCategory\":\"BusinessApplication\",\"url\":\"https://mirofish.ai/\",\"license\":\"AGPL-3.0\"}]}</script>",
 "markdown_url": "https://soymarketingultra.com/en/mirofish-ai-market-simulation.md"
}