-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathconfig.example.yaml
More file actions
146 lines (132 loc) · 6.36 KB
/
Copy pathconfig.example.yaml
File metadata and controls
146 lines (132 loc) · 6.36 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Nerve — Personal AI Assistant Configuration
# Copy to config.yaml and customize. Secrets go in config.local.yaml (gitignored).
# Core
workspace: ~/nerve-workspace # Path to workspace with SOUL.md, MEMORY.md, etc.
timezone: America/New_York
# Provider — how Nerve connects to Claude (default: anthropic)
# provider:
# type: bedrock # "anthropic" or "bedrock"
# aws_region: us-east-1 # AWS region for Bedrock
# # aws_profile: "" # Optional: AWS SSO profile name
# Local proxy (CLIProxyAPI) — optional. Routes Anthropic API calls through
# Claude Code OAuth, and is the Anthropic↔OpenAI translation layer that local
# Ollama models are reached through. Required for the ollama block below.
# proxy:
# enabled: false
# port: 8317
# host: 127.0.0.1
# Local Ollama — expose locally-installed Ollama models as selectable chat
# models in the web composer's model picker. Ollama speaks an OpenAI-compatible
# API, so this requires proxy.enabled: true (the proxy translates the
# Anthropic requests the SDK emits). Models are auto-discovered at runtime
# from the running Ollama server (GET /api/tags) — whatever you've pulled
# locally shows up automatically, no need to list models here.
# ollama:
# enabled: false
# host: 127.0.0.1
# port: 11434
# Agent
agent:
model: claude-opus-4-8 # Primary model for conversations
# Use claude-fable-5 for Anthropic's most capable (Mythos-class) model.
# Note: ~2x the cost of Opus 4.8 ($10/$50 per MTok in/out).
cron_model: claude-sonnet-4-6 # Cheaper model for cron jobs
title_model: claude-haiku-4-5-20251001 # Session title generation
max_turns: 50 # Max agentic turns per request
max_concurrent: 4 # Max concurrent agent sessions
background_agent_permissions: true # Background sub-agents (Agent run_in_background) get the same tool permissions as foreground; false denies their Write/Edit/Bash
# First-prompt rewrite — the web UI can refine the opening message of a
# new chat with a fast model, preview it, and send only after approval.
prompt_rewrite:
enabled: true # Master switch (per-user toggle is in the UI)
model: "" # Empty → falls back to agent.model (chat model)
max_tokens: 1024
timeout_seconds: 45
# For Bedrock, use model IDs like:
# model: us.anthropic.claude-opus-4-8
# cron_model: us.anthropic.claude-sonnet-4-6
# title_model: us.anthropic.claude-haiku-4-5-20251001-v1:0
# Gateway
gateway:
host: 0.0.0.0
port: 8900
ssl:
cert: ~/.nerve/certs/cert.pem
key: ~/.nerve/certs/key.pem
# Channels
telegram:
enabled: true
# DM authorization:
# pairing — only users in allowed_users may talk to the bot. New users
# authorize with a one-time code: run `nerve pair` on the
# server, then send the bot `/pair <code>`. Paired IDs are
# persisted to config.local.yaml automatically.
# open — anyone can talk to the bot (dangerous: full agent access).
dm_policy: pairing
# allowed_users: [123456789] # numeric Telegram user IDs (or pair instead)
stream_mode: partial # "partial" (edit messages) or "full" (wait for complete)
# Quiet hours (local timezone)
quiet_start: "02:00"
quiet_end: "12:00"
# Sync sources
sync:
telegram:
enabled: true
monitored_folders: [Work, Friends]
gmail:
enabled: true
accounts: [] # Set in config.local.yaml
schedule: "*/15 * * * *"
github:
enabled: true
schedule: "*/15 * * * *"
# Guardrails — limit which repos reach the inbox (case-insensitive globs).
# allow_repos = allowlist (empty = all); deny_repos takes precedence.
allow_repos: [] # Example: ["ClickHouse/*", "myorg/myrepo"]
deny_repos: []
github_repos: # Monitor a set of repos for NEW issues & PRs
enabled: false
schedule: "*/15 * * * *"
repos: [] # Required: ["ClickHouse/clickhouse-go", "owner/repo"]
batch_size: 50
# Memory (memU)
memory:
chat_model: claude-sonnet-4-6
# embed_model: text-embedding-3-small # Only needed with openai_api_key
# Cron
cron:
system_file: ~/.nerve/cron/system.yaml # Managed by 'nerve init' — system crons
jobs_file: ~/.nerve/cron/jobs.yaml # Your custom crons — never touched by Nerve
# Backup (optional) — scheduled, verified snapshots of Nerve state into a
# single portable bundle (nerve-backup-<host>-<ts>.tar.zst). Off by default.
# Point target_dir at an external mount or a synced directory — the OFF-BOX
# copy is what protects against a disk failure. The SQLite DBs are snapshotted
# with the online-backup API, so bundles are consistent even while Nerve runs.
# Manual use: `nerve backup` / `nerve restore BUNDLE` (no running server needed).
# backup:
# enabled: false
# target_dir: "" # e.g. /mnt/backup/nerve (REQUIRED when enabled)
# interval_hours: 24 # scheduled cadence (an hourly tick fires when due)
# retention_count: 7 # keep the newest N bundles; prune older ones
# include_workspace: true # include the workspace BRAIN (*.md, memory/, scripts/, skills/)
# workspace_excludes: [] # extra glob patterns to skip, e.g. ["*.png", "drafts"]
# notify_on_failure: true # high-priority notify if a scheduled backup fails
# notify_on_success: false # low-priority digest line on success
# External MCP server (optional) — expose Nerve's tool registry to
# external MCP clients (Codex, Claude Code, Cursor) over Streamable HTTP.
# Off by default. Authentication reuses the gateway JWT
# (auth.jwt_secret) — present it as `Authorization: Bearer <jwt>` or
# `?token=<jwt>`. Connect a client with the URL "https://<host>:8900/mcp/v1/".
# mcp_endpoint:
# enabled: false
# path: /mcp/v1
# include_hoa: false # Expose hoa_* tools externally (default off)
# Observability (optional) — Langfuse tracing for the agent loop and memU.
# Set keys in config.local.yaml. Without keys, the integration is a no-op.
# See docs/observability.md for setup details.
# langfuse:
# public_key: pk-lf-... # from your Langfuse project (set in config.local.yaml)
# secret_key: sk-lf-... # from your Langfuse project (set in config.local.yaml)
# host: https://cloud.langfuse.com
# # redact_patterns: # optional — strip these regexes from spans
# # - "sk-ant-[A-Za-z0-9_\\-]{20,}"