Skip to content
cccskills
FreePublished on GitHub

agent-engines

Inspect the AI engine and model powering an agent, test provider connectivity and API keys, and configure available models. For teams that need a different model provider or a custom engine, it also explains how engine registration and organization settings work.

OriginalShow the original description

How to inspect and configure the AI engine (model provider) powering the agent. Use when the user asks to switch models, check which engine is active, test a new provider, or register a custom engine.

BuilderIO/agent-native7,526 stars(GitHub 7,526 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Checking the active model provider
  • Testing a provider key or connection
  • Switching the organization’s default model
  • Registering a custom AI engine

Files included (1)

  • SKILL.md11.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Agent Engines

Overview

The framework supports pluggable AI engines beneath the agent loop. The Anthropic engine is the default and best-in-class path (Claude models). Additional engines can be added via the Vercel AI SDK (OpenAI, Google Gemini, Groq, Mistral, Cohere, Ollama).

Available Tools

ToolPurpose
list-agent-enginesList all registered engines, their capabilities, the current selection, and whether you can change the organization default (canUpdateDefault)
set-agent-engineSet the organization's default engine and model (owners and admins only)
test-agent-engineSend a trivial prompt to verify the engine works (connectivity + API key)
check-provider-keyCheck a provider API key by listing the models it reaches, before saving it
get-provider-modelsRead which models each provider shows in the model picker and default-model select
manage-provider-modelsChoose those models (set) or go back to the recommended ones (reset)
list-model-providersWhat Settings › Model shows: each provider's organization and personal key (masked), rejections, the restriction, and the stored default

Checking the Current Engine

list-agent-engines

Returns the registry of all engines (name, label, capabilities, supported models) plus the currently active engine and model. supportedModels is what the model picker offers: the provider's checked models when modelSelection.state is "selected", otherwise its recommendedModels. credentialRejected: true means the provider rejected that engine's saved key (credentialRejectedAt says when); chats with it stop until the key is replaced, so tell the user.

Switching Engines

set-agent-engine --engine "ai-sdk:openai" --model "gpt-4o"

Changes take effect on the next conversation. The default belongs to the organization (the agent-engine org setting), and only owners and admins can change it. A member's call is refused with an error to relay: ask an owner or admin, or pick a model for this chat in the model picker. A user with no organization sets their own default.

Resolution order (highest priority first):

  1. Explicit engine option passed to createAgentChatPlugin() in the server plugin
  2. The organization's default (agent-engine org setting)
  3. AGENT_ENGINE environment variable
  4. Default: "anthropic" (requires ANTHROPIC_API_KEY)

Settings › Model

The Model page (/settings/model, page id model) has three groups:

  • Organization providers: the organization's Builder.io connection and each organization key. Owners and admins manage them; members see only "N models".
  • Personal providers: a member's own Builder.io connection, their own keys, and the ChatGPT subscription while its lab is on. A personal key is used before the organization's, for that person only.
  • Organization settings: Default model (manage-agent-engine set, organization models only), Restrict personal API keys (manage-provider-key-policy), and Max iterations (manage-agent-loop-settings, 1 to 1000). Owners and admins change them; members see the values.

Read the page's state with list-model-providers, and the models each provider shows with get-provider-models. Keys are added and replaced in the provider dialog, which checks a pasted key by listing its models; you can't save a key for the user, so check one with check-provider-key and send them to Model (open-settings-page) to paste it. Before they remove a provider, run preview-secret-removal with the provider's key name and scope and tell them what stops.

Restricting Personal API Keys

manage-provider-key-policy reads or changes the organization's "Restrict personal API keys" setting. While it is on, members (not owners or admins) can't use or save their own provider keys or a personal Builder.io connection, so their chats use organization providers; with none, a chat fails with "Owners and admins restricted personal API keys." Nothing is deleted, and turning it off restores their keys.

manage-provider-key-policy            # read; owners/admins also get affectedMembers
manage-provider-key-policy --set true # owners and admins only

Read it first and tell the user which members lose which providers before turning it on.

Testing a New Engine

Before switching, verify the engine is working:

test-agent-engine --engine "ai-sdk:openai" --model "gpt-4o"

Returns { ok, latencyMs, response, capabilities }. If ok: false, the error message explains what's wrong (missing API key, package not installed, etc.).

To check a key without sending a prompt, for example one the user just gave you:

check-provider-key --provider "anthropic" --key "<the key>"

Returns { ok: true, models } or { ok: false, code, reason } (rejected, wrong-provider, missing-key, invalid-endpoint, unreachable, provider-error). Relay the reason. Omit --key to re-check the saved key; it is only checked against its saved endpoint, so --baseUrl needs --key (except for Ollama). --scope org is for owners and admins.

Choosing Which Models Show

Each provider (Builder.io included) keeps the models its owner checked. Only checked models appear in the chat model picker and the default-model select; Builder.io and providers with their own key show side by side.

get-provider-models --provider "openai"
manage-provider-models --action "set" --provider "openai" --models '["gpt-6-sol"]'
manage-provider-models --action "reset" --provider "openai"
  • A selection lives at the same scope as the provider's key: --scope user is the caller's own, --scope org is the organization's (owners and admins only; members get an error to relay). Without --scope, the call changes the selection in effect, which follows the key in effect (a member's personal key uses their personal selection).
  • A member's personal selection never changes the organization's. The default-model select always offers the organization's checked models.
  • set with an empty list hides the provider's chat models, for a key used only by services. Builder.io accepts only its own catalog.
  • A chat already on an unchecked model keeps running on it. When nothing picked a model and the engine default is unchecked, chats use the first checked model.
  • A row with models: null has nothing chosen and shows the recommended models. state: "unreadable" means the selection couldn't be read, not that it is empty.

