A multi-provider LLM runtime with reasoning loops, multi-agent orchestration, RAG, and tool calling. Agents can trigger complete workflows with no network hop.
Wiring agents to real systems is the hard part — tools, schemas, retries, memory, multi-step plans, and a different SDK per model. eru-ai gives you one configurable runtime over Anthropic, OpenAI, Bedrock and Gemini.
Built-in agent types, RAG, conversation memory, and the ability to trigger eru-functions workflows in-process mean you define an agent in JSON, swap models with a config, and ship.
REFLEX, REASONING, ORCHESTRATOR — the right tool per task.
Iterative think → act → observe with extended thinking (Anthropic) and reasoning effort (OpenAI o-series). Every step captured.
An OrchestratorAgent decomposes tasks into sub-agent workflows with shared Blackboard state — parallel or sequential.
Banking, KYC, e-commerce, messaging, analytics, e-sign, repos and more — JSON-schema validated, dependency-aware.
Fixed, recursive, sentence, paragraph, semantic — with overlap, structure-preserving separators and language hints.
Token-aware history with summarization, TTL persistence and per-model budget profiles — production-safe by default.
Plug a vector store — Pinecone, ChromaDB, pgvector, S3 Vectors — and agents recall context across conversations.
Agents carry full eru-functions workflows as embedded resources and trigger them in-process — no network, no glue.
Streaming Model and Reasoning Model extensions on every provider — bring your own model, same contract.
One JSON definition flows through the agent factory into a reasoning loop that draws on the model, tools, retrieval and memory — then emits a traced result.
No SDK lock-in. Swap providers, models, tools or memory by editing config.
// REASONING agent with tools + semantic memory { "agent_type": "REASONING", "name": "invoice_extractor", "model": { "provider": "anthropic", "model_id": "claude-sonnet-4-6", "extended_thinking": true }, "tools": ["ckyc_verify", "processo_sql"], "semantic_memory": { "vector_store": "pinecone", "namespace": "invoices" }, "conversation": { "max_turns": 20, "summarization_threshold": 12 }, "embedded_funcgroup": "invoice_post_process" }