MiroThinker

A deployable deep-research agent for complex web research, evidence gathering, and prediction tasks.

Stars
★ 8.4k
Last updated
7mo ago
License
Apache-2.0
Primary language
Python

At a glance

How it runs
CLI
Works with
Universal · cross-platformOpenAI API · Claude API
Cost
Free software; you pay for model usage
Setup effort
High · needs real infrastructure
You'll need
Python 3.10+uv package managerE2B API keySerper API keyJina API keysummary LLM endpointShell / CLINetwork accessLocal filesystemMCP Server
Typical use
A research analyst investigating a question across web sources can use the 1.7 single-agent configuration to search, extract evidence, and run supporting code.
Not a fit if
  • Individuals without GPUs or a model server who can only use hosted APIs
  • Teams unwilling to configure Serper, Jina, E2B and summary-model credentials
  • Integrators needing a stable HTTP service API rather than CLI and YAML workflows

What does this agent do, and when should you use it?

MiroThinker is an open-source deep-research agent project whose main runtime lives in apps/miroflow-agent and executes multi-step work through tool calls. The current 1.7 family has 30B and 235B variants with 256K context; its recommended single-agent configurations allow 200 or 300 turns while retaining the five most recent tool results. Its documented minimal stack combines Google search, webpage scraping and extraction, and E2B-based code execution and file operations. The repository also includes multi-run evaluation and progress-monitoring scripts for benchmarks including GAIA, BrowseComp, HLE, and FutureX, plus trace-collection scripts. Adoption requires operating or connecting to a model server and supplying several third-party API credentials.

From apps/miroflow-agent, a user launches main.py with llm, agent, and llm.base_url settings. Under mirothinker_1.7_keep5_max200, the main agent can use google_search from search_and_scrape_webpage, scrape_and_extract_info from jina_scrape_llm_summary, and tool-python functions including create_sandbox, run_command, run_python_code, and file upload/download operations. It searches the web, extracts information, runs code when needed, and returns an answer with sources. The keep_tool_result: 5 setting retains only the latest five tool responses while preserving the full thought-and-action sequence. Benchmark jobs run through scripts/run_evaluate_multiple_runs_*.sh and their logs can be inspected with scripts in benchmarks/check_progress/.

  1. A research analyst investigating a question across web sources can use the 1.7 single-agent configuration to search, extract evidence, and run supporting code.
  2. A research team reproducing agent results can launch the supplied multi-run evaluations for GAIA, BrowseComp, HLE, XBench-DeepSearch, or FutureX.
  3. A team with a self-hosted MiroThinker endpoint can serve a model through SGLang and pass that endpoint through llm.base_url.
  4. An engineering team comparing research workflows can run an initial task in the same framework with the documented Claude 3.7 or GPT-5 configurations.
  5. A developer preparing interaction data for SFT or DPO can run the corresponding trace-collection scripts under apps/collect-trace.

How do you install or deploy this agent?

Prerequisites are Python 3.10+, uv, and the minimal configuration credentials: SERPER_API_KEY, JINA_API_KEY, E2B_API_KEY, SUMMARY_LLM_BASE_URL, SUMMARY_LLM_MODEL_NAME, and SUMMARY_LLM_API_KEY. Run:

git clone https://github.com/MiroMindAI/MiroThinker
cd MiroThinker/apps/miroflow-agent
uv sync
cp .env.example .env

Then populate .env with those values. Benchmark evaluation additionally requires OPENAI_API_KEY; the repository documents its use for LLM-as-a-Judge and GAIA multimodal preprocessing.

How do you use this agent?

Start a model server first. The documented MiroThinker-1.7-mini SGLang example is:

NUM_GPUS=4
PORT=61002
AGENT_PATH=miromind-ai/MiroThinker-1.7-mini
python3 -m sglang.launch_server --model-path $AGENT_PATH --tp $NUM_GPUS --dp 1 --host 0.0.0.0 --port $PORT --trust-remote-code

Then, from apps/miroflow-agent, run:

uv run python main.py llm=qwen-3 agent=mirothinker_1.7_keep5_max200 llm.base_url=http://localhost:61002/v1

Edit task_description on line 32 of main.py to change the default question. For BrowseComp and BrowseComp-ZH evaluations, use mirothinker_1.7_keep5_max300; use the max200 configuration for the other listed 1.7 benchmarks.

What are this agent's strengths and limitations?

Pros
  • The 1.7 configurations combine a 256K context window with up to 300 tool interactions, which is specifically suited to long research trajectories.
  • Its minimal setup clearly defines the research toolchain: Serper search, Jina scraping and extraction, plus an E2B code and file sandbox.
  • The repository supplies runnable multi-benchmark evaluations, progress checks, and documented anti-contamination measures for evaluation trajectories.
  • The same framework documents runs with self-hosted MiroThinker as well as Claude 3.7 and GPT-5 configurations.
Limitations
  • The minimal deployment depends on Serper, Jina, E2B, and a summary-model endpoint, creating multiple credential, quota, and network dependencies.
  • Running MiroThinker-1.7 requires supplying a model server; the documented SGLang example uses four GPUs.
  • Benchmark evaluation adds an OpenAI API dependency, and GAIA multimodal tasks use GPT-4o to convert media into text.
  • The documented primary workflow is CLI- and YAML-driven; the supplied material does not document a stable end-user HTTP service API.

