AI (oridecon-ai)
Agents, LLMs, RAG, Skills — wired together, no glue code.

oridecon-ai is the AI layer of the oridecon framework: a thin coordinator that wires the oridecon-ai family — agents, LLMs, RAG, memory, skills, MCP, session, workers, observability, feedback, guard, governance, evaluation, prompt, relay — into the container through entry-point discovery. one install, one Application.boot, and the whole family is resolvable by contract. every backend is swappable: run it on your own infra or point it at an API.
- wired, not glued. agents, llms, rag, memory — one container, one boot call.
- async, end to end. the container, the modules, the controllers — concurrency-safe by construction.
- contracts everywhere. every package talks through protocols, so swapping an implementation never ripples.
- local-first. defaults point at any OpenAI-compatible server — Ollama, LM Studio, vLLM — hosted providers are a config change away.
→ full docs at oridecon.dev
install
Section titled “install”uv add "oridecon[ai,web]" # framework + web + ai + server (what the example below uses)uv add oridecon-ai # just the coordinatorpip install "oridecon[ai,web]"60 seconds, end to end
Section titled “60 seconds, end to end”from oridecon import Applicationfrom oridecon.web import Controller, get, WebModulefrom oridecon.web.server import run_serverfrom oridecon.ai.llm import LLMModule, ClientConfigfrom oridecon.contracts.ai import LLMClientProtocol, ChatMessage, Role
class ChatController(Controller): def __init__(self, llm: LLMClientProtocol): self.llm = llm
@get("/chat") async def chat(self, q: str) -> dict: messages = [ChatMessage(role=Role.USER, content=q)] result = await self.llm.complete(messages) return {"reply": result.unwrap().content}
app = Application()app.add_modules( [ # Local-first. To talk to a hosted provider instead, set # `provider="openai"` (or "anthropic", "groq", ...) and supply # the matching API key. LLMModule.configure( ClientConfig( provider="ollama", model="llama3.2", api_base="http://localhost:11434", api_key="ollama", ) ), WebModule.configure(controllers=[ChatController]), ])
run_server(app, port=8000)→ http://localhost:8000/chat?q=hello
No API key needed if you’re pointing at a local model. To talk to a hosted provider instead, set
provider="openai"(or"anthropic","groq", …), dropapi_base, and supply the matching API key — or letLLMModule.configure()read the whole block fromORI_AI_LLM__*env vars.
what just happened?
Application.bootassembled two modules — an LLM client and a web server — into one container and started them together.LLMModule.configure(...)declared a provider, a model, and an endpoint. No SDK, no per-provider code.ChatControllerresolvedLLMClientProtocolby type from the container. Swap the provider; the controller never changes.
oridecon-ai├── umbrella entry point · discovers subsystems├── llm provider-agnostic clients├── agents tools, react, and beyond├── rag chunkers, embedders, retrieval pipelines├── memory working, episodic, semantic stores├── skills versioned agent capabilities├── session conversation state and resumption├── mcp model-context-protocol clients├── workers background AI jobs├── observability tracing and metrics├── feedback quality loops├── guard input/output safety gates├── governance policy, audit, budgets├── evaluation evals and quality gates├── prompt versioned prompt templates├── relay protocol conversion engine└── relay-gateway HTTP gateway for relaywhat’s in the box
Section titled “what’s in the box”the whole family lives in this repository under experimental/ai/ — experimental tier, API stability is not guaranteed between releases. same container, same contracts, same rules as the stable core.
oridecon-ai— the coordinator (this package)oridecon-ai-llm— provider-agnostic clients for Ollama, OpenAI, Anthropic, Groq, Mistral, and moreoridecon-ai-agents— tools, react, and beyondoridecon-ai-rag— chunkers, embedders, retrieval pipelinesoridecon-ai-memory— working, episodic, semantic storesoridecon-ai-skills— versioned agent capabilitiesoridecon-ai-session— conversation state and resumptionoridecon-ai-mcp— model-context-protocol clientsoridecon-ai-workers— background AI jobsoridecon-ai-observability— tracing and metricsoridecon-ai-feedback— quality loopsoridecon-ai-guard— input/output safety gatesoridecon-ai-governance— policy, audit, budgetsoridecon-ai-evaluation— evals and quality gatesoridecon-ai-prompt— versioned prompt templatesoridecon-ai-relay— protocol conversion engineoridecon-ai-relay-gateway— HTTP gateway for relay
early on purpose
Section titled “early on purpose”The AI layer is in 0.1 — which means you can still change it. APIs may shift before 1.0, so pin your versions, and tell us what feels wrong. Shaping a framework is more fun when it’s still soft.
pointers
Section titled “pointers”- full docs → oridecon.dev
- the stable core → oridecon
- the AI family → experimental/ai in this repository