rutis
Cordis core paradigm in idiomatic Rust: five-pillar kernel + minimal agent framework on the aimux LanguageModel seam
rutis ports the Cordis core paradigm to idiomatic Rust with a minimal agent framework
A Rust workspace that implements plugin, fiber, and event-bus primitives, plus a small agent framework built on the aimux LanguageModel seam.
The five pillars of the kernel
rutis is an idiomatic Rust implementation of the Cordis core paradigm, spun out from the min-cordis project as a standalone Rust workspace library. The README states its design rests on five pillars. The first is that a plugin is the assembly unit: a single apply call provides services, registers listeners, and performs cleanup. The second is the fiber, a lifecycle container built as a six state state machine with dependency gating, cascade unload, and exactly once cleanup. The third is the service, a type keyed registry together with an isolate scope. The fourth is the event bus, which the README describes with four dispatch semantics: emit, parallel, serial, and waterfall. The fifth is dependency driven reload, where unloading a provider evicts its consumers and triggers an automatic reload. These primitives are collected in the rutis crate, which the README says holds the kernel with Ctx, fiber, registry, event bus, and effect, backed by 115 contracts and differential tests. A second crate, rutis-cordis, provides a business agnostic compatibility layer with the wire transport seam, an in flight table, cancellation, timeout, and orphan counting, plus the Cordis vocabulary of hello capability sets, event modes, workflow kinds, and load arbitration. The design keeps these layers free of domain specific knowledge so they can host different front ends.
Crates and the agent framework
The workspace is split into several crates beyond the kernel. aimux-llm is a standalone LLM service plugin in the rutis plugin shape: apply registers an llm service, and the factory, keyed cache, listModels cache, and fallback all live there with no bridge and no domain knowledge. rutis-dsh is the entry and composition root: it starts the rutis runtime, loads aimux-llm, and serves the registry's services to a host process through a business agnostic bridge, with LlmFace as pure shape glue. rutis-agent is the minimal agent framework. It combines an aimux LanguageModel service, a ToolsPlugin, and an AgentDriverPlugin that streams followup and runs waterfall middleware while broadcasting agent events, plus an in memory session and a ratatui terminal UI. The README summarizes the agent crate in one line as an aimux LanguageModel service, a ToolRegistry plugin, a driver plugin implementing the Agent interface, and an in memory session that is the source of truth for the continuous loop. rutis-cli is the command line form, a minimal coding agent terminal UI available from GitHub Releases, while cargo install rutis-cli pulls an older crates.io version without the ratatui UI. The agent and cli crates consume aimux from crates.io, which the README describes as a unified LLM access layer with LanguageModel and CallOptions covering 329 providers, so no side by side checkout is required.
Running and verifying it
The README gives a quick start that runs the full test suite with cargo test, which covers kernel differential tests and the first two of three agent verification layers. Prebuilt binaries come from GitHub Releases, or the CLI can be built from source with cargo build -p rutis-cli. A scripted mode, rutis-cli in scripted mode, runs an offline demo with no API token. The agent crate offers example demos: a real backend two turn conversation with dependency driven eviction needs a DeepSeek API token, an interactive terminal UI streams token by token with visible tools and Esc to cancel, and a scripted terminal UI uses an offline backend with no token. A real end to end test marked ignore needs a token and is run manually rather than in CI. The provider and model can be overridden with the AIMUX_PROVIDER and AIMUX_MODEL environment variables, for example pointing at a local Ollama model with AIMUX_PROVIDER=ollama and AIMUX_MODEL=qwen3:8b. The agent verification is described in three layers. The unit layer uses a ScriptedLlm that implements the real LanguageModel interface to exercise loop logic, multi turn history, max steps, cancellation, and failure feedback. The integration layer uses an aimux MockReplayModel to record and replay, checking double gating, llm eviction and reload, fiber unload cancellation, and event observation. The real end to end layer exercises a real provider with tool calls but stays out of CI. The project is licensed MIT, inherited from Cordis by Shigma.
Editorial conclusion
The repository is published under the MIT license and its most recent commit was recorded on 2026-08-26. The source lives at https://github.com/eric8810/rutis.
Community notes