How does this agent compare with similar options?

The project documents Claude 3.7 and GPT-5 as alternative model configurations in the same MiroFlow workflow, whereas MiroThinker 1.7 runs through a self-hosted model server and its research-oriented tool configuration. Its README also places older benchmark results alongside reported results for OpenAI Deep Research, Gemini Deep Research, and Kimi-Researcher, but does not provide interchangeable deployment implementations for those alternatives.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
MiroThinker This agent 27 · Major gaps CLIFree + model costs ★ 8.4k 7mo ago Python OpenAI API · Claude API
Tongyi DeepResearch 49 · Major gaps CLIFree + model costs ★ 20k 8mo ago Python —
GPT Researcher 52 · Major gaps Library / SDKFree + model costs ★ 31k 26d ago Python Claude.ai · OpenAI API
Bright Data MCP 64 · Some gaps MCP serverFreemium ★ 2.7k 1d ago JavaScript Claude Code · Claude.ai

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
27/ 100 5-point scale 1.4 / 5
Trust 0/29
Reliability 3/14
Adaptability 6/18
Convention 10/18
Effectiveness 6/13
Verifiability 2/8
Why each dimension lost points
Trust0 / 29 · 0.0/5

Evidence shows no documentation on permission management, user confirmation, data flow transparency, sensitive data handling, dependency security, external effects, rollback, or source attribution. All trust criteria are unsupported, hence score 0.

Reliability3 / 14 · 1.1/5

Self-consistency: README has inconsistent performance numbers (e.g., 88.2 in description vs 74.0 in table) and versioning confusion, score 1. Dependency availability: Relies on external HuggingFace resources without version pinning or mirrors, score 1. Failure messages: No documentation on error handling or failure messages, score 0.

Adaptability6 / 18 · 1.7/5

Audience and scenarios: Clearly targets research tasks with multiple model sizes, score 2. Capability boundaries: Mentions max context and tool calls but lacks explicit limitations, score 1. Trigger precision: No trigger mechanism defined, score 0. Environment fit: Provides deployment options but lacks detailed environment requirements, score 1.

Convention10 / 18 · 2.8/5

Information architecture: README is well-structured with TOC and sections, score 2. Install notes: Provides quick start link but lacks detailed installation steps, score 1. Naming stability: Model names have version numbers but inconsistencies exist, score 2. Examples and FAQ: Provides FAQ link but no specific content, score 2. Known limitations: Not explicitly listed, score 1. License: Apache-2.0, score 2. Versioning and changelog: Has news updates but no formal changelog, score 2. Maintenance responsibility: No clear maintainer, score 1.

Effectiveness6 / 13 · 2.3/5

Output usability: No output format or examples provided, score 1. Marginal value: Offers multiple model sizes and benchmarks but lacks comparison with existing solutions, score 2. Cost-benefit: No cost information, score 1.

Verifiability2 / 8 · 1.3/5

Claim traceability: Performance claims have benchmark links but no reproduction details, score 1. Cross-source corroboration: Relies solely on self-reported results without independent verification, score 1. Fact-inference separation: No distinction between facts and inferences, score 0.

Risks and how to mitigate them
  • Not found in source: least-privilege scopingGrant only what the task needs: a dedicated account or read-only token, scoped to specific directories and repos.
  • Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
  • Not found in source: data-flow disclosureWatch which external services it contacts (proxy or firewall logs) and keep sensitive data out until you know where it goes.
  • Not found in source: sensitive-data handlingUse dedicated, low-privilege, revocable API keys — never production credentials — and keep secrets out of logs.
  • Not found in source: dependency securityPin versions and run a dependency audit (npm audit, pip-audit) before installing; prefer running it in a container.
  • Not found in source: disclosed external effectsEstablish which external systems it writes to, sends to or changes, and verify with test accounts or repos before production.
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • Not found in source: verifiable attributionInstall from the official repo or registry and check the publisher and URL to avoid look-alike packages.
  • Inconsistent performance numbers need verification.
  • No security or privacy documentation provided.
  • Reliance on external resources may affect availability.
Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision 1c4253f6774b
See the full review method →

FAQ

Which external services are required for the minimal setup?
Serper provides Google search, Jina provides webpage scraping and extraction, E2B provides the code and file sandbox, and a summary LLM endpoint handles content summarization.
Can I run the 30B model instead of the 235B model?
Yes. MiroThinker-1.7-mini is the 30B variant and is the model used in the documented SGLang example; MiroThinker-1.7 is the 235B variant.
Why are there max200 and max300 configurations for 1.7?
max200 is recommended for most tasks and the listed non-BrowseComp 1.7 benchmarks. The reproduction instructions specify max300 for BrowseComp and BrowseComp-ZH.
What should I check when an evaluation fails?
Confirm that you are in apps/miroflow-agent, have run uv sync, configured the required .env variables, and reviewed logs/ plus the relevant check_progress script.
View on GitHub ↗ Install ↓

Related agents