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.

usage
{
  "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 isStart withWhy
Interactive coding, chat, or a quick first reviewfuguDefault model balanced for latency and everyday work
Hard multi-step reasoning with published fixed ratesfugu-ultraFixed deep pool, budgetable rates
Cost-performance evaluation with flat token ratesfugu-maxFlat $2 / $6 / $0.25 rates with no long-context surcharge
Authorized defensive security or vulnerability researchfugu-cyberSpecialized model, pay-as-you-go, access-gated, sales-only pricing
Exclude a specific provider but keep a managed poolfuguOpt-outs are a Fugu feature, not an Ultra feature
Pin an exact Ultra version for reproducible experimentsfugu-ultra-v2.0The moving fugu-ultra alias can drift
Name every worker in an audit logSelf-managedOfficial FAQ says the routing map is not exposed
Serve EU or EEA production usersNeitherOfficial product availability restriction
Budget a fixed per-token cost in advancefugu-ultra or fugu-maxStandard 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.

client.py
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

This page describes documented behavior as of the October 14, 2026 recheck. Recheck the official Models endpoint before a 2026 production release.