Project Structure
Configuration
Step 1: Create Configuration File
Create or modify a configuration file (e.g.,your_robot_modes.json5) in the /config/ directory.
Step 2: Add Mode Definition
Add your new mode to themodes section of your configuration file.
Mode Configuration Options
display_name string — Required
The human-readable name shown in the UI for this mode. Example: “Your New Mode”description string — Required
Brief description explaining what this mode does and its purpose. Example: “Brief description of what this mode does”system_prompt_base string — Required
The foundational system prompt that defines the agent’s behavior and purpose in this mode. Example: “You are in [mode name]. Your purpose is…“hertz float — Required
The frequency (in Hz) at which the agent operates or processes information. Example:1.0
timeout_seconds integer — Required
Maximum duration (in seconds) before the agent times out during execution. Example:300
remember_locations boolean — Required
Whether the agent should persist and recall location data across interactions. Example:false
save_interactions boolean — Required
Whether to save conversation history and interactions for this mode. Example:true
agent_inputs array — Required
List of input sources or data types the agent can accept in this mode.agent_actions array — Required
List of actions or capabilities the agent can perform in this mode.lifecycle_hooks array — Required
Event handlers triggered at specific points in the agent’s lifecycle (startup, shutdown, etc.).simulators array — Required
List of simulation environments or tools available to the agent in this mode.cortex_llm object — Required
Configuration object for the language model powering the agent’s cortex.Step 3: Configure Input Plugins
Specify which inputs your mode needs:agent_inputs array — Required
List of input sources or data types the agent can accept in this mode. Each item in the array is an object with the following properties:type string — Required
The input type identifier. Example: “AudioInput”config object — Optional
Configuration options specific to this input type. Example: GoogleASRInputStep 4: Configure LLM (Optional - Can be overwritten for each mode)
Define which LLM needs to be configured:cortex_llm object — Required
Configures the Cortex LLM behavior.type string — Required
The LLM provider name. Example: “OpenAILLM”config object — Optional
Configuration options specific to this LLM type.agent_name string — Optional
Agent name used in metadata Example: “Spot”history_length integer — Optional
Number of past messages to remember in the conversation. Example:10
Step 5: Configure actions
Actions define what your agent can do. You can define movement, TTS or any other actions here.agent_actions array — Required
Defines actions the agent can execute.name string — Required
Human-readable identifier for the action. Example: “speak”llm_label string — Required
Label the model uses to refer to this action. Example: “speak”implementation string — Optional
This defines the business logic, if any. If there’s none defined, we use default valuepassthrough.
Example: “passthrough”
connector string — Required
Name of the connector. This field is the Python file name defined underactions/action_name/connector.
Example: “elevenlabs_tts”
config object — Optional
Configuration options specific to this action.exclude_from_prompt boolean — Optional
Whether to exclude this action from the LLM prompt. Default: false. Example:[{"name": "speak", "llm_label": "speak", "connector": "elevenlabstts", "config": {}, "exclude_from_prompt": false}]