Expand description
Rust SDK wrapping Google’s Gemini CLI as a subprocess via JSON-RPC 2.0.
§Architecture
The SDK communicates with the gemini binary using the --experimental-acp
JSON-RPC 2.0 mode. Each Client manages a single subprocess session.
Responses are translated from raw wire types to the public Message enum.
§Quick Start — one-shot query
#[tokio::main]
async fn main() -> gemini_cli_sdk::Result<()> {
let messages = gemini_cli_sdk::query("Explain quantum computing in one sentence").await?;
for msg in messages {
if let Some(text) = msg.assistant_text() {
println!("{text}");
}
}
Ok(())
}§Quick Start — stateful multi-turn session
use gemini_cli_sdk::{Client, ClientConfig};
#[tokio::main]
async fn main() -> gemini_cli_sdk::Result<()> {
let config = ClientConfig::builder()
.prompt("Explain quantum computing")
.build();
let mut client = Client::new(config)?;
let _info = client.connect().await?;
// send() returns a Stream; consume it then close.
client.close().await?;
Ok(())
}Re-exports§
pub use errors::Error;pub use errors::Result;pub use config::AuthMethod;pub use config::ClientConfig;pub use config::PermissionMode;pub use config::SystemPrompt;pub use callback::sync_callback;pub use callback::tracing_callback;pub use callback::MessageCallback;pub use discovery::check_cli_version;pub use discovery::find_cli;pub use discovery::version_satisfies;pub use discovery::MIN_CLI_VERSION;pub use mcp::McpServerConfig;pub use mcp::McpServers;pub use permissions::CanUseToolCallback;pub use permissions::PermissionContext;pub use permissions::PermissionDecision;pub use permissions::PermissionOptionInfo;pub use permissions::ToolLocationInfo;pub use transport::GeminiTransport;pub use transport::Transport;pub use types::messages::AssistantMessage;pub use types::messages::AssistantMessageInner;pub use types::messages::McpServerStatus;pub use types::messages::Message;pub use types::messages::PlanEntry;pub use types::messages::ResultMessage;pub use types::messages::SessionInfo;pub use types::messages::StreamEvent;pub use types::messages::SystemMessage;pub use types::messages::Usage;pub use types::messages::UserMessage;pub use types::messages::UserMessageInner;pub use types::content::Base64ImageSource;pub use types::content::ContentBlock;pub use types::content::ImageBlock;pub use types::content::ImageSource;pub use types::content::TextBlock;pub use types::content::ThinkingBlock;pub use types::content::ToolResultBlock;pub use types::content::ToolResultContent;pub use types::content::ToolUseBlock;pub use types::content::UrlImageSource;pub use types::content::UserContent;
Modules§
- callback
- Message callback type for real-time message notifications.
- config
- Client configuration.
- discovery
- CLI binary discovery and version checking.
- errors
- Error types for
gemini-cli-sdk. - mcp
- MCP server configuration types.
- permissions
- Permission system for tool approval.
- transport
- Transport trait and
GeminiTransportproduction implementation. - types
Structs§
- Client
- Stateful client for multi-turn Gemini CLI sessions.
- Hook
Context - Context for hook execution.
- Hook
Input - Input provided to a hook callback.
- Hook
Matcher - A registered hook — matches events by type and optional tool name pattern.
- Hook
Output - Output from a hook callback — can modify the execution flow.
Enums§
- Hook
Decision - Hook decision — continue, modify, or block.
- Hook
Event - Hook events that can be intercepted.
Functions§
- client_
prompt - Extract the prompt string from a
Clientand return it. - query
- Run a one-shot query with a plain-text prompt, collecting all messages.
- query_
stream - Run a one-shot query, yielding messages via a static boxed stream.
- query_
stream_ with_ content - Run a one-shot query with structured content, yielding messages as a stream as they arrive.
- query_
with_ content - Run a one-shot query with structured content, collecting all messages.
Type Aliases§
- Hook
Callback - Callback type for hooks.