packages/agents satisfies one interface, AgentLike, so
they are interchangeable wherever a component takes an agent prop, including
<Task>.
There are two families. SDK agents wrap the AI SDK and
bill a provider over HTTP; they take an Options object and a model id. CLI
agents spawn a vendor’s local command-line tool and share
BaseCliAgentOptions. Two helpers round out the surface:
createHttpTool builds an ad-hoc REST tool, and hashCapabilityRegistry
fingerprints an agent’s capabilities for cache keys.
Import agent classes, the tool factories, and their option types from the
smithers-orchestrator facade. The option type shapes are also listed in the
Types reference.AgentLike
The structural contract every agent satisfies. You rarely implement it by hand; the built-in classes already do. Type a parameter asAgentLike to accept any
agent.
AgentLike.ts · Tests agent-contract.test.js · See also Agents overview, SmithersCtx
SDK agents
Provider-backed wrappers around the AI SDKToolLoopAgent. Construct with an
Options object whose core fields are standard AI SDK
ToolLoopAgentSettings (instructions, tools,
stopWhen, maxOutputTokens, temperature, providerOptions, prepareCall)
plus a model. Reach for these to bill a provider’s API directly. For a vendor’s
full CLI surface, use a CLI agent.
AnthropicAgent
WrapsToolLoopAgent against the Anthropic provider.
ToolLoopAgentSettings without model, plus a required model.OpenAIAgent
WrapsToolLoopAgent against the OpenAI provider or any OpenAI-compatible
endpoint.
The Anthropic shape plus
nativeStructuredOutput, in one of two model forms.HermesAgent
OpenAI-compatible wrapper preconfigured for a Nous Research Hermes server.Mirrors the string-model form of
OpenAIAgentOptions, with Hermes defaults.AnthropicAgent.js · OpenAIAgent.js · HermesAgent.js · Tests sdk-agents.test.js · See also SDK Agents, AnthropicAgentOptions
CLI agents
CLI-backed classes spawn a vendor’s command-line tool, stream its output through the runtime, and implementAgentLike. The binary must be on PATH. When you
omit model, the underlying CLI picks its own default. Each class adds a few
vendor-specific options on top of the shared base below.
Shared by every CLI agent class.
ClaudeCodeAgent
Wraps the Anthropicclaude CLI. Adds session and permission flags on top of the
base: permissionMode, allowedTools / disallowedTools, mcpConfig,
resume, sessionId, addDir, agents, appendSystemPrompt, configDir,
apiKey, maxBudgetUsd, outputFormat (default stream-json). See
ClaudeCodeAgentOptions.
CodexAgent
Wraps the OpenAIcodex CLI (codex exec). Adds sandbox
("read-only" | "workspace-write" | "danger-full-access"), config, profile,
fullAuto, outputSchema, nativeStructuredOutput (default false),
configDir, and apiKey. See
CodexAgentOptions.
nativeStructuredOutput on CodexAgent makes the model emit only final JSON and
refuse tool calls, which breaks agentic tasks. Leave it off for read/edit/run
work; enable it only for pure, tool-free extraction.AntigravityAgent
Wraps the Googleagy CLI. Adds allowedMcpServerNames, allowedTools,
conversation, continue, resume, includeDirectories, sandbox,
configDir, geminiDir, and apiKey. Options that map to removed agy flags
fail fast with AGENT_CONFIG_INVALID. Prefer this over GeminiAgent for new
Google CLI work.
GeminiAgent
Deprecated legacy wrapper for the oldergemini CLI. Adds approvalMode,
sandbox, extensions, resume, includeDirectories, configDir, and
apiKey. Use AntigravityAgent instead for new workflows.
PiAgent
Wraps the Pi CLI and adds extension UI hook support. Key additions:provider,
mode ("text" | "json" | "rpc"), thinking, extension, skill, and
onExtensionUiRequest. See
PiAgentOptions and Pi integration.
KimiAgent
Wraps the Moonshotkimi CLI and auto-isolates KIMI_SHARE_DIR per run. Adds
thinking, agent, maxRalphIterations, session, continue, configDir,
and MCP config flags.
ForgeAgent
Wraps the Forge CLI (300+ models via provider/model strings). Addsprovider,
agent, conversationId, workflow, sandbox, and restricted.
AmpAgent
Wraps the Amp CLI in--execute headless mode. Adds visibility
("private" | "public" | "workspace" | "group"), mcpConfig,
dangerouslyAllowAll, and logLevel.
VibeAgent
Wraps Mistral’svibe CLI with streaming JSON output. Adds agent, maxTurns,
maxPrice, maxTokens, enabledTools, sessionId, and continueSession. See
VibeAgentOptions.
OpenCodeAgent
Wraps the OpenCode CLI (opencode run --format json). Adds agentName,
attachFiles, continueSession, sessionId, and variant. Native hijack is
not yet supported. See OpenCodeAgentOptions.
Source ClaudeCodeAgent.js · CodexAgent.js · BaseCliAgentOptions.ts · Tests claude-support.test.js · codex-support.test.js · See also CLI Agents, Agents overview
createHttpTool
Build an AI SDK tool that calls any REST API without an OpenAPI spec. The returned tool takes a method, url, headers, query, body, and optional auth at call time;createHttpTool only configures the description and any default
headers. Pass it to an agent’s tools.
HttpToolInput and receives an
HttpToolOutput.
createHttpTool.js · CreateHttpToolOptions.ts · Tests http-tool.test.js · See also Common tools, OpenAPI tools
hashCapabilityRegistry
Compute a stable SHA-256 hex digest of anAgentCapabilityRegistry.
The registry is normalized and stably stringified first, so the hash is
order-independent and stable across runs. Use it as a cache key when an agent’s
declared capabilities are part of what makes a task result reusable.
string
A 64-character SHA-256 hex digest of the normalized registry.
hashCapabilityRegistry.js · AgentCapabilityRegistry.ts · Tests capability-registry.test.js · See also Caching, Agents overview
For end-to-end agent setup and provider auth, see CLI Agents and SDK Agents. For the full option type shapes, see the Types reference.