Crate claude_agent

Crate claude_agent 

Source
Expand description

§claude-agent

Rust SDK for building AI agents with Anthropic’s Claude.

This crate provides a production-ready, memory-efficient way to build AI agents using the Anthropic Messages API directly, without CLI subprocess dependencies.

§Quick Start

use claude_agent::query;

#[tokio::main]
async fn main() -> Result<(), claude_agent::Error> {
    let response = query("What is 2 + 2?").await?;
    println!("{}", response);
    Ok(())
}

§Full Agent Example

use claude_agent::{Agent, AgentEvent, ToolAccess};
use futures::StreamExt;
use std::pin::pin;

#[tokio::main]
async fn main() -> Result<(), claude_agent::Error> {
    let agent = Agent::builder()
        .model("claude-sonnet-4-5")
        .tools(ToolAccess::all())
        .working_dir("./project")
        .build()
        .await?;

    let stream = agent.execute_stream("Fix the bug").await?;
    let mut stream = pin!(stream);
    while let Some(event) = stream.next().await {
        match event? {
            AgentEvent::Text(text) => print!("{}", text),
            AgentEvent::Complete(result) => {
                println!("Done: {} tokens", result.total_tokens());
            }
            _ => {}
        }
    }
    Ok(())
}

Re-exports§