Built-in Engines

Engine NameProviderRequires
anthropicAnthropic Claude SDKANTHROPIC_API_KEY
ai-sdk:anthropicClaude via Vercel AI SDKANTHROPIC_API_KEY
ai-sdk:openaiOpenAI via Vercel AI SDKOPENAI_API_KEY
ai-sdk:openrouter300+ models (Anthropic, OpenAI, Google, Meta, …) routed through OpenRouterOPENROUTER_API_KEY
ai-sdk:googleGoogle Gemini via Vercel AI SDKGOOGLE_GENERATIVE_AI_API_KEY
ai-sdk:groqGroq LPU via Vercel AI SDKGROQ_API_KEY
ai-sdk:mistralMistral via Vercel AI SDKMISTRAL_API_KEY
ai-sdk:cohereCohere via Vercel AI SDKCOHERE_API_KEY
ai-sdk:ollamaLocal Ollama via Vercel AI SDKNone (local)

Engine Capabilities

Each engine advertises its capabilities:

CapabilityAnthropicAI SDK: AnthropicAI SDK: OpenAIAI SDK: Google
thinking✓✓✗✓
promptCaching✓✓✗✗
vision✓✓✓✓
computerUse✓✗✗✗
parallelToolCalls✓✓✓✓

Anthropic-Exclusive Features

When using the anthropic engine (or ai-sdk:anthropic):

  • Prompt caching is applied automatically to the system prompt — cutting latency and cost on repeated turns.
  • Extended thinking can be enabled via providerOptions.anthropic.thinking — the agent reasons longer before responding.

These features are silently ignored when a non-Anthropic engine is active (capability-gated, no breakage).

Using OpenRouter

ai-sdk:openrouter gives access to 300+ models from many providers through a single API. Model IDs use the vendor/model form:

set-agent-engine --engine "ai-sdk:openrouter" --model "anthropic/claude-sonnet-4.5"
set-agent-engine --engine "ai-sdk:openrouter" --model "openai/gpt-4o"
set-agent-engine --engine "ai-sdk:openrouter" --model "google/gemini-2.5-pro"

Any vendor/model string from openrouter.ai/models works — the supportedModels list in the registry is a UI hint, not an allow-list.

App attribution (optional): pass appName / appUrl in the engine config to set the X-OpenRouter-Title / HTTP-Referer headers — useful to see your app on the OpenRouter dashboard and leaderboards:

createAISDKEngine("openrouter", {
  apiKey: process.env.OPENROUTER_API_KEY,
  appName: "My App",
  appUrl: "https://myapp.example",
});

Registering a Custom Engine

Register custom engines in a server plugin at startup. Import from the @agent-native/core/agent/engine subpath:

// server/plugins/my-engine.ts
import {
  registerAgentEngine,
  type AgentEngine,
  type EngineEvent,
  type EngineStreamOptions,
} from "@agent-native/core/agent/engine";

