-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.example.toml
More file actions
101 lines (86 loc) · 2.93 KB
/
config.example.toml
File metadata and controls
101 lines (86 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
[server]
listen = "0.0.0.0:9090"
[security]
webhook_secrets = ["your-secret-here"]
allow_unsigned = true # dev only
# Feature flags: all new Phase-B paths default OFF.
[features]
tunnel_enabled = false
cli_enabled = false
callback_enabled = false
# Runtime guardrails
[runtime]
cli_max_concurrency = 1
http_timeout_secs = 15
tunnel_reconnect_backoff_max_secs = 60
# Optional: tunnel config (Phase B minimal viable)
[tunnel]
enabled = false
# supports ws:// and wss://, production should use wss://
url = "wss://openpr.example.com/api/v1/agent-tunnel"
agent_id = "vano-qa"
# sent as Authorization: Bearer <token>
auth_token = "opr_xxx"
# auto reconnect interval after disconnect/failure
reconnect_secs = 3
# heartbeat send interval
heartbeat_secs = 20
# optional: sign outgoing envelopes and verify incoming envelopes
hmac_secret = "shared-hmac-secret"
# if true, inbound tunnel messages without sig are rejected
require_inbound_sig = false
[[agents]]
id = "david"
name = "David"
agent_type = "openclaw"
message_template = "🔔 [{project}] {event}: {key} {title}\n👤 {actor} | Trigger: {reason}"
[agents.openclaw]
command = "openclaw message send"
channel = "signal"
target = "uuid:your-user-uuid"
[[agents]]
id = "vano-cli"
name = "Vano CLI"
agent_type = "cli"
message_template = "[{project}] {event}: {key} {title}"
[agents.cli]
executor = "codex" # codex | claude-code | opencode
workdir = "/opt/worker/code/openpr"
timeout_secs = 900
max_output_chars = 12000
prompt_template = "Fix issue {issue_id}: {title}\nContext: {reason}"
callback = "mcp" # mcp | api
callback_url = "http://127.0.0.1:8090/mcp/rpc"
callback_token = "opr_xxx"
update_state_on_start = "in_progress"
update_state_on_success = "done"
update_state_on_fail = "todo"
# --- MCP closed-loop example (AI reads full issue context via MCP) ---
[[agents]]
id = "ai-fixer"
name = "AI Issue Fixer"
agent_type = "cli"
[agents.cli]
executor = "claude-code"
workdir = "/opt/worker/code/openpr"
timeout_secs = 900
max_output_chars = 12000
prompt_template = "Fix issue {issue_id}: {title}\nContext: {reason}"
# MCP closed-loop: AI updates issue state directly via MCP tools,
# so we skip the callback state update to avoid duplication.
skip_callback_state = true
callback = "mcp"
callback_url = "http://127.0.0.1:8090/mcp/rpc"
callback_token = "opr_xxx"
# Optional: path to MCP config for claude-code (--mcp-config flag).
# If omitted, claude-code uses its global ~/.claude.json MCP config.
# mcp_config_path = "/path/to/mcp-config.json"
# Custom MCP instructions appended to the prompt. If omitted, a sensible
# default is used that instructs the AI to read/write via OpenPR MCP tools.
# mcp_instructions = "Use work_items.get to read issue {issue_id}, then fix it."
# Extra environment variables injected into the executor subprocess.
# Useful for per-agent API URLs, bot tokens, or workspace IDs.
[agents.cli.env_vars]
OPENPR_API_URL = "http://localhost:3000"
OPENPR_BOT_TOKEN = "opr_xxx"
OPENPR_WORKSPACE_ID = "e5166fd1-..."