Roder mission / June 2026

Roder

Reusable runtime infrastructure for coding agents

Roder exists so teams can build serious coding agents without rebuilding the runtime layer: tools, policy, providers, state, events, replay, and clients.

Roder icon

Roder is not another sealed coding assistant. It is the runtime beneath coding assistants, eval runners, RL environments, internal automation, and domain-specific agent products. The mission is to turn the common hard parts of agent execution into shared, inspectable, extensible Rust infrastructure.

1. Short version

Roder is an open-source Rust runtime for coding agents. It handles the parts that become painful once an agent moves beyond a demo: context assembly, provider orchestration, tool execution, filesystem mediation, policy enforcement, session state, event streaming, replay, and extension.

The target audience is practical: teams building agent products, AI labs running evaluations or training infrastructure, and platform engineers embedding coding agents into real developer workflows. They need a runtime they can inspect, customize, replay, and trust under load.

Roder is not the final coding agent. It is the runtime layer beneath many of them.

2. Why Roder exists

Most agent systems start as a model loop. Then the real requirements arrive: tools, permissions, file access, shell access, browser access, session history, context selection, approvals, telemetry, retries, cancellation, replay, and persistence. By the time the product is reliable, it has quietly grown a runtime.

Today that runtime is rebuilt inside every product, eval harness, and lab workflow. That creates fragmentation: transcript formats do not line up, provider wrappers leak everywhere, context pipelines are hard to compare, and teams fork entire projects just to replace storage, policy, model wiring, or sandbox behavior.

  • Roder exists to make the agent runtime reusable.
  • It is lower-level than a polished end-user app, but higher-level than a bag of unrelated crates.
  • It is provider-neutral by design, so no model API owns the architecture.
  • It should let products, labs, and platform teams extend heavily without living on a permanent fork.

3. Mission and design principles

Roder's mission is to become the maintained reference runtime for coding-agent execution. It should be the place where core runtime concerns are solved once, tested seriously, exposed through clear interfaces, and reused by many downstream products and research systems.

The vision is not a single perfect assistant. The vision is an ecosystem where new providers, tools, UIs, sandboxes, memory systems, policy layers, and research ideas can plug into a shared execution model instead of starting from scratch.

  • Keep the core small and strict. The runtime owns lifecycle ordering, cancellation, capability enforcement, and event semantics.
  • Make major subsystems replaceable. Providers, storage, context, policy, sandboxes, and UI surfaces should plug in without a fork.
  • Normalize provider differences. Model APIs can change quickly; the rest of the harness should speak canonical Roder types.
  • Treat access as a capability. Filesystem, shell, network, browser, and secret access should be explicit, scoped, and auditable.
  • Record what happened. Runs should produce structured events that support resume, replay, evaluation, debugging, and training data.
  • Let every UI be a client. The TUI, desktop clients, IDEs, web surfaces, tests, and RL environments should use the same control plane.

4. System architecture overview

Roder is best understood as a layered system. Applications sit at the edge. A local app server provides the control plane. The core runtime manages turns, tools, context, and permissions. Beneath that sits a native extension kernel through which major subsystems can be replaced or augmented. At the bottom is an execution substrate of filesystem, process, network, and storage brokers.

Figure 1

Runtime boundaries

Selected boundary

Clients

Clients are deliberately thin. They send turn requests, subscribe to events, render state, and keep product-specific UX outside the runtime.

  • TUI
  • Desktop
  • IDE
  • Headless runner
Selected boundary

Control plane

The app server is the stable boundary between clients and the harness. It owns session identity, subscriptions, approvals, and extension introspection.

  • sessions
  • turns
  • events
  • approvals
Selected boundary

Roder core runtime

The core owns the parts that must stay consistent across products: turn ordering, cancellation, canonical IR, policy gates, tool routing, and replay semantics.

  • turn manager
  • event bus
  • tool router
  • canonical IR
Selected boundary

Replaceable subsystems

Subsystem providers plug into the core through typed extension points. This is where serious customization happens without forking the host loop.

  • inference engine
  • context planner
  • session store
  • policy engine
Selected boundary

Host resources

Resource brokers are the only way the harness touches the machine. Files, shells, networks, secrets, and storage are mediated through capabilities.

  • filesystem
  • shell
  • network
  • secrets

This separation is what allows a polished coding assistant, a headless benchmark runner, and an RL environment to reuse the same runtime. Each can present a different interface or policy model while still depending on the same canonical event model, tool mediation layer, and session semantics.

Figure 2

Turn lifecycle and data flow

Active stage

User / task

A request enters as an interactive prompt, automated task, benchmark case, or reinforcement-learning environment step.

Active stage

App server

The server authenticates the client, opens the session, starts the turn, and exposes the same stream to every UI or harness.

Active stage

Session + turn manager

The runtime creates a durable turn boundary, wires cancellation, and records the sequence of events needed for resume and replay.

Active stage

Context planner

Context providers submit typed blocks; the planner chooses the final budgeted request for the active model capability profile.