registerAgentEngine({
  name: "my-engine",
  label: "My Custom Engine",
  description: "...",
  capabilities: {
    thinking: false,
    promptCaching: false,
    vision: false,
    computerUse: false,
    parallelToolCalls: true,
  },
  defaultModel: "my-model-v1",
  supportedModels: ["my-model-v1", "my-model-v2"],
  requiredEnvVars: ["MY_ENGINE_API_KEY"],
  create: (config): AgentEngine => ({
    name: "my-engine",
    label: "My Custom Engine",
    defaultModel: "my-model-v1",
    supportedModels: ["my-model-v1", "my-model-v2"],
    capabilities: {
      /* same shape as above */
    } as any,
    async *stream(opts: EngineStreamOptions): AsyncIterable<EngineEvent> {
      // yield text-delta / thinking-delta / tool-call / usage events
      // as they arrive, then:
      yield { type: "assistant-content", parts: /* final content parts */ [] };
      yield { type: "stop", reason: "end_turn" };
    },
  }),
});

Engine stream contract

Every engine's stream(opts) MUST emit, in order:

  1. Zero or more text-delta, thinking-delta, tool-call, and usage events as they arrive from the model.
  2. Exactly one { type: "assistant-content", parts } event with the structured content for the turn. runAgentLoop reads this to reconstruct the assistant message for the next turn.
  3. Exactly one terminal { type: "stop", reason } event.

After registering, the engine appears in list-agent-engines output and can be selected via set-agent-engine.

Env Vars Reference

VariablePurpose
ANTHROPIC_API_KEYRequired for anthropic and ai-sdk:anthropic engines
OPENAI_API_KEYRequired for ai-sdk:openai
OPENROUTER_API_KEYRequired for ai-sdk:openrouter
GOOGLE_GENERATIVE_AI_API_KEYRequired for ai-sdk:google
GROQ_API_KEYRequired for ai-sdk:groq
MISTRAL_API_KEYRequired for ai-sdk:mistral
COHERE_API_KEYRequired for ai-sdk:cohere
AGENT_ENGINEDefault engine name (overridden by settings store)

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

a2a-assets

FreeSummary

Generate, refine, export, and place brand images or videos from an Assets library into another app. The skill covers choosing a library, handling image batches and video runs, and updating selected assets after feedback.

  • Generate brand images for slides or another app
  • Refine an existing asset after feedback
  • Create and export a video asset
BuilderIO/agent-native7.5KUpdated Oct 26, 2026

account-health

FreeSummary

Prepare a customer account health, renewal, or contract usage readout. Verify the account identity, use approved metric definitions, compare contracted capacity with actual usage, and trace findings to sources, time windows, and known gaps.

  • Preparing a named customer's account health review
  • Comparing contracted seats or capacity with usage
  • Gathering adoption signals before a renewal or QBR
BuilderIO/agent-native7.5KUpdated Oct 26, 2026

actions

FreeSummary

Create focused app actions that agents can call as tools and frontend code can use through client hooks. Use them to add provider integrations or fetch UI data, with validated inputs and structured results.

  • Adding a new app operation
  • Connecting an external provider API
  • Fetching data for a frontend view
BuilderIO/agent-native7.5KUpdated Oct 26, 2026

adding-a-feature

FreeSummary

Use this checklist when adding a feature or integration to an agent-native app. It covers the user interface, agent-callable actions, instructions, and app-state sync so both the user and agent can work with the capability consistently.

  • Planning a new feature across UI and agent actions
  • Checking that agent changes appear in the UI
  • Documenting actions and feature state for the agent
BuilderIO/agent-native7.5KUpdated Oct 26, 2026

adhoc-analysis

FreeSummary

Investigate complex questions by combining data from multiple sources, then summarize patterns, metrics, and evidence in a clear report. Save requested analyses as dashboards with instructions for future refreshes.

  • Comparing CRM deals with call records
  • Investigating customer health across systems
  • Saving a repeatable performance analysis
BuilderIO/agent-native7.5KUpdated Oct 26, 2026

admin-surfaces

FreeSummary

Use the Analytics admin surfaces to inspect and change workspace feature flags, review dashboard ownership and usage activity, or browse and edit databases connected from other agent-native apps. The skill guides administrators to the relevant view and actions.

  • Review dashboard owners, views, and edits
  • Change a workspace feature flag for an app
  • Browse or edit a connected app database
BuilderIO/agent-native7.5KUpdated Oct 26, 2026

See all skills by BuilderIO

Report a problem with this skill