Expand description
§Nanocodex Agent
The owned lifecycle for one headless OpenAI coding agent.
nanocodex-agent composes the Tower-native Responses state machine from
nanocodex-oai-api with the runtime from nanocodex-tools. A normal consumer
builds one agent, receives a cheap cloneable Nanocodex handle and an
independent AgentEvents stream, then submits ordered prompts.
§Quick start
use nanocodex_agent::{Nanocodex, OpenAi};
let openai = OpenAi::new(std::env::var("OPENAI_API_KEY")?)?;
let (agent, _events) = Nanocodex::builder(openai)
.instructions(
"You are a Rust coding agent. Preserve unrelated work and run relevant tests.",
)
.workspace(std::env::current_dir()?)
.build()?;
let result = agent
.prompt("Explain the cause of the failing parser test.")
.await?
.await?;
println!("{}", result.final_message());
agent.shutdown().await?;The first await means the private driver accepted and ordered the prompt.
Turn is both a per-turn event stream and a future for TurnResult.
Awaiting the turn waits only for its result; event consumption is independent.
The private driver is the sole owner of mutable conversation, transport, tool,
and process state. Cloning Nanocodex only clones its command capability;
Nanocodex::spawn creates a clean sibling and Nanocodex::fork creates an
independent branch from committed history.
§Typed events
AgentEvents is optional and independent from turn results. Its raw
JSONL-compatible envelope remains lossless, while
AgentEvent::data provides a
normalized domain view:
use futures_util::StreamExt;
use nanocodex_agent::{
Nanocodex, OpenAi,
events::{AgentEventData, AssistantEvent},
};
let openai = OpenAi::new(std::env::var("OPENAI_API_KEY")?)?;
let (agent, mut events) = Nanocodex::builder(openai)
.instructions("Answer concisely and preserve exact identifiers.")
.build()?;
let turn = agent.prompt("Explain the identifier req_7f3.").await?;
while let Some(event) = events.next().await {
if let AgentEventData::Assistant(AssistantEvent::Delta(delta)) = event.data()? {
print!("{}", delta.text);
}
if event.kind.is_terminal() {
break;
}
}
let _result = turn.await?;
agent.shutdown().await?;§Components
eventscontains the complete typed lifecycle event taxonomy.inputcontains prompts and multimodal user input.sessioncontains durable session identities and snapshots.usagecontains token accounting and USD estimates.rolloutrecords and restores Codex-compatible sessions.transportexposes advanced Responses and Tower configuration.toolsexposes the complete tool implementation surface.
OpenAI API-key and managed ChatGPT credentials belong to
nanocodex_oai_api::auth, independently of this lifecycle crate.
Re-exports§
pub use usage::TurnUsage;
Modules§
- events
- Complete typed lifecycle events emitted by an agent.
- input
- Prompts and multimodal user input accepted by the agent.
- rollout
Non- target_family=wasm - Codex-compatible durable rollout recording and restoration.
- session
- Durable agent session identities and snapshots.
- tools
- Complete tool contracts, registry, built-ins, Code Mode, and MCP.
- transport
Non- target_family=wasm - Advanced Responses transport and Tower service configuration.
- usage
- Per-turn token accounting and USD estimates.
Structs§
- Agent
Events - The receiving half of an agent’s typed event stream.
- Agent
Handle - Weak child-agent capability for the driver that owns one tool runtime.
- Estimated
UsdCost - Exact estimated USD cost for provider-reported token usage.
- Nanocodex
- Cheap, cloneable command handle for an owned agent driver.
- Nanocodex
Builder - Builder for one owned agent lifecycle.
- OpenAi
- Configured, cloneable
OpenAIclient recipe. - Response
Error - Cloneable typed failure returned by a response stream and its completed future.
- Tools
- Declarative selection of the built-in tools installed for an agent.
- Turn
- Completion handle for an accepted turn.
- Turn
Control - Cheap cloneable control capability for one accepted turn.
- Turn
Result - Final result of a completed turn.
- UsdAmount
- An exact non-negative amount of United States dollars.
Enums§
- Cost
Status - Availability of the automatic local USD estimate.
- Nanocodex
Error - Error returned by the Nanocodex library boundary.
- Reasoning
Mode - Responses reasoning execution mode for the supported GPT-5.6 model family.
- Response
Error Kind - Stable classification for one failed Responses operation.
- Service
Tier - OpenAI service tiers supported by Nanocodex.
- Thinking
- Requested model reasoning effort.
Traits§
- Tool
- A caller-defined model-visible tool.
Type Aliases§
- Result
- Result type returned by the owned agent lifecycle.
Attribute Macros§
- tool
Non- target_family=wasm - Defines a typed JSON function tool from an async Rust function.