-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.example.toml
More file actions
205 lines (169 loc) · 8.43 KB
/
Copy pathconfig.example.toml
File metadata and controls
205 lines (169 loc) · 8.43 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
providersDir = "./models.d"
# ─── HTTP ────────────────────────────────────────────────────────────
[http]
port = "8090"
# ─── gRPC ────────────────────────────────────────────────────────────
[grpc]
port = "9095"
useTLS = false
certFile = ""
keyFile = ""
# ─── Database ────────────────────────────────────────────────────────
[database]
dsn = "host=postgres port=5432 user=dyson password=dyson dbname=personality_core sslmode=disable"
# ─── Auth ────────────────────────────────────────────────────────────
[auth]
target = "stargate:9090" # Stargate auth gRPC target (DyAuthService + DyPermissionService; took over Padlock's auth surface)
useTLS = true # Stargate serves the fleet self-signed cert
tlsSkipVerify = true
allowDevIds = true # allow X-Account-Id header for dev
offline = false # true = every request becomes offlineAccountId
offlineAccountId = "local-dev"
autonomousSecret = "" # shared secret for X-Autonomous-Secret header
# ─── Billing (optional) ─────────────────────────────────────────────
# Usage is settled once per UTC day. Currency and all amounts use wallet golds.
[billing]
enabled = false
target = "" # Wallet gRPC target (host:port)
useTLS = false
tlsSkipVerify = false
payeeAccountId = "" # optional; Wallet chooses its default/system payee when unset
currency = "golds"
serviceFeePercentage = "0" # percentage added to every priced model call, e.g. "5" = 5%
# Amount limits per UTC hour/day; omitted currency = unlimited.
hourlyUsageLimits = { golds = "5", points = "100" }
dailyUsageLimits = { golds = "20", points = "500" }
instantBillingWall = "20" # unpaid golds; 0 = only daily settlement
# ─── Solar Network ──────────────────────────────────────────────────
[solarNetwork]
baseUrl = "https://api.dyson.example"
# ─── Sentry (optional) ─────────────────────────────────────────────
# [sentry]
# dsn = ""
# tracesSampleRate = 0.01
# environment = "production"
# release = "v1.0.0"
# ─── Providers ──────────────────────────────────────────────────────
# Providers define model backends. Each provider has an id and one or more models.
# Models can be split into separate .toml files under providersDir.
[[providers]]
id = "openai"
type = "openai"
apiKey = "sk-..."
baseUrl = "https://api.openai.com/v1"
timeout = "90s"
maxCompletionTokens = 2048 # default for all models under this provider
temperature = 0.7
topP = 1.0
# Model-level config overrides provider defaults.
[[providers.models]]
name = "gpt-4o"
modalities = ["image"] # this model supports image input
maxCompletionTokens = 4096
temperature = 0.7
# Per-model perk overrides: restrict or cap specific models per perk level.
[providers.models.perkOverrides.0]
blocked = true # perk 0 users cannot use gpt-4o at all
[providers.models.perkOverrides.1]
maxCompletionTokens = 2048 # perk 1 users get capped output on gpt-4o
[[providers.models]]
name = "gpt-4.1-mini"
modalities = ["image"]
maxCompletionTokens = 4096
[providers.models.pricing]
currency = "golds" # Wallet currency; e.g. "points"
input = "0.01" # golds per 1M input tokens
output = "0.04" # golds per 1M output tokens
[[providers.models]]
name = "text-embedding-3-small"
type = "embedding" # embedding models are excluded from completion/chat paths
[providers.models.perkOverrides.0]
maxCompletionTokens = 1024 # perk 0 users get less output on mini too
[[providers]]
id = "anthropic"
type = "openai-compatible"
apiKey = "sk-ant-..."
baseUrl = "https://api.anthropic.com/v1"
timeout = "120s"
maxCompletionTokens = 4096
temperature = 1.0
[[providers.models]]
name = "claude-sonnet-4"
maxCompletionTokens = 8192
[[providers.models]]
name = "claude-opus-4"
maxCompletionTokens = 8192
[providers.models.perkOverrides.0]
blocked = true # perk 0 can't use opus
[providers.models.perkOverrides.1]
blocked = true # perk 1 can't use opus either
[providers.models.perkOverrides.2]
maxCompletionTokens = 4096 # perk 2 gets capped output on opus
# ─── Personality ────────────────────────────────────────────────────
[personality]
maxHistoryMessages = 24 # how many recent messages to include in context
sseHeartbeat = "15s" # SSE heartbeat interval
chatInboundDebounce = "5s" # debounce window for inbound solar messages
visionModel = "openai/gpt-4o" # model used to summarize images for non-vision models
defaultEmbeddingModel = "openai/text-embedding-3-small"
onlyAllowListedModels = false # true = reject provider/model references not declared below
# ─── Surfing ────────────────────────────────────────────────────────
[personality.surfing]
enabled = false
interval = "1h"
prompt = "Browse the feed and interact with interesting posts. Reply, react, or repost as you see fit."
# ─── Perk Tiers ─────────────────────────────────────────────────────
# Each tier overrides defaults for that perk level (0-3).
# Unset fields = unrestricted. Only configure tiers that restrict something.
# Perk level comes from the authenticated Solar account.
[personality.perkTiers.0]
maxHistoryMessages = 8 # basic users get 8 messages of context
maxCompletionTokens = 1024 # global fallback cap (overridden by per-model/per-agent)
allowVision = false # no image analysis
allowFileSummary = false # no file summarization
blockedSkills = ["surfing", "tasks"] # can't browse feed or create tasks
[personality.perkTiers.1]
maxHistoryMessages = 16
blockedSkills = ["surfing"] # can use tasks but not surf
# perk 2 and 3 are unrestricted (no config needed)
# ─── Agents ─────────────────────────────────────────────────────────
[agents]
dir = "./agents.d"
# Agent: a general-purpose assistant (REST API only)
[[agents.items]]
id = "support"
name = "Support"
description = "General support assistant"
systemPromptFile = "./prompts/support.md"
model = "openai/gpt-4.1-mini"
# temperature = 0.7 # override model default
# topP = 1.0
maxCompletionTokens = 4096
billingMultiplier = 1.0 # optional multiplier for this agent's priced model calls
# disableThinking = false
abilities = ["memory", "mood", "relationship"]
enabled = true
# Per-agent perk overrides: cap output for lower perk levels.
[agents.items.perkOverrides.0]
maxCompletionTokens = 512 # basic users get short answers from support
[agents.items.perkOverrides.1]
maxCompletionTokens = 2048
# Agent: a chat bot connected to Solar Network
[[agents.items]]
id = "support-bot"
name = "Support Bot"
description = "Bot agent connected to Solar chat"
systemPrompt = "You are a support bot for Solar Network chat."
model = "openai/gpt-4.1-mini"
chatMaxCompletionTokens = 160 # cap for chat tool path specifically
abilities = ["chat", "autonomous"]
enabled = true
[agents.items.solar-network-integration]
accountName = "support-bot"
accessToken = ""
# publisherName = "Support Bot" # override display name for post creation
[agents.items.autonomous]
wakeInterval = "10m"
wakePrompt = "Check whether any active or DM conversations need a proactive follow-up."
[agents.items.perkOverrides.0]
maxCompletionTokens = 100 # chat bot gets very short replies for basic users