pub use agent::Agent;
pub use agent::AgentBuilder;
pub use agent::AgentConfig;
pub use agent::AgentEvent;
pub use agent::AgentMetrics;
pub use agent::AgentModelConfig;
pub use agent::AgentResult;
pub use agent::AgentState;
pub use agent::BudgetConfig;
pub use agent::DEFAULT_COMPACT_KEEP_MESSAGES;
pub use agent::ExecutionConfig;
pub use agent::PromptConfig;
pub use agent::SecurityConfig;
pub use agent::SystemPromptMode;
pub use agent::ToolStats;
pub use auth::ClaudeCliProvider;cli-integration
pub use auth::ApiKeyHelper;
pub use auth::Auth;
pub use auth::AwsCredentialRefresh;
pub use auth::AwsCredentials;
pub use auth::ChainProvider;
pub use auth::Credential;
pub use auth::CredentialManager;
pub use auth::CredentialProvider;
pub use auth::EnvironmentProvider;
pub use auth::ExplicitProvider;
pub use auth::OAuthConfig;
pub use auth::OAuthConfigBuilder;
pub use budget::BudgetStatus;
pub use budget::BudgetTracker;
pub use budget::ModelPricing;
pub use budget::OnExceed;
pub use budget::PricingTable;
pub use budget::PricingTableBuilder;
pub use budget::TenantBudget;
pub use budget::TenantBudgetManager;
pub use client::AnthropicAdapter;
pub use client::BetaConfig;
pub use client::BetaFeature;
pub use client::CircuitBreaker;
pub use client::CircuitConfig;
pub use client::CircuitState;
pub use client::Client;
pub use client::ClientBuilder;
pub use client::ClientCertConfig;
pub use client::CloudProvider;
pub use client::CountTokensRequest;
pub use client::CountTokensResponse;
pub use client::EffortLevel;
pub use client::ExponentialBackoff;
pub use client::FallbackConfig;
pub use client::FallbackTrigger;
pub use client::File;
pub use client::FileData;
pub use client::FileDownload;
pub use client::FileListResponse;
pub use client::FilesClient;
pub use client::GatewayConfig;
pub use client::ModelConfig;
pub use client::ModelType;
pub use client::NetworkConfig;
pub use client::OutputConfig;
pub use client::ProviderAdapter;
pub use client::ProviderConfig;
pub use client::ProxyConfig;
pub use client::Resilience;
pub use client::ResilienceConfig;
pub use client::RetryConfig;
pub use client::UploadFileRequest;
pub use client::strict_schema;
pub use client::transform_for_strict;
pub use common::Named;
pub use common::Provider;
pub use common::SourceType;
pub use common::ToolRestricted;
pub use context::ContextBuilder;
pub use context::FileMemoryProvider;
pub use context::InMemoryProvider;
pub use context::LeveledMemoryProvider;
pub use context::MemoryContent;
pub use context::MemoryLevel;
pub use context::MemoryLoader;
pub use context::MemoryProvider;
pub use context::PromptOrchestrator;
pub use context::RoutingStrategy;
pub use context::RuleIndex;
pub use context::SkillIndex;
pub use context::StaticContext;
pub use hooks::CommandHook;
pub use hooks::Hook;
pub use hooks::HookContext;
pub use hooks::HookEvent;
pub use hooks::HookInput;
pub use hooks::HookManager;
pub use hooks::HookOutput;
pub use observability::AgentMetrics as ObservabilityMetrics;
pub use observability::MetricsConfig;
pub use observability::MetricsRegistry;
pub use observability::ObservabilityConfig;
pub use observability::SpanContext;
pub use observability::TracingConfig;
pub use output_style::OutputStyle;
pub use output_style::OutputStyleSourceType;
pub use output_style::builtin_styles;
pub use output_style::default_style;
pub use output_style::explanatory_style;
pub use output_style::learning_style;
pub use output_style::OutputStyleLoader;cli-integration
pub use output_style::SystemPromptGenerator;cli-integration
pub use permissions::PermissionDecision;
pub use permissions::PermissionMode;
pub use permissions::PermissionPolicy;
pub use permissions::PermissionResult;
pub use session::CompactExecutor;
pub use session::CompactStrategy;
pub use session::Session;
pub use session::SessionConfig;
pub use session::SessionId;
pub use session::SessionManager;
pub use skills::FileSkillProvider;cli-integration
pub use skills::ChainSkillProvider;
pub use skills::CommandLoader;
pub use skills::InMemorySkillProvider;
pub use skills::SkillDefinition;
pub use skills::SkillExecutor;
pub use skills::SkillProviderTrait;
pub use skills::SkillRegistry;
pub use skills::SkillResult;
pub use skills::SkillTool;
pub use skills::SlashCommand;
pub use subagents::ChainSubagentProvider;
pub use subagents::InMemorySubagentProvider;
pub use subagents::SubagentDefinition;
pub use subagents::SubagentProviderTrait;
pub use subagents::SubagentRegistry;
pub use subagents::builtin_subagents;
pub use subagents::find_builtin;
pub use subagents::FileSubagentProvider;cli-integration
pub use subagents::SubagentLoader;cli-integration
pub use tools::ExecutionContext;
pub use tools::SchemaTool;
pub use tools::Tool;
pub use tools::ToolAccess;
pub use tools::ToolRegistry;
pub use tools::ToolRegistryBuilder;
pub use types::CompactResult;
pub use types::ContentBlock;
pub use types::DocumentBlock;
pub use types::ImageSource;
pub use types::Message;
pub use types::Role;
pub use types::ToolError;
pub use types::ToolOutput;
pub use types::UserLocation;
pub use types::WebSearchTool;
pub use mcp::McpContent;
pub use mcp::McpError;
pub use mcp::McpManager;
pub use mcp::McpResourceDefinition;
pub use mcp::McpResult;
pub use mcp::McpServerConfig;
pub use mcp::McpServerInfo;
pub use mcp::McpServerState;
pub use mcp::McpToolDefinition;
pub use mcp::McpToolResult;
pub use mcp::ReconnectPolicy;
pub use security::SecurityContext;
pub use security::SecurityContextBuilder;
pub use client::BedrockAdapter;aws
pub use client::FoundryAdapter;azure
pub use client::VertexAdapter;gcp

Modules§

agent
Agent execution engine.
auth
Authentication module for Claude API.
budget
Tenant-based budget management for API cost control.
client
Anthropic API client with multi-provider support.
common
config
Pluggable configuration provider system.
context
Context management with progressive disclosure for optimal token usage.
hooks
Hook system for intercepting agent execution.
mcp
MCP (Model Context Protocol) server integration.
observability
Observability module for Claude Agent SDK.
output_style
permissions
Permission system for controlling tool execution.
prelude
Prelude module for convenient imports.
prompts
System prompts based on Claude Code CLI.
security
Security sandbox system providing TOCTOU-safe file operations and process isolation.
session
Session management for stateful conversations.
skills
subagents
tools
Built-in tools for the agent.
types
Core types for the Claude Agent SDK.

Enums§

Error
Error type for claude-agent operations

Functions§

query
Simple query function for one-shot requests
query_with_model
Query with a specific model
stream
Stream a response for one-shot requests

Type Aliases§

Result