Active stage

Inference engine

An engine translates canonical Roder request IR into a provider wire dialect and streams canonical inference events back.

Active stage

Tool router + brokers

Tool calls are routed through scoped handles, approval policy, sandbox backends, and event sinks before they touch the host.

Active stage

Session / checkpoint store

Turn items, runtime events, checkpoints, branch metadata, and exported traces persist through replaceable store providers.

Active stage

Client event stream

The client receives typed events rather than private runtime objects, so every surface can render the same run consistently.

5. Native extension kernel

The most important architectural move in Roder is to treat native extensions as subsystem providers rather than just optional tools or hook scripts. A native extension should be able to add behavior, but also to provide or replace core services such as inference engines, session stores, context planners, policy evaluators, or sandbox backends. This is how Roder supports heavy customization without a fork.

Figure 3

Native extension surface

Install

Extension registry builder

Extensions install into a typed registry. The registry records capabilities, manifests, providers, and lifecycle contributors before a run starts.

Provider

Inference engines

Replace the model backend while preserving canonical request IR and canonical inference events for the rest of the harness.

Provider

Context planners

Swap retrieval, memory, compaction, prompt planning, and provider-specific shaping without changing turn orchestration.

Provider

Session and checkpoint stores

Own durable state, checkpoint logs, branch metadata, extension-owned state, migrations, and trace export formats.

Provider

Policy engines

Evaluate approvals, capability rules, enterprise restrictions, audit requirements, and sensitive-action gates.

Provider

Sandbox backends

Filesystem, shell, network, secrets, and process execution are mediated by backends with explicit scoped capabilities.

Contributor

Telemetry + replay

Event sinks, exporters, and replay hooks observe canonical events without owning the main runtime loop.

Contributor

Tool contributors

Register tools and schemas that the core can route through policy, approval, execution brokers, and canonical event output.

A minimal extension API revolves around an installation step against an extension registry builder. The registry collects both contributors that participate in lifecycle phases and providers that own replaceable services. This distinction is useful: a context contributor adds data, while a context planner owns strategy; an approval contributor participates in review, while a session store owns persistence.

  • Inference engines: stream canonical model events regardless of provider protocol.
  • Wire dialects: encode and decode provider-specific APIs while keeping the core provider-neutral.
  • Context internals: retrieval, planning, compaction, instruction shaping, and memory.
  • Persistence: session stores, checkpoint stores, and trace exporters.
  • Policy and safety: approval logic, enterprise constraints, and audit sinks.
  • Execution substrate: sandbox backends, filesystem brokers, shell strategies, and secret stores.

6. Inference abstraction and wire dialects

A major reason harnesses become provider-bound is that provider-specific request and streaming formats leak everywhere. Roder should make a clean separation between the harness IR and the wire protocol used to talk to a model provider. The core runtime should construct a canonical request that captures instructions, conversation items, tool schemas, output requirements, and runtime hints. It should then hand that request to an inference engine.

The inference engine is free to implement any backend: a Responses-style API, a Chat-Completions-style API, Anthropic-style messages, a local model runner, or a future protocol that does not exist today. Its responsibility is to translate from canonical Roder request IR into the provider-specific representation and to emit a canonical stream of inference events back to the host.

ConcernRoder-ownedExtension-owned
Canonical turn requestYesNo
Provider HTTP or IPC transportNoYes
Wire request formatNoYes
Canonical inference eventsYesNo
Provider capability reportingSharedShared

This model creates an important long-term property: the rest of the harness does not care if the active provider uses responses, messages, chat-style arrays, graph-structured plans, or something entirely new. If a downstream lab invents a novel inference technology, it implements an inference extension rather than rewriting the harness.

7. Context internals

In many agent systems, context is treated as a blob of prompt text. Roder should instead model it as a structured subsystem. Coding agents need repository facts, file selections, plans, policy constraints, active tool affordances, environment descriptions, retrieval results, previous-turn summaries, and sometimes hidden control instructions. Those data sources have different lifetimes and different costs, so they should not all be concatenated blindly.

A practical design is to separate context providers from a context planner. Providers surface candidate context blocks such as repository metadata, retrieved code, memory records, or policy instructions. The planner decides what to include, in what order, and how to spend a limited token budget. That gives labs freedom to experiment with retrieval, compaction, or prompt-shaping strategies while keeping the host loop stable.

  • Context providers resolve typed blocks such as instructions, repository facts, memory, environment state, and retrieved documents.
  • A context planner turns those candidates into a budgeted plan for a given turn and model capability profile.
  • Compaction and summarization become first-class strategies instead of ad hoc prompt surgery.
  • Provider-specific shaping can happen at the inference boundary rather than leaking throughout the runtime.

8. Tools, safety, and execution brokers

Roder is not simply an LLM wrapper. It is an execution environment. That means safety is architectural, not cosmetic. Tools should execute through brokers that expose scoped capabilities rather than ambient access to the host machine. A tool executor may be given a workspace-limited filesystem handle, an approval-aware shell runner, a network broker restricted by policy, and an event sink for traceability.

