Skip to main content

Crate recursive

Crate recursive 

Source
Expand description

Recursive: a minimal, orthogonal, self-improving coding agent kernel.

The kernel is intentionally tiny:

  • Message is the only data primitive shared across the system.
  • LlmProvider abstracts model backends (HTTP, mock, future local…).
  • Tool abstracts side effects the model can request.
  • Agent is a thin loop that wires them together.

Everything else is opt-in. New capabilities are added by implementing Tool or LlmProvider, never by editing the loop.

Re-exports§

pub use agent::PlanningMode;
pub use agent::FinishReason;
pub use agent::PermissionDecision;
pub use checkpoint::CheckpointId;
pub use checkpoint::CheckpointInfo;
pub use checkpoint::RestoreStats;
pub use checkpoint::ShadowRepo;
pub use checkpoint_log::read_log as read_checkpoint_log;
pub use checkpoint_log::truncate_to_turn as truncate_checkpoint_log;
pub use checkpoint_log::CheckpointLogWriter;
pub use checkpoint_log::CheckpointRecord;
pub use checkpoint_log::TouchedVia;
pub use compact::Compactor;
pub use config::Config;
pub use error::Error;
pub use error::Result;
pub use event::AgentEvent;
pub use event::ChannelSink;
pub use event::CompositeSink;
pub use event::EventSink;
pub use event::NullSink;
pub use hooks::ExternalHookRunner;
pub use hooks::ToolTimingHook;
pub use hooks::Hook;
pub use hooks::HookAction;
pub use hooks::HookEvent;
pub use hooks::HookRegistry;
pub use kernel::AgentKernel;
pub use kernel::AgentKernelBuilder;
pub use kernel::SideEffect;
pub use kernel::TurnContext;
pub use kernel::TurnOutcome;
pub use llm::context_window_tokens_for_model;
pub use llm::default_compact_threshold_chars;
pub use llm::pricing_for;
pub use llm::Completion;
pub use llm::LlmProvider;
pub use llm::ModelPricing;
pub use llm::RetryPolicy;
pub use llm::TokenUsage;
pub use llm::ToolCall;
pub use llm::ToolSpec;
pub use mcp::discover_mcp_servers;
pub use mcp::load_mcp_config;
pub use mcp::McpClient;
pub use mcp::McpPrompt;
pub use mcp::McpPromptArgument;
pub use mcp::McpPromptMessage;
pub use mcp::McpResource;
pub use mcp::McpResourceContent;
pub use mcp::McpServer;
pub use mcp::McpServerConfig;
pub use mcp::McpTool;
pub use mcp::McpToolSpec;
pub use mcp::ServerCapabilities;
pub use mcp_server::McpServerManager;
pub use mcp_server::McpServerRunner;
pub use message::Message;
pub use message::Role;
pub use migrate::migrate_workspace;
pub use migrate::MigrateReport;
pub use multi::parse_delegations;
pub use multi::AgentMessage;
pub use multi::AgentPool;
pub use multi::AgentRole;
pub use multi::DelegationResult;
pub use multi::MemoryEntry;
pub use multi::MessageBus;
pub use multi::MessageType;
pub use multi::Pipeline;
pub use multi::PipelineResult;
pub use multi::SharedMemory;
pub use multi::StageOutcome;
pub use multi::TeamOrchestrator;
pub use multi::TeamResult;
pub use paths::legacy_paths_in_workspace;
pub use paths::user_data_dir;
pub use paths::user_scratchpad_path;
pub use paths::user_sessions_dir;
pub use paths::user_shadow_git_dir;
pub use paths::user_workspace_dir;
pub use paths::workspace_hash;
pub use permissions::auto_classifier::AutoClassifier;
pub use permissions::auto_classifier::DenialTracker;
pub use permissions::PermissionMode;
pub use permissions::LayeredPermissionsConfig;
pub use permissions::PermissionLayer;
pub use permissions::RuleSource;
pub use permissions::RuleBehavior;
pub use permissions::SharedPermissions;
pub use providers::all_presets;
pub use providers::find_preset;
pub use providers::ModelSpec;
pub use providers::ProviderPreset;
pub use rewind::apply_rewind;
pub use rewind::checkpoint_log_path;
pub use rewind::detect_conflicts;
pub use rewind::plan_rewind;
pub use rewind::ConflictReport;
pub use rewind::RewindPlan;
pub use rewind::RewindResult;
pub use runtime::AgentRuntime;
pub use runtime::AgentRuntimeBuilder;
pub use runtime::RuntimeOutcome;
pub use session::OrphanToolCall;
pub use session::SessionFile;
pub use session::SessionPersistenceSink;
pub use session::SessionReader;
pub use session::SessionWriter;
pub use session::entry_to_message;
pub use session::truncate_transcript_to_turn;
pub use session::SessionLock;
pub use session::SessionMeta;
pub use session::TranscriptEntry;
pub use session::TruncateStats;
pub use skills::discover_skills;
pub use skills::skill_index;
pub use skills::skills_for_injection;
pub use skills::Skill;
pub use skills::SkillMode;
pub use skills::SkillParam;
pub use skills::SkillRef;
pub use skills::SkillScript;
pub use skills::SkillSection;
pub use storage::AgentCheckpointState;
pub use storage::LocalStorageBackend;
pub use storage::NoopSessionStore;
pub use storage::SessionStore;
pub use storage::StorageBackend;
pub use tool_set_provider::LocalToolSetProvider;
pub use tool_set_provider::PolicyToolSetProvider;
pub use tool_set_provider::SandboxMode;
pub use tool_set_provider::ToolSetProvider;
pub use tools::policy_sandbox::FsPolicy;
pub use tools::policy_sandbox::PolicyConfig;
pub use tools::policy_sandbox::ShellPolicy;
pub use tools::PermissionHook;
pub use tools::build_standard_tools;
pub use tools::AuditMeta;
pub use tools::EnterPlanModeTool;
pub use tools::ExitPlanModeTool;
pub use tools::ExitStatus;
pub use tools::PlanApprovalGate;
pub use tools::PlanApprovalResult;
pub use tools::PlanModeRequestGate;
pub use tools::PlanModeRequestResult;
pub use tools::RequestPlanModeTool;
pub use tools::TodoItem;
pub use tools::TodoStatus;
pub use tools::TodoWriteTool;
pub use tools::Tool;
pub use tools::ToolDispatch;
pub use tools::ToolRegistry;
pub use tools::ToolSideEffect;
pub use tools::TouchedFiles;
pub use tools::AUDIT_ERR_MAX_BYTES;
pub use transcript::TranscriptFile;
pub use transcript::TranscriptMeta;

