Terminus-2: geospatial agent results
Harbor's stock terminal agent, open source. The model works in a terminal session: it reads the screen and types commands. It is the harness for models whose developer has no agent of its own. An agent is a harness plus a model: this page ranks every model we benchmark in Terminus-2 on GIS and Earth observation tasks, and shows how the same model does in other harnesses.
Made by Harbor, open source · Version 2.0.0, pinned · 27 models from 12 labs · 38 entries, 34 ranked
Overview
Best on the Geospatial Agent Index
- #1Kimi K3 (Reasoning)73
- #2GLM-5.3 (max)72
- #3DeepSeek V4 Flash (high)72
- #4DeepSeek V4 Pro (max)72
- #5Gemini 3.8 Flash (low)72
Geospatial Agent Index, Text only
Lowest cost
- #1gpt-oss-120b (low)$0.0046
- #2Gemini 3.1 Flash-Lite (minimal)$0.0066
- #3Nemotron 3.5 Super VL 120B (Reasoning)$0.0096
- #4Nemotron 3.5 Lightning 30B (Reasoning)$0.013
- #5gpt-oss-20b (high)$0.017
Cost per agent task, at list prices
Fastest
- #1gpt-oss-120b (low)0.5 min
- #2Gemini 3.1 Flash-Lite (minimal)0.6 min
- #3Mistral Large 3 (Non-reasoning)1.1 min
- #4GLM-5.2 (Non-reasoning)1.5 min
- #5Gemini 3.1 Flash-Lite (low)1.7 min
Time per agent task, at 100 output tokens/s
- In Terminus-2, the best entry is Kimi K3 (Reasoning), 25th of 83 entries on the Geospatial Agent Index, at 73.1.
- 11 of the models in Terminus-2 also run in another harness at the same reasoning level. Against the best other harness, Terminus-2 scores higher for 2, lower for 1 and within noise for 8.
- Still being benchmarked (provisional): Claude Sonnet 4.6 (high), Gemini 3.1 Pro (preview) (high), Gemini 3.1 Pro (preview) (low), Gemini 3.8 Flash (high).
Models
One per model
Geospatial Agent Index: every model in Terminus-2
Text only, 0 to 100 · Higher is better · one bar per model, at its best ranked reasoning level
How to read this chart
Bars. Every entry in Terminus-2 with a result, highlighted. Provisional: not yet ranked.
Data table: Geospatial Agent Index: every model in Terminus-2
Every reasoning level
Geospatial Agent Index: every entry in Terminus-2
Text only, 0 to 100 · Higher is better · every reasoning level
How to read this chart
Bars. Every entry in Terminus-2 with a result, highlighted. Provisional: not yet ranked.
Data table: Geospatial Agent Index: every entry in Terminus-2
Provisional, so not on the index chart: Gemini 3.1 Pro (preview) (high), Gemini 3.8 Flash (high), Claude Sonnet 4.6 (high), Gemini 3.1 Pro (preview) (low). Their finished evaluations are in the charts below.
Same model elsewhere
The models we benchmark in Terminus-2 and in another harness, at the same reasoning level: an agent is a harness plus a model, so the gap between the bars is the harness. Terminus-2 is highlighted; gaps under about 3 points are within noise.
gpt-oss-20b (high)
higher is better
Data table: gpt-oss-20b (high)
| Model | Developer | gpt-oss-20b (high) |
|---|---|---|
| gpt-oss-20b (high), Terminus-2 | OpenAI | 33 |
| gpt-oss-20b (high), Codex | OpenAI | 9 |
DeepSeek V4 Flash (high)
higher is better
Data table: DeepSeek V4 Flash (high)
| Model | Developer | DeepSeek V4 Flash (high) |
|---|---|---|
| DeepSeek V4 Flash (high), Terminus-2 | DeepSeek | 72 |
| DeepSeek V4 Flash (high), Codex | DeepSeek | 66 |
| DeepSeek V4 Flash (high), Claude Code | DeepSeek | 59 |
gpt-oss-120b (high)
higher is better
Data table: gpt-oss-120b (high)
| Model | Developer | gpt-oss-120b (high) |
|---|---|---|
| gpt-oss-120b (high), Terminus-2 | OpenAI | 46 |
| gpt-oss-120b (high), Codex | OpenAI | 43 |
GLM-4.7-Flash (Reasoning)
higher is better
Data table: GLM-4.7-Flash (Reasoning)
| Model | Developer | GLM-4.7-Flash (Reasoning) |
|---|---|---|
| GLM-4.7-Flash (Reasoning), Terminus-2 | Z.ai | 43 |
| GLM-4.7-Flash (Reasoning), Claude Code | Z.ai | 41 |
Kimi K2.6 (Reasoning)
higher is better
Data table: Kimi K2.6 (Reasoning)
| Model | Developer | Kimi K2.6 (Reasoning) |
|---|---|---|
| Kimi K2.6 (Reasoning), Kimi Code | Moonshot AI | 70 |
| Kimi K2.6 (Reasoning), Terminus-2 | Moonshot AI | 70 |
Kimi K2.7 Code (Reasoning)
higher is better
Data table: Kimi K2.7 Code (Reasoning)
| Model | Developer | Kimi K2.7 Code (Reasoning) |
|---|---|---|
| Kimi K2.7 Code (Reasoning), Kimi Code | Moonshot AI | 72 |
| Kimi K2.7 Code (Reasoning), Terminus-2 | Moonshot AI | 72 |
GLM-5.2 (max)
higher is better
Data table: GLM-5.2 (max)
| Model | Developer | GLM-5.2 (max) |
|---|---|---|
| GLM-5.2 (max), Claude Code | Z.ai | 74 |
| GLM-5.2 (max), Terminus-2 | Z.ai | 72 |
Kimi K3 (Reasoning)
higher is better
Data table: Kimi K3 (Reasoning)
| Model | Developer | Kimi K3 (Reasoning) |
|---|---|---|
| Kimi K3 (Reasoning), Kimi Code | Moonshot AI | 75 |
| Kimi K3 (Reasoning), Terminus-2 | Moonshot AI | 73 |
GLM-5.3 (max)
higher is better
Data table: GLM-5.3 (max)
| Model | Developer | GLM-5.3 (max) |
|---|---|---|
| GLM-5.3 (max), Claude Code | Z.ai | 74 |
| GLM-5.3 (max), Terminus-2 | Z.ai | 72 |
DeepSeek V4 Pro (high)
higher is better
Data table: DeepSeek V4 Pro (high)
| Model | Developer | DeepSeek V4 Pro (high) |
|---|---|---|
| DeepSeek V4 Pro (high), Codex | DeepSeek | 73 |
| DeepSeek V4 Pro (high), Terminus-2 | DeepSeek | 70 |
GLM-5.3-Flash (max)
higher is better
Data table: GLM-5.3-Flash (max)
| Model | Developer | GLM-5.3-Flash (max) |
|---|---|---|
| GLM-5.3-Flash (max), Claude Code | Z.ai | 72 |
| GLM-5.3-Flash (max), Terminus-2 | Z.ai | 63 |
By evaluation
Earth-Bench V2
higher is better
- Striped: provisional, not yet ranked
Data table: Earth-Bench V2
GeoBenchX
higher is better
Data table: GeoBenchX
GS-QA2
higher is better
Data table: GS-QA2
GeoAgentBench
higher is better
Data table: GeoAgentBench
GeoAnalystBench
higher is better
- Striped: provisional, not yet ranked
Data table: GeoAnalystBench
OGD4All
higher is better
Data table: OGD4All
| Model | Developer | OGD4All |
|---|---|---|
| MiniMax M3.1 Flash (max), Terminus-2 | MiniMax | 96 |
| Qwen 3.8 27B (xhigh), Terminus-2 | Alibaba (Qwen) | 96 |
| Muse Glimmer 30B (high), Terminus-2 | Meta | 95 |
| Mistral Large 4 (high), Terminus-2 | Mistral AI | 95 |
| Step 5 Preview (Reasoning), Terminus-2 | StepFun | 94 |
| Nemotron 3 Ultra (high), Terminus-2 | NVIDIA | 92 |
| Nemotron 3.5 Super VL 120B (Reasoning), Terminus-2 | NVIDIA | 91 |
| Nemotron 3.5 Lightning 30B (Reasoning), Terminus-2 | NVIDIA | 90 |
| Nemotron 3 Nano Omni 30B (Reasoning), Terminus-2 | NVIDIA | 47 |
GeoNatureAgent
higher is better
Data table: GeoNatureAgent
| Model | Developer | GeoNatureAgent |
|---|---|---|
| MiniMax M3.1 Flash (max), Terminus-2 | MiniMax | 100 |
| Mistral Large 4 (high), Terminus-2 | Mistral AI | 100 |
| Muse Glimmer 30B (high), Terminus-2 | Meta | 100 |
| Qwen 3.8 27B (xhigh), Terminus-2 | Alibaba (Qwen) | 100 |
| Nemotron 3.5 Super VL 120B (Reasoning), Terminus-2 | NVIDIA | 92 |
| Nemotron 3 Ultra (high), Terminus-2 | NVIDIA | 92 |
| Step 5 Preview (Reasoning), Terminus-2 | StepFun | 88 |
| Nemotron 3.5 Lightning 30B (Reasoning), Terminus-2 | NVIDIA | 64 |
| Nemotron 3 Nano Omni 30B (Reasoning), Terminus-2 | NVIDIA | 0 |
MultiGlobeQA
higher is better
Data table: MultiGlobeQA
| Model | Developer | MultiGlobeQA |
|---|---|---|
| Qwen 3.8 27B (xhigh), Terminus-2 | Alibaba (Qwen) | 74 |
| Step 5 Preview (Reasoning), Terminus-2 | StepFun | 73 |
| Nemotron 3.5 Super VL 120B (Reasoning), Terminus-2 | NVIDIA | 73 |
| Muse Glimmer 30B (high), Terminus-2 | Meta | 72 |
| MiniMax M3.1 Flash (max), Terminus-2 | MiniMax | 72 |
| Nemotron 3 Ultra (high), Terminus-2 | NVIDIA | 72 |
| Mistral Large 4 (high), Terminus-2 | Mistral AI | 71 |
| Nemotron 3.5 Lightning 30B (Reasoning), Terminus-2 | NVIDIA | 68 |
| Nemotron 3 Nano Omni 30B (Reasoning), Terminus-2 | NVIDIA | 48 |
GeoAgentEval
higher is better
Data table: GeoAgentEval
| Model | Developer | GeoAgentEval |
|---|---|---|
| Mistral Large 4 (high), Terminus-2 | Mistral AI | 92 |
| Muse Glimmer 30B (high), Terminus-2 | Meta | 92 |
| Qwen 3.8 27B (xhigh), Terminus-2 | Alibaba (Qwen) | 92 |
| Nemotron 3 Ultra (high), Terminus-2 | NVIDIA | 92 |
| Step 5 Preview (Reasoning), Terminus-2 | StepFun | 91 |
| MiniMax M3.1 Flash (max), Terminus-2 | MiniMax | 83 |
| Nemotron 3.5 Super VL 120B (Reasoning), Terminus-2 | NVIDIA | 80 |
| Nemotron 3 Nano Omni 30B (Reasoning), Terminus-2 | NVIDIA | 48 |
| Nemotron 3.5 Lightning 30B (Reasoning), Terminus-2 | NVIDIA | 36 |
Cost
Cost per task
Average cost per agent task (USD) · Lower is better
- Striped: provisional, not yet ranked
How to read this chart
What cost is measuring. What one attempt at a task would cost if paid token by token at the provider's published API prices, averaged over attempts: ordinary input tokens, input tokens served from the provider's cache at the lower cached price, tokens written to the cache where the provider charges for that, and output tokens (thinking included). Cost assumes each harness uses the model's pay-per-token API, priced at public list rates; sandboxes and our own engineering time are not included. Failed attempts count too.
How to read this chart. Lower is better. Costs are pay-per-token list prices, not any discount or credit a customer might have.
Bars. Every entry in Terminus-2 with a result, highlighted. Provisional: not yet ranked.
Data table: Cost per task
Geospatial Agent Index vs. cost per task
Geospatial Agent Index, Text only; cost per task (USD) · Higher and further left is better
- Most attractive quadrant
- Pareto line
How to read this chart
Why a log scale. Costs and times differ by a factor of ten or more between models, so equal steps on the axis are equal ratios.
What cost is measuring. What one attempt at a task would cost if paid token by token at the provider's published API prices, averaged over attempts: ordinary input tokens, input tokens served from the provider's cache at the lower cached price, tokens written to the cache where the provider charges for that, and output tokens (thinking included). Cost assumes each harness uses the model's pay-per-token API, priced at public list rates; sandboxes and our own engineering time are not included. Failed attempts count too.
How to read this chart. Each point is one entry. Further left means a lower average cost per task (log scale); higher means a higher Geospatial Agent Index. Both axes fit the models shown, so the score axis does not start at zero. The shaded most attractive quadrant is the top-left quarter of the plot, split at the middle of each axis: a reading aid that moves with the axes when you change the models shown, not a fixed bar. The dotted Pareto line joins the shown models that no cheaper shown model beats on score.
Data table: Geospatial Agent Index vs. cost per task
Time
Time per task
Average minutes per agent task, at 100 output tokens/s · Lower is better
- Striped: provisional, not yet ranked
How to read this chart
What this metric means. Time as if every model wrote 100 output tokens per second: output tokens divided by 100, plus the time the agent's commands took. Serving speed differs between providers and is not ranked.
Bars. Every entry in Terminus-2 with a result, highlighted. Provisional: not yet ranked.
Data table: Time per task
Geospatial Agent Index vs. time per task
Geospatial Agent Index, Text only; time per task (minutes) · Higher and further left is better
- Most attractive quadrant
- Pareto line
How to read this chart
Why a log scale. Costs and times differ by a factor of ten or more between models, so equal steps on the axis are equal ratios.
What this metric means. Time as if every model wrote 100 output tokens per second: output tokens divided by 100, plus the time the agent's commands took. Serving speed differs between providers and is not ranked.
How to read this chart. Each point is one entry. Further left means a lower average time per task (log scale); higher means a higher Geospatial Agent Index. Both axes fit the models shown, so the score axis does not start at zero. The shaded most attractive quadrant is the top-left quarter of the plot, split at the middle of each axis: a reading aid that moves with the axes when you change the models shown, not a fixed bar. The dotted Pareto line joins the shown models that no faster shown model beats on score.
Data table: Geospatial Agent Index vs. time per task
Every benchmark
Score by benchmark
Share answered correctly, 0 to 100 · Darker is better; hatched: provisional, evaluation not finished
Data table: Score by benchmark
| Model | Status | Earth-Bench V2 | GeoBenchX | GS-QA2 | GeoAgentBench | GeoAnalystBench | OGD4All | GeoNatureAgent | MultiGlobeQA | GeoAgentEval | Earth-Bench V2 images | ThinkGeo images | Geospatial knowledge |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kimi K3 (Reasoning), Terminus-2 | Ranked | 75 | 64 | 80 | 94 | 89 | No data | No data | No data | No data | 66 | 30 | 92 |
| GLM-5.3 (max), Terminus-2 | Ranked | 67 | 68 | 83 | 94 | 84 | No data | No data | No data | No data | No data | No data | 92 |
| DeepSeek V4 Flash (high), Terminus-2 | Ranked | 73 | 65 | 79 | 94 | 89 | No data | No data | No data | No data | No data | No data | 91 |
| DeepSeek V4 Pro (max), Terminus-2 | Ranked | 69 | 67 | 80 | 96 | 100 | No data | No data | No data | No data | No data | No data | 92 |
| Gemini 3.8 Flash (low), Terminus-2 | Ranked | 54 | 76 | 86 | 98 | 95 | No data | No data | No data | No data | 66 | 34 | 94 |
| Kimi K2.7 Code (Reasoning), Terminus-2 | Ranked | 70 | 63 | 82 | 92 | 89 | No data | No data | No data | No data | 56 | 31 | 92 |
| GLM-5.2 (max), Terminus-2 | Ranked | 68 | 67 | 80 | 94 | 95 | No data | No data | No data | No data | No data | No data | 89 |
| GLM-5.2 (high), Terminus-2 | Ranked | 68 | 67 | 78 | 94 | 100 | No data | No data | No data | No data | No data | No data | 91 |
| DeepSeek V4 Pro (high), Terminus-2 | Ranked | 68 | 65 | 77 | 96 | 100 | No data | No data | No data | No data | No data | No data | 92 |
| Kimi K2.6 (Reasoning), Terminus-2 | Ranked | 68 | 64 | 77 | 90 | 79 | No data | No data | No data | No data | 60 | 28 | 92 |
| DeepSeek V4 Flash (max), Terminus-2 | Ranked | 67 | 62 | 80 | 96 | 95 | No data | No data | No data | No data | No data | No data | 91 |
| GLM-5.3 (low), Terminus-2 | Ranked | 62 | 64 | 80 | 92 | 95 | No data | No data | No data | No data | No data | No data | 91 |
| Nemotron 3 Ultra (high), Terminus-2 | Ranked | 69 | 65 | 70 | 96 | 63 | 92 | 92 | 72 | 92 | No data | No data | 91 |
| Qwen 3.8 27B (xhigh), Terminus-2 | Ranked | 54 | 67 | 79 | 62 | 89 | 96 | 100 | 74 | 92 | 69 | 37 | 91 |
| Muse Glimmer 30B (high), Terminus-2 | Ranked | 60 | 61 | 70 | 79 | 58 | 95 | 100 | 72 | 92 | No data | No data | No data |
| GLM-5.2 (Non-reasoning), Terminus-2 | Ranked | 58 | 60 | 72 | 92 | 74 | No data | No data | No data | No data | No data | No data | 89 |
| GLM-5.3-Flash (low), Terminus-2 | Ranked | 56 | 58 | 76 | 94 | 95 | No data | No data | No data | No data | 56 | 36 | 85 |
| GLM-5.3-Flash (max), Terminus-2 | Ranked | 51 | 57 | 80 | 84 | 84 | No data | No data | No data | No data | 53 | 35 | 92 |
| Mistral Large 4 (high), Terminus-2 | Ranked | 50 | 59 | 79 | 80 | 94 | 95 | 100 | 71 | 92 | No data | No data | No data |
| Gemini 3.1 Flash-Lite (high), Terminus-2 | Ranked | 53 | 61 | 55 | 70 | 58 | No data | No data | No data | No data | 52 | 24 | 90 |
| Gemma 4 26B A4B (Reasoning), Terminus-2 | Ranked | 46 | 63 | 58 | 86 | 63 | No data | No data | No data | No data | 64 | 22 | 89 |
| MiniMax M3.1 Flash (max), Terminus-2 | Ranked | 41 | 46 | 71 | 88 | 47 | 96 | 100 | 72 | 83 | No data | No data | 89 |
| Nemotron 3.5 Super VL 120B (Reasoning), Terminus-2 | Ranked | 46 | 53 | 59 | 68 | 37 | 91 | 92 | 73 | 80 | No data | No data | 92 |
| Step 5 Preview (Reasoning), Terminus-2 | Ranked | 60 | 18 | 79 | 84 | 89 | 94 | 88 | 73 | 91 | No data | No data | 92 |
| Gemini 3.1 Flash-Lite (low), Terminus-2 | Ranked | 43 | 51 | 49 | 52 | 63 | No data | No data | No data | No data | 54 | 15 | 90 |
| gpt-oss-120b (high), Terminus-2 | Ranked | 50 | 45 | 42 | 70 | 53 | No data | No data | No data | No data | No data | No data | 90 |
| GLM-4.7-Flash (Reasoning), Terminus-2 | Ranked | 44 | 42 | 43 | 42 | 37 | No data | No data | No data | No data | No data | No data | 86 |
| gpt-oss-20b (high), Terminus-2 | Ranked | 32 | 38 | 30 | 53 | 37 | No data | No data | No data | No data | No data | No data | 85 |
| Mistral Large 3 (Non-reasoning), Terminus-2 | Ranked | 31 | 29 | 39 | 46 | 47 | No data | No data | No data | No data | 52 | 15 | 89 |
| Gemini 3.1 Flash-Lite (minimal), Terminus-2 | Ranked | 34 | 44 | 18 | 42 | 42 | No data | No data | No data | No data | 56 | 26 | 89 |
| gpt-oss-120b (low), Terminus-2 | Ranked | 28 | 37 | 29 | 60 | 47 | No data | No data | No data | No data | No data | No data | 88 |
| Nemotron 3 Nano Omni 30B (Reasoning), Terminus-2 | Ranked | 31 | 23 | 9 | 28 | 16 | 47 | 0 | 48 | 48 | No data | No data | 85 |
| Nemotron 3.5 Lightning 30B (Reasoning), Terminus-2 | Ranked | 16 | 20 | 4 | 10 | 32 | 90 | 64 | 68 | 36 | No data | No data | 90 |
| Llama 3.3 70B (Non-reasoning), Terminus-2 | Ranked | 9 | 6 | 10 | 8 | 0 | No data | No data | No data | No data | No data | No data | 82 |
| Gemini 3.1 Pro (preview) (high), Terminus-2 | Provisional | 59 (provisional) | 73 | No data | 86 | 95 | No data | No data | No data | No data | No data | No data | No data |
| Gemini 3.8 Flash (high), Terminus-2 | Provisional | 48 (provisional) | 68 | No data | 88 | 58 | No data | No data | No data | No data | No data | No data | No data |
| Claude Sonnet 4.6 (high), Terminus-2 | Provisional | 59 (provisional) | 57 | No data | 96 | 100 | No data | No data | No data | No data | No data | No data | 98 |
| Gemini 3.1 Pro (preview) (low), Terminus-2 | Provisional | 41 (provisional) | 74 | No data | 84 | 79 | No data | No data | No data | No data | No data | No data | No data |
About Terminus-2
- Made by
- Harbor, open source
- What it is
- Harbor's stock terminal agent, open source. The model works in a terminal session: it reads the screen and types commands. It is the harness for models whose developer has no agent of its own.
- Version
- 2.0.0, the same pinned build for every run
- Models we run in it
- 27 from Moonshot AI, Z.ai, DeepSeek, Google, NVIDIA, Alibaba (Qwen), Meta, Mistral AI, MiniMax, StepFun, OpenAI, Anthropic
- How we run it
- The same tasks, limits and checks as every other harness: only the agent program changes. Methodology.
