Skip to content

jarvis_agent

jarvis_agent

Jarvis Agent backend — agent-level inference with tool calling.

Classes

JarvisAgentBackend

JarvisAgentBackend(engine_key: Optional[str] = None, agent_name: str = 'orchestrator', tools: Optional[List[str]] = None, telemetry: bool = False, gpu_metrics: bool = False, model: Optional[str] = None, max_turns: Optional[int] = None, skills_enabled: bool = True, overlay_dir: Optional[Path] = None)

Bases: InferenceBackend

Agent-level inference via SystemBuilder + JarvisSystem.ask().

Supports tool calling via the agent harness. Works for both local and cloud models.

Source code in src/openjarvis/evals/backends/jarvis_agent.py
def __init__(
    self,
    engine_key: Optional[str] = None,
    agent_name: str = "orchestrator",
    tools: Optional[List[str]] = None,
    telemetry: bool = False,
    gpu_metrics: bool = False,
    model: Optional[str] = None,
    max_turns: Optional[int] = None,
    skills_enabled: bool = True,
    overlay_dir: Optional[Path] = None,
) -> None:
    from openjarvis.system import SystemBuilder

    self._agent_name = agent_name
    self._tools = tools or []
    self._telemetry = telemetry
    self._gpu_metrics = gpu_metrics

    builder = SystemBuilder()
    if engine_key:
        builder.engine(engine_key)
    if model:
        builder.model(model)
    builder.agent(agent_name)
    if tools:
        builder.tools(tools)
    # Propagate gpu_metrics to the runtime config so SystemBuilder
    # creates a GpuMonitor when building the InstrumentedEngine.
    if gpu_metrics:
        builder._config.telemetry.gpu_metrics = True
    # Override the agent's per-run turn budget. JarvisConfig.agent.max_turns
    # defaults to 10, which is too low for thinking/reasoning models on
    # multi-step agentic benchmarks (Trinity-Large hit the cap on 25/50
    # GAIA tasks before this was configurable per-eval).
    if max_turns is not None:
        builder._config.agent.max_turns = max_turns
    # Plan 2B: per-condition skill switches.  Mutate the builder's
    # config directly so SystemBuilder picks them up at build time.
    builder._config.skills.enabled = skills_enabled
    if overlay_dir is not None:
        builder._config.learning.skills.overlay_dir = str(overlay_dir)
    self._system = builder.telemetry(telemetry).traces(True).build()
Functions
set_task_metadata
set_task_metadata(metadata: dict) -> None

Forward task environment metadata to the underlying agent.

Source code in src/openjarvis/evals/backends/jarvis_agent.py
def set_task_metadata(self, metadata: dict) -> None:
    """Forward task environment metadata to the underlying agent."""
    agent = getattr(self._system, "_agent", None)
    if agent and hasattr(agent, "set_task_metadata"):
        agent.set_task_metadata(metadata)