Modules§

agent
Agent types — FinishReason, PermissionDecision, PermissionHook, and PlanningMode.
checkpoint
Shadow bare git repository for per-session, per-turn checkpoints.
checkpoint_log
Per-session log of turn-level checkpoint records.
compact
LLM-driven context compaction.
config
Runtime configuration.
config_file
Config file support: ~/.recursive/config.toml
cost
Cost tracking for agent runs.
error
Crate-wide error and Result.
event
Event-sink abstraction for consuming agent lifecycle events.
hooks
Lifecycle hooks for the agent loop.
http
HTTP API server for the Recursive agent.
kernel
Turn-level types for the Agent Run Kernel architecture.
llm
LLM provider abstraction.
logging
Tracing writer that suppresses output while the TUI is active.
mcp
MCP (Model Context Protocol) client — stdio and HTTP+SSE transport, JSON-RPC 2.0.
mcp_server
MCP server lifecycle management.
memory
Vector memory layer — semantic storage and retrieval of agent memories.
message
Chat message primitive.
migrate
Migrate legacy in-tree state to the per-user data dir.
multi
Multi-agent orchestration: agent pool, role definitions, and message bus.
paths
Centralised path resolution for per-user and per-workspace state.
permissions
Static tool permission configuration.
providers
Static vendor preset catalog, embedded at compile time.
rewind
Selective rewind for a session’s checkpoint chain.
run_core
Stateless execution kernel — RunCore<'a> and RunInnerOutcome.
runtime
High-level stateful agent runtime.
runtime_goal
Goal-loop primitives: GoalStatus, GoalState, GoalVerdict, and the GoalEvaluator judge model.
session
Session files for production pause/resume.
session_lock
Per-session sentinel lock (Goal 151).
skills
Skill system: file-based capability extension.
storage
Storage abstraction layer for Recursive.
tool_set_provider
Tool set provider trait for pluggable, swappable tool implementations.
tools
Tool abstraction: any side effect the model can request.
transcript
Persistent on-disk format for transcripts.
tui

Functions§

truncate_str
Safely truncate a string to at most max_bytes bytes without splitting a multi-byte UTF-8 character. Returns the full string if it’s already within the limit.