Agent guide
Fugu AI: what the agent does and how to choose a model
The word "agent" hides the real mechanism. Fugu is a coordinator over a pool of models, not a single tuned chatbot. This page is the operational view: what it does, how the orchestration is billed, and the selection table that picks Fugu, Ultra, Max, or Cyber for your workload.
1. What the Fugu agent actually does
Fugu AI is Sakana AI's multi-agent model family, delivered as a single OpenAI-compatible API. Each request is answered by a small team of specialized agents that Fugu coordinates and synthesizes into one response: fugu for speed, fugu-ultra for depth, fugu-max for cost-performance, and fugu-cyber for defensive security.
Fugu is a learned multi-agent system. A request can be answered directly or routed across a small team, then synthesized into one response. The orchestration is learned rather than defined by a workflow you maintain. That is the core trade: less workflow code for you, less control over the path.
Coding and review
The default fugu model is positioned for interactive coding, chat, normal reviews, and a first evaluation pass. It balances quality against latency.
Multi-step reasoning
fugu-ultra handles difficult reasoning where quality is worth added time and cost, drawing on a fixed deep agent pool. fugu-max instead orchestrates the largest pool at flat published rates for cost-sensitive work.
Defensive security
fugu-cyber is for authorized security analysis, vulnerability research, and threat investigation, on pay-as-you-go billing after a reviewed access request.
What it is not
It is not a deterministic workflow engine. The FAQ says you cannot see which underlying models answered, and routing details are proprietary.
Official product copy says Fugu can exclude specific providers or models from its pool, while Ultra and Max use fixed pools. New public frontier models are expected to take roughly two weeks of training and evaluation before a Fugu update. That means the behavior you measured can drift on the vendor's schedule, not yours.
2. The orchestration mechanism, in six constraints
- Fugu coordinates a pool of models through a single OpenAI-compatible (and Anthropic Messages-compatible) interface.
- Fugu allows provider or model opt-outs from its pool; Ultra and Max use fixed pools with no opt-outs.
- Current docs describe Ultra and Max as fixed pools and no longer state an exact agent count.
- Routing details are proprietary and not exposed to the caller.
- Orchestration work produces extra billable tokens on Ultra and Cyber.
- New frontier models take roughly two weeks of training and evaluation before a Fugu update.
If your audit requirement is "name every worker," the answer is a self-managed graph, not a different Fugu temperature. See Fugu versus self-managed orchestration for the decision rules.
3. Orchestration tokens are extra work you pay for
OpenAI-shaped field names make it tempting to treat every token_details entry the same way. The ordinary cached_tokens subset does behave like OpenAI — it is already inside input_tokens — but official Sakana pricing says the orchestration fields are additional real usage billed at the matching input, cached, or output rate.
{
"input_tokens": 120,
"output_tokens": 80,
"total_tokens": 200,
"input_tokens_details": {
"cached_tokens": 0,
"orchestration_input_tokens": 450,
"orchestration_input_cached_tokens": 100
},
"output_tokens_details": {
"orchestration_output_tokens": 220
}
}
Uncached input = (input_tokens − cached_tokens) + (orchestration_input_tokens − orchestration_input_cached_tokens)
Billable cached input = cached_tokens + orchestration_input_cached_tokens
Billable output = output_tokens + orchestration_output_tokens
Estimate = uncached input/1M × input rate + cached input/1M × cached rate + output/1M × output rate
Each cached field is a subset of its own input total — cached_tokens of input_tokens, orchestration_input_cached_tokens of orchestration_input_tokens — so subtract before applying the full input rate and reject any count that exceeds its input. Only the orchestration input and output fields are extra outside the ordinary request counts.
Ultra's published standard rates on October 14, 2026 are $5 input, $0.50 cached, and $30 output per million tokens, rising above 272K request context to $10 / $1.00 / $45. Fugu Max is flat at $2 input / $0.25 cached / $6 output at any context length, so no threshold adjustment applies to it. The 272K threshold is per request, not a monthly total. Walk the arithmetic in orchestration token accounting.
4. Fugu versus Ultra versus Max versus Cyber: the selection table
Each row is a decision you can actually make before writing a request. Where a row says "not Fugu," the reason is a documented product rule, not a quality ranking.
| If your requirement is | Start with | Why |
|---|---|---|
| Interactive coding, chat, or a quick first review | fugu | Default model balanced for latency and everyday work |
| Hard multi-step reasoning with published fixed rates | fugu-ultra | Fixed deep pool, budgetable rates |
| Cost-performance evaluation with flat token rates | fugu-max | Flat $2 / $6 / $0.25 rates with no long-context surcharge |
| Authorized defensive security or vulnerability research | fugu-cyber | Specialized model, pay-as-you-go, access-gated, sales-only pricing |
| Exclude a specific provider but keep a managed pool | fugu | Opt-outs are a Fugu feature, not an Ultra feature |
| Pin an exact Ultra version for reproducible experiments | fugu-ultra-v2.0 | The moving fugu-ultra alias can drift |
| Name every worker in an audit log | Self-managed | Official FAQ says the routing map is not exposed |
| Serve EU or EEA production users | Neither | Official product availability restriction |
| Budget a fixed per-token cost in advance | fugu-ultra or fugu-max | Standard Fugu billing is route-dependent, not a single rate |
The model chooser encodes region, routing visibility, and workload into the same rule-based recommendation, including the "do not use Fugu here" outcome.
5. Responses API essentials
Sakana AI recommends the Responses API for new integrations, especially for tools, multimodal input, reasoning controls, and function calls. The request shape is familiar, but several fields do not behave the OpenAI way.
import os
from openai import OpenAI
api_key = os.environ["FUGU_API_KEY"]
base_url = os.environ["FUGU_BASE_URL"].rstrip("/")
if not base_url.endswith("/v1"):
base_url += "/v1"
client = OpenAI(api_key=api_key, base_url=base_url, timeout=120.0, max_retries=2)
response = client.responses.create(
model="fugu-ultra",
instructions="Find correctness risks first. State uncertainty explicitly.",
input="Review this migration for rollback risks.",
max_output_tokens=2000,
)
print(response.output_text)
print(response.usage)
temperature and parallel_tool_calls
Accepted but ignored on Responses. Do not expose them as quality controls.
previous_response_id
Not accepted. Send the full conversation history in input.
max_output_tokens on Ultra
Limits the final model output, not the orchestrator's own maximum. It is not a complete spend cap.
reasoning.effort
Supports high, xhigh, and max; the last two are aliases. Default is xhigh for Ultra, high for Fugu.
Built-in web search
Supported through the Responses tool shape ({"type": "web_search"}); advanced options are not supported. On Fugu Max these calls run through internal tools billed at $0.007 each.
Complete client setup and streaming guidance are on the API quickstart.
6. Diagnose failures before you retry
401 or 403
Check the key is present, active, and tied to the intended billing mode. For Cyber, confirm access was approved. Never log the secret.
Model not found
Call GET /v1/models with the same key and base URL. Fail startup on a missing ID instead of silently switching models.
EU or EEA users cannot connect
Official availability is a stop, not a timeout. Do not proxy around a published regional restriction.
Unexpected cost
Compare the full usage object with the pricing formula. Check orchestration fields and whether the request crossed 272K context.
Looks right but is wrong
Do not retry the same prompt. Save the model ID, prompt, tools, and usage object, then score with the evaluation playbook.
The full failure tree is on the troubleshooting page.
Frequently asked questions
What is Fugu AI?
Fugu AI is Sakana AI's multi-agent model family delivered through one OpenAI-compatible API. The four members are fugu (the fast default), fugu-ultra (quality-first reasoning), fugu-max (cost-performance), and fugu-cyber (defensive security).
Is "Fugu AI" one model or a family?
It is a family. fugu is the default member, with fugu-ultra, fugu-max, and fugu-cyber as separate models with distinct rules. sakana-namazu is a separate Japanese-specialized model outside the Fugu family.
Does Ultra always beat Fugu?
No, and it is the wrong question now that Fugu Max exists. Ultra is positioned for peak quality, Fugu for latency, and Max for cost-performance, and they are scored on overlapping but different benchmark sets. Decide with a blind comparison on your own tasks.
How do I stop Fugu from using a provider I cannot accept?
On the default fugu model, use the console-side provider or model opt-out. Ultra's pool is fixed and does not offer opt-outs.
Where do I find the current model IDs?
On the Models page of the Sakana console, or at runtime with GET /v1/models. Cyber appears only for eligible pay-as-you-go keys.
Sources and verification boundary
- Sakana AI Models documentation: IDs, pool behavior, supported fields, and usage shape
- Sakana AI Pricing documentation: Ultra and Max rates and orchestration field billing
- Sakana AI Fugu product page: agent behavior, opt-outs, and update cadence
This page describes documented behavior as of the October 14, 2026 recheck. Recheck the official Models endpoint before a 2026 production release.