-
Notifications
You must be signed in to change notification settings - Fork 2
Capabilities
Steven Enamakel edited this page Jul 4, 2026
·
4 revisions
This is the discovery index for TinyAgents: one page where an agent (or a human) can see every functionality the crate exposes and jump straight to the deep page for it. Each row is a capability, a one-line description of what it does, and a Where link to the wiki page (and section anchor) that documents it. Start here, find the surface you need, and branch out.
The crate is organized into five surfaces — Harness,
Graph runtime, Registry,
Expressive .rag, and REPL .ragsh —
plus Providers at the leaves and testkit/conformance for tests.
| Capability | What it does | Where |
|---|---|---|
| Agent loop | Default model→tool→model loop with run identity + limits | Harness |
| Provider-neutral model calls | One ChatModel trait; ModelRequest/ModelResponse across hosts |
Harness |
| Model resolution & selection |
ModelRegistry resolves a call via ModelSelection/ModelHint/capabilities |
Harness |
| Typed tools |
Tool trait with JSON schemas and a ToolRegistry
|
Harness |
| Middleware hooks | before/after hooks around agent, model, and tool calls | Harness |
| Structured output | Extract a typed value via a provider-appropriate strategy | Harness |
| Streaming | Model-delta and event streaming through the loop | Harness |
| Usage & cost | Token accounting and pricing roll-ups across the run tree | Harness |
| Limits, retry, fallback | Fail-closed caps, backoff, model fallback, rate limiting | Harness |
| Response & prompt cache | Local response cache + provider prompt/KV-cache layout | Harness |
| Memory & embeddings | Thread memory, vector stores, retrievers | Harness |
| Sub-agents (agents as tools) | Wrap an agent as a tool; child runs one level deeper | Harness |
| Steering | Typed runtime control (pause/resume/redirect) of a running agent | Harness |
| Summarization | Context-window-aware transcript compaction | Harness |
| Events & run status | In-memory event spine + HarnessRunStatus
|
Harness |
| Durable observability | Journals, status stores, sinks, latency metrics | Harness |
| Testkit | Fakes, recorders, trajectory assertions | Harness |
| Capability | What it does | Where |
|---|---|---|
| Nodes & edges | Named nodes wired by static/conditional edges over typed state | Graph Runtime |
| Dynamic routing |
Command.goto + routing precedence resolve next targets |
Graph Runtime |
Send fan-out (map-reduce) |
Schedule nodes with per-invocation args for the map step | Graph Runtime |
| Reducers & channels | Merge branch updates deterministically; channel-per-field state | Graph Runtime |
| Parallel fan-out | Run multi-node supersteps concurrently, folded in index order | Graph Runtime |
| Checkpoints & durability | Persist at superstep boundaries; in-memory/file/SQLite backends | Graph Runtime |
| Time travel | Read/fork/update state history against a checkpointer | Graph Runtime |
| Interrupts & resume | Human-in-the-loop pause and resume with a payload | Graph Runtime |
| Subgraphs | Embed a compiled graph as a node (graph-runs-graph) | Graph Runtime |
| Sub-agent nodes | Embed a harness agent as a graph node | Graph Runtime |
| Recursion policy | Bound depth, per-node visits, and total steps | Graph Runtime |
| Orchestration tools | Model-callable child-work supervision (orchestrate_*) |
Graph Runtime |
| Streaming & events |
GraphEvents + StreamMode projections |
Graph Runtime |
| Durable graph observability | Journals, status store, latency metrics | Graph Runtime |
| Topology export | JSON/Mermaid export of a graph's structure | Graph Runtime |
| Graph testkit | Deterministic node doubles + graph assertions | Graph Runtime |
| Capability | What it does | Where |
|---|---|---|
| Component identity |
ComponentId/ComponentKind/ComponentMetadata describe capabilities |
Registry |
| Capability registry | Register/resolve models, tools, graphs, agents by name | Registry |
Bind .rag/.ragsh by name |
Allow-list validation of agent-authored source before it runs | Registry |
| Model catalog | Offline pricing, context windows, capability facts | Registry |
| Capability | What it does | Where |
|---|---|---|
Expressive .rag
|
Declarative, side-effect-free blueprints that compile to the runtime | Expressive Language (.rag) |
REPL .ragsh
|
Imperative, capability-bound interactive orchestration (RLM loop) | REPL Language (.ragsh) |
| Capability | What it does | Where |
|---|---|---|
| Offline mock model | Deterministic, network-free default build | Providers |
| OpenAI + compatible hosts | One adapter for OpenAI, Anthropic, Ollama, DeepSeek, Groq, xAI, OpenRouter, Together, Mistral | Providers |
| List available models |
OpenAiModel::list_models() — runtime model discovery via GET /models
|
Providers |
| Provider inference | Resolve a provider from a model string | Providers |
| Capability profiles | Reject impossible requests; pick capability-satisfying fallbacks | Providers |
| Capability | What it does | Where |
|---|---|---|
| Harness testkit | Scripted models, fake tools, trajectory asserts | Harness |
| Graph testkit | Node doubles + fluent graph assertions | Graph Runtime |
| Storage conformance | Reusable contracts for task stores and checkpointers | Graph Runtime |
New capabilities that harden the SDK surface. Deep docs live on the linked pages.
| Capability | What it does | Where |
|---|---|---|
| Model lifecycle gating |
ModelRegistry::resolve skips ModelStatus::Retired; ModelSelection.allow_retired = true opts back in |
Harness |
orchestrate_list filters |
Filter managed tasks by kind, created_after_ms, created_before_ms
|
Graph Runtime |
| Unknown-tool recovery |
UnknownToolCall carries original arguments; UnknownToolPolicy{Fail,ReturnToolError,Rewrite}
|
Harness |
| Stable event ids |
EventSink::with_stream_id; ids {stream_id}-evt-{offset} survive restarts |
Harness |
| Workspace isolation |
RunContext::with_workspace, prepare/cleanup_workspace, WorkspaceDescriptor::enforce, AgentEvent::Workspace*
|
Harness |
| Tool exposure auditing |
AgentEvent::ToolsFiltered; ContextualToolSelectionMiddleware::inheriting(...)
|
Harness |
| Control outcomes |
AgentEvent::ControlApplied, MiddlewareControl::{kind,precedence}, precedence-based request_control
|
Harness |
| Tool policy enforcement | ToolPolicyMiddleware::{require_sandbox, require_approval, enforce_result_bytes} |
Harness |
| Model delta attribution |
AgentEvent::ModelDelta now carries run_id
|
Harness |
| Thinking-token streaming |
MessageDelta.reasoning, ModelDelta.reasoning, and Usage.reasoning_tokens keep thoughts separate from visible text |
Harness |
| Budget reservation & cost |
BudgetLimits.max_cached_input_tokens, AgentEvent::{BudgetReserved,BudgetReconciled}, preflight reservation |
Harness |
| Parallel map/reduce controls | ParallelOptions::{with_item_timeout, with_total_timeout, with_cancellation} |
Graph Runtime |
| Registry introspection |
ComponentKind adds Middleware/Checkpointer/TaskStore/Listener; RegistrySnapshot.aliases; name-reuse diagnostic |
Registry |
| Storage conformance | graph::testkit::conformance::{taskstore_concurrent_contract, checkpointer_concurrent_contract, taskstore_replay_contract} |
Graph Runtime |
- Want to enforce tool safety (sandbox/approval/output caps)? → Tool policy enforcement
- Need a token/cost budget with preflight reservation? → Budget reservation & cost
- Got a model call for an unregistered tool? → Unknown-tool recovery
- Want to stop calling a deprecated model? → Model lifecycle gating
- Running agents in parallel with timeouts/cancellation? → Parallel map/reduce controls
- Need to isolate a run to a workspace? → Workspace isolation
- Want stable, replayable event ids? → Stable event ids
- Supervising child work from a model? → Orchestration tools
- Pausing for human input mid-graph? → Interrupts and resume
-
Letting a model author its own workflow? →
Bind
.rag/.ragshby name - Verifying a run's shape in a test? → Harness testkit / Graph testkit
- Home — orientation and the five-surface overview.
- Examples — runnable end-to-end demonstrations.
- Architecture — how the surfaces compose.
Recursive language-model (RLM) harness for Rust.
Getting started
Concepts
Modules
Providers
Contributing