AI SummaryAgents are the agentic logic layer of OpenJarvis. They determine how a query is processed -- whether it goes directly to a model, through a tool-calling loop, via ReAct reasoning, CodeAct code execution, recursive decomposition, or an external agent runtime. All agents implement the ABC and are reg
Install
Copy this and paste it into Claude Code, Cursor, or any AI assistant:
I want to set up the "Agents" agent in my project. Please run this command in my terminal: # Add AGENTS.md to your project root curl --retry 3 --retry-delay 2 --retry-all-errors -o AGENTS.md "https://raw.githubusercontent.com/open-jarvis/OpenJarvis/main/docs/user-guide/agents.md" Then explain what the agent does and how to invoke it.
Description
Personal AI, On Personal Devices
Overview
| Agent | Registry Key | accepts_tools | Multi-turn | Description | |---------------------|-------------------|-----------------|------------|----------------------------------------------| | SimpleAgent | simple | No | No | Single-turn query-to-response | | OrchestratorAgent | orchestrator | Yes | Yes | Multi-turn tool-calling loop (function_calling + structured) | | NativeReActAgent | native_react | Yes | Yes | Thought-Action-Observation loop | | NativeOpenHandsAgent | native_openhands | Yes | Yes | CodeAct-style code execution + tool calls | | RLMAgent | rlm | Yes | Yes | Recursive LM with persistent REPL | | OpenHandsAgent | openhands | No | Yes | Wraps real openhands-sdk | | ClaudeCodeAgent | claude_code | No | Yes | Claude Agent SDK via Node.js subprocess | | OpenCodeAgent | opencode | No | Yes | opencode coding agent on your local engine | | OperativeAgent | operative | Yes | Yes | Persistent scheduled agent with state management | | MonitorOperativeAgent | monitor_operative | Yes | Yes | Long-horizon agent with 4 configurable strategy axes | ---
Agents
Agents are the agentic logic layer of OpenJarvis. They determine how a query is processed -- whether it goes directly to a model, through a tool-calling loop, via ReAct reasoning, CodeAct code execution, recursive decomposition, or an external agent runtime. All agents implement the BaseAgent ABC and are registered via the AgentRegistry.
BaseAgent ABC
All agents extend the abstract BaseAgent class. `python from abc import ABC, abstractmethod from openjarvis.agents._stubs import AgentContext, AgentResult class BaseAgent(ABC): agent_id: str accepts_tools: bool = False def __init__( self, engine: InferenceEngine, model: str, *, bus: Optional[EventBus] = None, temperature: float = 0.7, max_tokens: int = 1024, ) -> None: ... @abstractmethod def run( self, input: str, context: AgentContext | None = None, **kwargs, ) -> AgentResult: """Execute the agent on the given input.""" ` The accepts_tools class attribute controls whether an agent can receive tools via --tools on the CLI or tools= in the SDK. Agents with accepts_tools = False ignore tool arguments. BaseAgent also provides concrete helper methods (_emit_turn_start, _emit_turn_end, _build_messages, _generate, _max_turns_result, _strip_think_tags) that subclasses use to avoid duplicating common logic. See the architecture docs for details. ToolUsingAgent is an intermediate base class (extends BaseAgent) that sets accepts_tools = True and adds a ToolExecutor and max_turns loop limit. All tool-using agents extend this class.
AgentContext
The runtime context handed to an agent on each invocation. | Field | Type | Description | |------------------|--------------------|------------------------------------------------| | conversation | Conversation | Message history (pre-filled with context if memory injection is active) | | tools | list[str] | Tool names available to the agent | | memory_results | list[Any] | Pre-fetched memory retrieval results | | metadata | dict[str, Any] | Arbitrary metadata for the run |
Discussion
Health Signals
My Fox Den
Community Rating
Sign in to rate this booster