Skip to main content
Meerkat keeps one session and runtime model across Anthropic, OpenAI, Gemini, and configured self-hosted servers. Provider independence does not erase model differences: the selected catalog profile controls context limits, output limits, multimodal input, reasoning options, realtime support, provider-native tools, and the effective tool surface. Query the effective catalog instead of inferring capabilities from a model name:
The same catalog is available through JSON-RPC models/catalog, REST GET /models/catalog, and MCP meerkat_models_catalog. Configured self-hosted aliases appear beside built-in models.

Current Defaults

A catalog entry describes Meerkat’s supported capability contract, not the entitlement of a particular API organization, ChatGPT workspace, cloud deployment, or OAuth account. If gpt-6-astra is unavailable to the active OpenAI account, explicitly select gpt-5.5 or set a compatible binding default_model. Catalog-default changes alone do not migrate arbitrary configured models or binding defaults. The CLI has a separate, narrow built-in OAuth repair.
During interactive login, or read preparation when a matching stored token exists, the CLI can replace a built-in OAuth binding’s default_model with the provider’s current catalog default. This applies only to the following reserved global binding/backend/auth profile IDs and frozen legacy values: This is not a generic catalog migration: other binding IDs and other pins, including gpt-5.5, are not rewritten by this repair. A matching legacy value has no provenance marker distinguishing an old CLI sample from an operator pin. The replacement still requires account entitlement.

Provider Setup

The tables below are selected recommendations, not the exhaustive catalog. Use rkat models for every supported ID and its current limits.

GPT-6 Astra: Initial Responses Support

