Rubyflow iconRubyflowAug 14, 2026 ~1 min source read

Omakase 0.2 — agents as plain Ruby objects

I released Omakase 0.2, a small agent framework on top of RubyLLM about 800 lines. The idea is that an agent is an ordinary Ruby object: its fields are state, its public methods are what the model can call (no tool registry, no JSON schemas to keep in sync.

Share this story

Send the public story page.

Useful takeaways from this story.

I released Omakase 0.2, a small agent framework on top of RubyLLM about 800 lines.

The idea is that an agent is an ordinary Ruby object: its fields are state, its public methods are what the model can call (no tool registry, no JSON schemas to keep in sync.

describe above a method is the description the model reads), and the methods you declare without a body are written by the model at runtime.

Building the complete brief

The page is ready to read now. The fuller skim-friendly version will appear here automatically.

The useful part

I released Omakase 0.2, a small agent framework on top of RubyLLM about 800 lines. The idea is that an agent is an ordinary Ruby object: its fields are state, its public methods are what the model can call (no tool registry, no JSON schemas to keep in sync. describe above a method is the description the model reads), and the methods you declare without a body are written by the model at runtime.

How it works

  • There's also:predict for one-shot structured output, MCP servers and SKILL.md directories that arrive as methods, per-method model selection, attachments, and a FakeChat so agents can be tested without a...
  • and are blunt about the fact that generated code runs with instance_eval, so untrusted input belongs to:predict unless you swap in your own executor.
  • under the default:code_act strategy the model answers by writing Ruby that is evaluated on the agent itself and calling finish(value), so the answer is computed rather than retyped as JSON.

Keep reading in the app

Open the app view to save this story, compare related coverage, and continue from the same source.

Open in app