Summary
The boxcars gem (v0.10.11, 64K+ downloads, released June 27, 2026) is an actively maintained Ruby LLM agent orchestration framework not instrumented by this SDK. Inspired by LangChain, it provides composable "Boxcar" tools and "Train" orchestrators driven by LLM generation, with a clear .run() execution surface across OpenAI, Anthropic, Groq, Gemini, Ollama, Perplexity, Cohere, and other providers.
What is missing
No instrumentation exists for any boxcars execution surface. Key APIs that should be instrumented:
Boxcar Execution (individual tools backed by LLM calls)
Boxcar#run(query) — Executes a single boxcar against a query. For LLM-backed boxcars (e.g., Boxcars::Conversation, Boxcars::SQL, Boxcars::ActiveRecord), this triggers a model generation call. Returns a string or structured result.
Train Execution (multi-boxcar agent orchestration)
Train#run(query) — Drives a multi-boxcar agent loop. The train uses a directing LLM (via ToolTrain with native tool calling, or ZeroShot with ReAct text reasoning) to select and run individual boxcars in sequence until a final answer is produced. Each turn is a new LLM generation call.
Boxcars::ToolTrain#run(query) — Train variant using provider-native tool calling (function calling) to select boxcars. This is the recommended path for OpenAI and Anthropic.
Boxcars::ZeroShot#run(query) — Legacy ReAct-style train using text-based reasoning (no native tool calling).
XAgent (autonomous agent)
Boxcars::XAgent.run(question) — An autonomous agent that uses OpenAI function calling in a loop to solve complex multi-step tasks, potentially running many LLM turns and boxcar executions.
Structured Outputs
Boxcars::JSONEngineBoxcar#run(query) — LLM generation with JSON Schema-enforced structured output.
Expected instrumentation
Train/agent run spans should capture:
- Input: initial query
- Metadata: train type (
ToolTrain, ZeroShot, XAgent), directing LLM engine name and model, list of available boxcars, provider
- Output: final answer after all turns
- Metrics: aggregated token usage across all turns (if available from engine)
Boxcar execution child spans should capture:
- Boxcar name and class
- Input query
- Output result
Braintrust docs status
not_found — boxcars is not listed anywhere in Braintrust's integrations directory at https://www.braintrust.dev/docs/integrations. The SDK integrations page at https://www.braintrust.dev/docs/integrations/sdk-integrations does not mention Boxcars or any equivalent agent orchestration framework for Ruby.
Upstream sources
Local repo files inspected
lib/braintrust/contrib.rb — registers only 4 integrations: OpenAI, RubyOpenAI, RubyLLM, Anthropic. No Boxcars integration.
lib/braintrust/contrib/ — contains only openai/, ruby_openai/, ruby_llm/, anthropic/, and rails/ directories. No boxcars/ directory.
Appraisals — no appraisal scenarios for boxcars
braintrust.gemspec — no mention of boxcars
- Grep for
boxcars, Boxcars, BoxcarsAI, ZeroShot, ToolTrain, XAgent across lib/braintrust/ returns zero matches
Summary
The
boxcarsgem (v0.10.11, 64K+ downloads, released June 27, 2026) is an actively maintained Ruby LLM agent orchestration framework not instrumented by this SDK. Inspired by LangChain, it provides composable "Boxcar" tools and "Train" orchestrators driven by LLM generation, with a clear.run()execution surface across OpenAI, Anthropic, Groq, Gemini, Ollama, Perplexity, Cohere, and other providers.What is missing
No instrumentation exists for any
boxcarsexecution surface. Key APIs that should be instrumented:Boxcar Execution (individual tools backed by LLM calls)
Boxcar#run(query)— Executes a single boxcar against a query. For LLM-backed boxcars (e.g.,Boxcars::Conversation,Boxcars::SQL,Boxcars::ActiveRecord), this triggers a model generation call. Returns a string or structured result.Train Execution (multi-boxcar agent orchestration)
Train#run(query)— Drives a multi-boxcar agent loop. The train uses a directing LLM (viaToolTrainwith native tool calling, orZeroShotwith ReAct text reasoning) to select and run individual boxcars in sequence until a final answer is produced. Each turn is a new LLM generation call.Boxcars::ToolTrain#run(query)— Train variant using provider-native tool calling (function calling) to select boxcars. This is the recommended path for OpenAI and Anthropic.Boxcars::ZeroShot#run(query)— Legacy ReAct-style train using text-based reasoning (no native tool calling).XAgent (autonomous agent)
Boxcars::XAgent.run(question)— An autonomous agent that uses OpenAI function calling in a loop to solve complex multi-step tasks, potentially running many LLM turns and boxcar executions.Structured Outputs
Boxcars::JSONEngineBoxcar#run(query)— LLM generation with JSON Schema-enforced structured output.Expected instrumentation
Train/agent run spans should capture:
ToolTrain,ZeroShot,XAgent), directing LLM engine name and model, list of available boxcars, providerBoxcar execution child spans should capture:
Braintrust docs status
not_found—boxcarsis not listed anywhere in Braintrust's integrations directory at https://www.braintrust.dev/docs/integrations. The SDK integrations page at https://www.braintrust.dev/docs/integrations/sdk-integrations does not mention Boxcars or any equivalent agent orchestration framework for Ruby.Upstream sources
Local repo files inspected
lib/braintrust/contrib.rb— registers only 4 integrations: OpenAI, RubyOpenAI, RubyLLM, Anthropic. No Boxcars integration.lib/braintrust/contrib/— contains onlyopenai/,ruby_openai/,ruby_llm/,anthropic/, andrails/directories. Noboxcars/directory.Appraisals— no appraisal scenarios forboxcarsbraintrust.gemspec— no mention ofboxcarsboxcars,Boxcars,BoxcarsAI,ZeroShot,ToolTrain,XAgentacrosslib/braintrust/returns zero matches