This model supports both local interactive use and locked-down automated use. In a personal setting, users may allow broad workspace access with approval prompts for destructive commands. In a research setting, tool execution may occur inside a dedicated sandbox backend. In an enterprise setting, policy contributors may veto access to secrets, external networks, or specific command families.

  • Technical sandbox: what is technically reachable by the process or sandbox backend.
  • Capabilities: what the session, extension, or tool has been granted.
  • Approval policy: which actions must pause and ask the user or a supervising service.
  • Auditability: every sensitive action should become a structured event.

9. Sessions, persistence, and replay

Persistence is one of the clearest reasons to make Roder a real harness instead of an app-specific loop. Product systems need history and resume. Research systems need immutable traces. RL systems need trajectories that can be replayed or scored. The core runtime should therefore orchestrate session stores and checkpoint stores as explicit providers rather than burying transcripts in a UI cache.

A session store manages higher-level records such as threads, turns, turn items, branching, and listing. A checkpoint store manages lower-level runtime events and snapshots so the system can recover or replay efficiently. Extensions should also be able to persist private typed state through extension-owned codecs and migration hooks. This keeps the host generic while letting sophisticated extensions maintain caches, indexes, or provider state across resumes.

  • Resume a prior coding session from durable state.
  • Fork a thread from an earlier turn and explore a different path.
  • Replay the same run against a different model provider.
  • Export structured traces for evaluation or training.
  • Persist extension-owned state without exposing extension internals to the host.

10. Control plane and clients

Roder should include an embedded local app server as its control plane. This server manages sessions, turns, event subscriptions, extension introspection, approvals, tool invocation, and persistence management. Once that protocol exists, the TUI becomes one client among many. Headless execution, IDE integrations, web frontends, test harnesses, or RL environments can all consume the same protocol instead of reaching directly into runtime internals.

This separation pays off quickly. It becomes easier to test the runtime, easier to build multiple interfaces, and easier to reason about session identity and event delivery. It also makes Roder attractive as infrastructure: a downstream project can build a completely different user experience while relying on the same harness core and the same extension ecosystem.

11. Roder as a research and RL harness

Roder's event model and subsystem boundaries make it naturally suitable for reinforcement learning and evaluation. A task runner can create a workspace, start a thread, feed in a problem statement, observe canonical tool-use and model events, score the resulting artifact, and export the run as a trajectory. Because the runtime is provider-neutral, the same task can be replayed across different models or inference technologies with much less glue code.

This is important strategically. A harness that only serves an interactive TUI is useful, but limited. A harness that also serves evaluation, replay, trace export, and controlled experimentation becomes infrastructure. That is one of the strongest reasons to keep Roder lower-level than a polished product while still shipping a reference user interface.

12. Governance and ecosystem role

Roder should remain open source, forkable, and welcoming to new ideas. At the same time, it should be opinionated about stability. Core invariants, canonical types, and extension contracts should evolve through deliberate RFC-style changes. Experimental ideas should live in extension crates until their abstraction proves broadly useful. Common interfaces should move upstream; product-specific behavior should generally remain downstream.

The useful comparison is not process or culture; it is responsibility. Roder should optimize for long-term architectural integrity, clear subsystem boundaries, and an ecosystem that benefits from shared runtime infrastructure rather than incompatible reinventions.

13. Implementation roadmap

Phase 1: Core runtime

  • Canonical turn items and event bus.
  • Turn/session lifecycle and cancellation.
  • Filesystem and process brokers.
  • One inference engine and one session store.
  • Reference CLI or TUI.

Phase 2: Native extension kernel

  • Stable extension API crate.
  • Extension registry builder.
  • Inference, context, policy, and persistence registration.
  • Extension manifest introspection.

Phase 3: Provider plurality

  • Responses-style engine.
  • Chat-Completions-style engine.
  • Anthropic-style engine.
  • Mock/local engines for testing.
  • Capability negotiation across providers.

Phase 4: Persistence and replay

  • Event log and checkpoints.
  • Resume and fork.
  • Trace export.
  • Replay across providers.

Phase 5: App server and ecosystem

  • Stable control-plane protocol.
  • TUI as a client.
  • Headless execution.
  • IDE and web integration paths.
  • Later process/WASM extension support.

14. Closing statement

Roder does not need to predict every future product shape. It needs to provide a runtime that can absorb new requirements without forcing every team back to a blank page. If the ecosystem has a durable provider-neutral runtime, product builders can focus on UX, labs can focus on research, model creators can focus on inference quality, and training teams can focus on environments and evaluation.

The strongest version of the project is simple to state: new inference technologies become engines, new storage approaches become stores, new context strategies become planners, new sandboxes become runners, and new products become clients. The runtime remains shared.

Building on this problem? The Roder team works with AI labs and startups on RL infrastructure, embedded harnesses, product integrations, and OSS sponsorship. Contact the team.