Reeve
Agent Management

Agent Configuration

Per-agent model selection, heartbeat schedules, tool policies, and config inheritance.

Agent Configuration

Every agent has a configuration entry in reeve.json that controls its model, heartbeat, tools, sandbox, subagent permissions, and more. Configuration inherits from role defaults and can be overridden per-agent.

Config Structure

An agent entry in reeve.json:

{
  "agents": {
    "defaults": {
      "model": "claude-sonnet-4-6",
      "heartbeat": { "every": "2h" },
      "sandbox": { "enabled": true }
    },
    "list": [
      {
        "id": "marketing-manager",
        "name": "Marketing Manager",
        "role": "manager",
        "workspace": "/path/to/workspace",
        "agentDir": "/path/to/agent-dir",
        "model": "claude-opus-4-6",
        "heartbeat": { "every": "30m" },
        "identity": {
          "name": "Marketing Manager",
          "emoji": "📊",
          "theme": "purple"
        },
        "subagents": {
          "allowAgents": ["pipeline-manager", "marketing-manager"]
        },
        "tools": {
          "disabled": ["exec"]
        },
        "sessionReset": {
          "idleMinutes": 2880
        }
      }
    ]
  }
}

Config Resolution Order

Agent configuration is resolved in this order (later wins):

  1. Role defaults — From config/role-defaults.js based on the agent's role
  2. Agent defaults — From agents.defaults in reeve.json
  3. Agent entry — From the specific agent in agents.list
  4. Config layers — Universal → org → individual → workspace (see Config Layers)

Key Configuration Fields

Model

Which LLM powers the agent:

{
  "model": "claude-opus-4-6"
}

Available models depend on your configured providers.

Heartbeat

How often the agent checks in autonomously:

{
  "heartbeat": {
    "every": "2h"
  }
}

Set to null to disable heartbeats (common for workers that only respond when invoked).

Subagent Policy

Which agents this agent can spawn:

{
  "subagents": {
    "allowAgents": ["pipeline-manager", "worker-1", "worker-2"]
  }
}

Special values:

  • ["*"] — Can spawn any agent (coordinators)
  • ["<self>"] — Can only spawn itself (workers, assistants)
  • ["pipeline-manager", "<self>"] — Can spawn pipeline-manager and itself (managers)

Session Reset

When to reset the agent's conversation context:

{
  "sessionReset": {
    "idleMinutes": 60
  }
}
RoleDefaultMeaning
Coordinatornull (never)Always-on context
Manager2880 (48h)Reset after 2 days idle
Worker60 (1h)Quick reset for task focus
Research1440 (24h)Reset after 1 day idle
Assistant2880 (48h)Persistent conversation

Tool Policies

Disable or restrict specific tools:

{
  "tools": {
    "disabled": ["exec", "browser"],
    "readonly": true
  }
}

Sandbox

Restrict file system and command execution:

{
  "sandbox": {
    "enabled": true,
    "allowedPaths": ["/path/to/workspace"],
    "blockedCommands": ["rm -rf", "sudo"]
  }
}

Modifying Agent Config

Via CLI

# Set identity
reeve agents set-identity marketing-manager --name "MarketBot" --emoji "🚀"

# Inspect current config
reeve agents inspect marketing-manager

Via JSON-RPC

// Update agent config
agents.update({
  agentId: "marketing-manager",
  config: {
    model: "claude-opus-4-6",
    heartbeat: { every: "1h" }
  }
})

Direct reeve.json editing

For complex config changes, edit reeve.json directly. Changes take effect on next gateway restart or config reload.

The config system uses 4-layer inheritance. Agent config in reeve.json is the workspace layer — it has the highest priority and overrides all other layers.

On this page