Meerkat supports ordinary Astra Responses requests: text/image input, text output, application function calls, and the existing provider-native web-search path. Its 1,050,000-token context has a distinct 922,000-token input ceiling and a 128,000-token output ceiling (including reasoning). Context-budget projections apply the input ceiling in addition to the output reserve; estimated context pressure is not exact provider token accounting. Supported reasoning efforts are low, medium, high, xhigh, and max. none, temperature, top_p, and log-probability controls are unsupported. Astra does not support the Realtime endpoint; it cannot back live/*. For compatibility, existing OpenAI temperature and generic top_p settings remain omitted from provider requests rather than gaining a new rejection policy. Unsupported reasoning efforts and log-probability fields fail the existing typed validation. store: false remains the default. Assistant-item commentary and final_answer phases, supported output order, and terminal encrypted reasoning associated with assistant output survive transcript persistence and input replay. The existing orphan-only compatibility rule remains: replay strips reasoning from an assistant message with no replayable text, assistant item, or tool output, even if that reasoning is encrypted. An empty identified assistant item still counts as output. Provider response and item IDs are continuity metadata, never Meerkat session identity. misalignment_policy_violation is a typed terminal policy stop, not an authentication error: Meerkat does not refresh credentials, retry, switch providers, or reset the conversation to evade it. This integration does not enable async/pending provider tools, early tool dispatch, Responses WebSocket steering, configuration_update, tool search, programmatic calling, new hosted tools/MCP/connectors, provider multi-agent orchestration, provider compaction/conversations, or background responses. Unsupported output execution semantics fail explicitly; additive inert metadata does not disable established behavior. Direct OpenAI support does not establish Astra availability on Azure, Copilot, ChatGPT OAuth, or a custom endpoint. See OpenAI’s model contract, reasoning and phase guidance, and misalignment monitoring.

Environment Credential Precedence

RKAT_* variables let Meerkat use dedicated credentials without taking over keys used by other tools. If public OpenAI and only unprefixed Azure variables are both present, public OpenAI wins. Setting either prefixed Azure selector makes a complete Azure key/endpoint pair the OpenAI environment default. Environment credentials are synthesized as a typed ephemeral binding and go through the same provider runtime resolver as configured bindings.

Public OpenAI API Versus ChatGPT OAuth

OpenAI has separate backend/auth pairs: These are not interchangeable credential paths. A model ID available to an API organization may be unavailable to a ChatGPT workspace, and vice versa. rkat models reports the Meerkat catalog, not account entitlement. Keep a binding’s backend, auth method, and default model aligned. Copilot is also available beneath the Anthropic and Gemini provider families. Those routes share one account-scoped credential while preserving the model’s provider identity and selecting the account-advertised wire dialect. Model entitlement is therefore an account observation, never a fixed property of the Meerkat model registry. See Auth for the full backend/auth compatibility matrix.

Model And Provider Resolution

The effective model registry is the built-in catalog plus configured custom and self-hosted entries. Provider resolution uses exact registry ownership, not name prefixes.
  • An explicit model wins.
  • An explicit provider constrains every omitted-model choice.
  • An explicit binding infers and validates its provider; its default_model wins when the model is omitted.
  • Otherwise Meerkat checks compatible configured defaults and then the provider/global catalog default.
  • A known provider/model mismatch fails before agent construction.
  • An uncataloged model needs an explicit typed provider/binding owner; a name that merely begins with gpt- or claude- is never guessed.
All public session-creation surfaces use the same resolver. Inherited bindings retain the realm that owns their config. Rust applications can select only the provider adapters they use:
Cargo features are additive across the dependency graph; another dependency can still enable additional provider features.

Capability-Gated Projection

The durable session transcript remains provider-neutral and ordered. Each adapter projects that transcript and the effective tool surface to its wire format:
  • unsupported multimodal blocks or tools are rejected or hidden according to the model profile;
  • system instructions remain ordered, and a limited provider projection fails when it cannot represent their positions without changing meaning;
  • a model switch or fallback recomputes context/output limits and tool visibility from the newly selected catalog profile.
The transcript itself is not rewritten merely because a different provider wire has stricter placement rules.

Provider Parameters

Use --param for common top-level parameters such as temperature. Use the typed provider_params.provider_tag envelope for provider-specific fields:
Anthropic also supports top_k and the prompt-cache policies automatic (the default on the Anthropic API, Vertex, and Foundry), system_prefix, system_and_conversation, and disabled, plus cache_ttl (5m, the default, or 1h). Bedrock and Copilot do not accept automatic caching: they default to disabled and reject an explicit automatic locally. In a mob profile or AgentBuildConfig the same knobs nest under provider_tag:
A flat provider_params = { cache_control = "disabled" } fails the whole definition parse: ProviderParamsOverride and AnthropicProviderTag are both deny_unknown_fields, so the misplaced key is rejected before the agent boots.
Provider-native web search is enabled by default for catalog models that support it. Disable the relevant provider_tools.<provider> toggle in config or use rkat run --no-web-search for one run.

Model Fallback

Runtime model fallback is disabled by default. Operators must explicitly enable it and provide a non-empty ordered chain; catalog defaults are never a chain:
Fallback activates only when generated recovery authority classifies the failure as recoverable and the core loop determines that switching is pre-stream safe. The default triggers are capacity and provider unavailability, after three failed attempts. Transport and empty output do not migrate by default, and a switch is suppressed after visible text or reasoning. An accepted switch is sticky for later turns and recovery. Meerkat re-resolves credentials, output limits, context limits, provider parameters, and tool visibility for the target. Actual materialized context, output reserve, tool/modality/structured-output parity, and credential authority must pass both selection and precommit admission. Cross-provider targets without opt-in and targets with unavailable credentials are typed skips, not fatal configuration errors; malformed configuration and credential-store faults still surface. New fallback-origin unsafe resumes require explicit reconfiguration. Older sticky routes have no proven fallback provenance and are not automatically healed. See fallback configuration for precedence and deferred migration boundaries. Ordinary same-model retry is separate. Genuinely unknown provider failures now consume the existing bounded retry budget, while explicit terminal classes remain non-retryable.

Image Generation

The generate_image builtin routes independently of the active chat model: Generated bytes are stored as realm blobs and can be fetched through CLI, RPC, MCP, or SDK blob methods. REST responses carry blob references but the current REST router does not expose a blob-byte fetch route. See Image generation for the request shape.

Rust Provider Features

The meerkat facade enables anthropic, openai, and gemini by default. Use all-providers as a convenience alias or disable default features and select only the provider/storage capabilities your embedded build needs. Shipped CLI/RPC/REST/MCP binaries use product feature sets rather than the minimal library profile.

See Also