@synap-core/workspace-templates 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1434 @@
1
+ # Agent Fleet workspace template
2
+ # Migrated from the OpenClaw "Agent OS" package (agent-os.package.json) UNIONed with
3
+ # the control-plane "agent OS.json" superset. Renamed: "OpenClaw Agent OS" → "Agent Fleet".
4
+ # The name "Agent OS" is freed for the umbrella "Company OS" orchestrator; this workspace
5
+ # is the agent-fleet management surface. AI-generation-friendly YAML. Validated against types.ts.
6
+
7
+ meta:
8
+ slug: agent-fleet
9
+ name: "Agent Fleet"
10
+ description: "Manage your fleet of AI agents — the agents, their providers, skills, and the work they do."
11
+ icon: bot
12
+ color: "#1A3A5C"
13
+ tags: [ai, agents, automation, openclaw, fleet]
14
+ isPublic: true
15
+
16
+ workspace:
17
+ name: "Agent Fleet"
18
+ description: "The sovereign control plane for your OpenClaw agent fleet. Agents, projects, tasks, skills, and providers as connected entities — not daemon logs."
19
+ proposalId: agent-fleet-v1
20
+ subtype: agent-fleet
21
+ workspaceType: agent
22
+ visibility: pod_visible
23
+
24
+ profiles:
25
+ - slug: agent
26
+ displayName: Agent
27
+ icon: bot
28
+ color: "#1A3A5C"
29
+ scope: WORKSPACE
30
+ description: "A deployed OpenClaw agent — your running AI entity"
31
+ properties:
32
+ - slug: agent-status
33
+ label: Status
34
+ valueType: string
35
+ inputType: select
36
+ enumValues: [Offline, Idle, Active, Error, Maintenance]
37
+ constraints:
38
+ defaultValue: Idle
39
+ - slug: agent-health
40
+ label: Health
41
+ valueType: string
42
+ inputType: select
43
+ enumValues: [Healthy, Degraded, Error]
44
+ - slug: agent-runtime
45
+ label: Runtime
46
+ valueType: string
47
+ inputType: select
48
+ enumValues: [OpenClaw, Custom]
49
+ - slug: agent-version
50
+ label: Version
51
+ valueType: string
52
+ - slug: agent-model
53
+ label: Primary Model
54
+ valueType: string
55
+ - slug: agent-provider
56
+ label: Provider
57
+ valueType: entity_id
58
+ targetProfileSlug: provider
59
+ - slug: agent-owner
60
+ label: Owner
61
+ valueType: entity_id
62
+ targetProfileSlug: person
63
+ - slug: agent-channel
64
+ label: Primary Channel
65
+ valueType: string
66
+ inputType: select
67
+ enumValues: [Telegram, WhatsApp, Discord, Slack, Signal, iMessage, CLI, WebChat, Other]
68
+ - slug: agent-channels
69
+ label: All Channels
70
+ valueType: array
71
+ inputType: select
72
+ enumValues: [Telegram, WhatsApp, Discord, Slack, Signal, iMessage, CLI, WebChat, Voice, Lark, Matrix]
73
+ - slug: agent-heartbeat
74
+ label: Heartbeat Schedule
75
+ valueType: string
76
+ - slug: agent-last-seen
77
+ label: Last Seen
78
+ valueType: date
79
+ - slug: agent-workspace
80
+ label: Workspace Path
81
+ valueType: string
82
+ - slug: agent-deployment
83
+ label: Deployment
84
+ valueType: string
85
+ inputType: select
86
+ enumValues: ["Local Machine", VPS, "Raspberry Pi", "Mac Mini", Docker, "Cloud Workers", Android, "Edge Device"]
87
+ - slug: agent-role
88
+ label: Role
89
+ valueType: string
90
+ inputType: select
91
+ enumValues: [Generalist, Coder, Researcher, Writer, Ops, Coordinator, Monitor, Custom]
92
+ - slug: agent-tags
93
+ label: Tags
94
+ valueType: array
95
+ inputType: select
96
+ enumValues: [production, development, personal, team, experimental, "24/7", on-demand]
97
+
98
+ - slug: project
99
+ displayName: Project
100
+ icon: folder
101
+ color: "#2E6DA4"
102
+ scope: WORKSPACE
103
+ description: "A bounded body of work delegated to one or more agents"
104
+ properties:
105
+ - slug: project-status
106
+ label: Status
107
+ valueType: string
108
+ inputType: select
109
+ enumValues: [Backlog, Queued, "In Progress", Blocked, Completed, Cancelled]
110
+ constraints:
111
+ defaultValue: Queued
112
+ - slug: project-priority
113
+ label: Priority
114
+ valueType: string
115
+ inputType: select
116
+ enumValues: [Critical, High, Medium, Low]
117
+ - slug: project-assigned-agent
118
+ label: Assigned Agent
119
+ valueType: entity_id
120
+ targetProfileSlug: agent
121
+ - slug: project-owner
122
+ label: Human Owner
123
+ valueType: entity_id
124
+ targetProfileSlug: person
125
+ - slug: project-start
126
+ label: Start Date
127
+ valueType: date
128
+ - slug: project-deadline
129
+ label: Deadline
130
+ valueType: date
131
+ - slug: project-health
132
+ label: Health
133
+ valueType: string
134
+ inputType: select
135
+ enumValues: [Green, Yellow, Red]
136
+ - slug: project-type
137
+ label: Type
138
+ valueType: string
139
+ inputType: select
140
+ enumValues: [Development, Research, Content, Automation, DevOps, Data, Outreach, Monitoring]
141
+ - slug: project-goal
142
+ label: Goal
143
+ valueType: string
144
+ - slug: project-outcome
145
+ label: Expected Outcome
146
+ valueType: string
147
+ - slug: project-tags
148
+ label: Tags
149
+ valueType: array
150
+ inputType: select
151
+ enumValues: [recurring, one-off, long-running, client, internal, experimental]
152
+
153
+ - slug: task
154
+ displayName: Task
155
+ icon: check-square
156
+ color: "#1B6E45"
157
+ scope: WORKSPACE
158
+ description: "An atomic work item assigned to an agent"
159
+ properties:
160
+ - slug: task-status
161
+ label: Status
162
+ valueType: string
163
+ inputType: select
164
+ enumValues: [Backlog, Queued, Running, Review, Done, Failed, Cancelled]
165
+ constraints:
166
+ defaultValue: Queued
167
+ - slug: task-priority
168
+ label: Priority
169
+ valueType: string
170
+ inputType: select
171
+ enumValues: [Critical, High, Medium, Low]
172
+ constraints:
173
+ defaultValue: Medium
174
+ - slug: task-assigned-agent
175
+ label: Assigned Agent
176
+ valueType: entity_id
177
+ targetProfileSlug: agent
178
+ - slug: task-project
179
+ label: Project
180
+ valueType: entity_id
181
+ targetProfileSlug: project
182
+ - slug: task-type
183
+ label: Type
184
+ valueType: string
185
+ inputType: select
186
+ enumValues: [Code, Research, Content, Ops, Data, Outreach, Review, Monitor, Custom]
187
+ - slug: task-due-date
188
+ label: Due Date
189
+ valueType: date
190
+ - slug: task-effort-hours
191
+ label: Effort Estimate (hrs)
192
+ valueType: number
193
+ - slug: task-token-estimate
194
+ label: Token Estimate (K)
195
+ valueType: number
196
+ - slug: task-actual-tokens
197
+ label: Actual Tokens Used (K)
198
+ valueType: number
199
+ - slug: task-blocked-by
200
+ label: Blocked By
201
+ valueType: string
202
+ - slug: task-session-key
203
+ label: Session Key
204
+ valueType: string
205
+ - slug: task-tags
206
+ label: Tags
207
+ valueType: array
208
+ inputType: select
209
+ enumValues: [autonomous, needs-review, high-cost, recurring, blocked, delegated]
210
+
211
+ - slug: skill
212
+ displayName: Skill
213
+ icon: zap
214
+ color: "#7C3AED"
215
+ scope: WORKSPACE
216
+ description: "An installed agent capability — a ClawHub skill, custom script, or API integration"
217
+ properties:
218
+ - slug: skill-trust
219
+ label: Trust Level
220
+ valueType: string
221
+ inputType: select
222
+ enumValues: [Trusted, Review, Untrusted, Blocked]
223
+ constraints:
224
+ defaultValue: Review
225
+ - slug: skill-category
226
+ label: Category
227
+ valueType: string
228
+ inputType: select
229
+ enumValues: [Productivity, Development, Communication, Data, Security, Storage, Browser, Voice, IoT, Custom]
230
+ - slug: skill-source-url
231
+ label: Source URL
232
+ valueType: string
233
+ - slug: skill-version
234
+ label: Version
235
+ valueType: string
236
+ - slug: skill-install-date
237
+ label: Install Date
238
+ valueType: date
239
+ - slug: skill-last-audit
240
+ label: Last Audit Date
241
+ valueType: date
242
+ - slug: skill-virustotal
243
+ label: VirusTotal Status
244
+ valueType: string
245
+ inputType: select
246
+ enumValues: [Clean, Flagged, "Not Scanned", Pending]
247
+ - slug: skill-maintainer
248
+ label: Maintainer
249
+ valueType: string
250
+ - slug: skill-requires-api
251
+ label: Requires API Key
252
+ valueType: boolean
253
+ - slug: skill-notes
254
+ label: Security Notes
255
+ valueType: string
256
+
257
+ - slug: provider
258
+ displayName: Provider
259
+ icon: database
260
+ color: "#B5451B"
261
+ scope: WORKSPACE
262
+ description: "An LLM or API provider — tracks cost, key health, and agent usage"
263
+ properties:
264
+ - slug: provider-type
265
+ label: Type
266
+ valueType: string
267
+ inputType: select
268
+ enumValues: ["LLM Cloud", "LLM Local", "API Gateway", "Vector DB", Storage, Custom]
269
+ - slug: provider-key-health
270
+ label: Key Health
271
+ valueType: string
272
+ inputType: select
273
+ enumValues: [Valid, Expiring, Expired, "No Key (Local)"]
274
+ constraints:
275
+ defaultValue: Valid
276
+ - slug: provider-model
277
+ label: Model / Endpoint
278
+ valueType: string
279
+ - slug: provider-cost-input
280
+ label: Cost per 1K Input Tokens ($)
281
+ valueType: number
282
+ - slug: provider-cost-output
283
+ label: Cost per 1K Output Tokens ($)
284
+ valueType: number
285
+ - slug: provider-budget-day
286
+ label: Daily Budget Ceiling ($)
287
+ valueType: number
288
+ - slug: provider-spend-week
289
+ label: Actual Spend This Week ($)
290
+ valueType: number
291
+ - slug: provider-base-url
292
+ label: Base URL / Endpoint
293
+ valueType: string
294
+ - slug: provider-notes
295
+ label: Notes
296
+ valueType: string
297
+
298
+ - slug: person
299
+ displayName: Person
300
+ icon: user
301
+ color: "#0891B2"
302
+ scope: WORKSPACE
303
+ description: "Team member or agent owner"
304
+ properties:
305
+ - slug: person-role
306
+ label: Role
307
+ valueType: string
308
+ inputType: select
309
+ enumValues: [Founder, Engineer, DevOps, Product, Researcher, Advisor]
310
+ - slug: person-email
311
+ label: Email
312
+ valueType: string
313
+ - slug: person-telegram
314
+ label: Telegram Handle
315
+ valueType: string
316
+ - slug: person-focus
317
+ label: Current Focus
318
+ valueType: string
319
+
320
+ views:
321
+ - name: "Agent Fleet"
322
+ slug: agent-fleet
323
+ type: kanban
324
+ scopeProfileSlug: agent
325
+ defaultView: true
326
+ description: "All agents by status — the mission control view. Offline → Idle → Active → Error."
327
+ config:
328
+ groupByField: agent-status
329
+
330
+ - name: "Agent → Projects → Tasks"
331
+ slug: agent-project-task-hierarchy
332
+ type: graph
333
+ scopeProfileSlugs: [agent, project, task]
334
+ description: "3-level drill-down: Agent expands to linked Projects, Projects expand to Tasks. The delegation tree."
335
+ config:
336
+ hierarchyEdges:
337
+ - parent: agent
338
+ child: project
339
+ via: project-assigned-agent
340
+ - parent: project
341
+ child: task
342
+ via: task-project
343
+
344
+ - name: "Task Board"
345
+ slug: task-board
346
+ type: kanban
347
+ scopeProfileSlug: task
348
+ description: "All tasks by status: Backlog → Queued → Running → Review → Done."
349
+ config:
350
+ groupByField: task-status
351
+
352
+ - name: "Project Command Center"
353
+ slug: project-command-center
354
+ type: table
355
+ scopeProfileSlug: project
356
+ description: "All projects with assigned agent, status, deadline, health — the manager's daily view."
357
+ config:
358
+ sortBy: project-priority
359
+
360
+ - name: "Skill Registry"
361
+ slug: skill-registry
362
+ type: table
363
+ scopeProfileSlug: skill
364
+ description: "All installed skills grouped by trust level: Trusted / Review / Untrusted. Security triage at a glance."
365
+ config:
366
+ groupByField: skill-trust
367
+ visibleColumns: [skill-trust, skill-category, skill-version, skill-maintainer, skill-last-audit, skill-virustotal, skill-requires-api]
368
+
369
+ - name: "Provider Dashboard"
370
+ slug: provider-dashboard
371
+ type: table
372
+ scopeProfileSlug: provider
373
+ description: "All providers with cost-per-token, key health, daily budget, and weekly spend."
374
+ config:
375
+ visibleColumns: [provider-type, provider-key-health, provider-model, provider-cost-input, provider-cost-output, provider-budget-day, provider-spend-week]
376
+
377
+ - name: "Relationship Graph"
378
+ slug: relationship-graph
379
+ type: graph
380
+ scopeProfileSlugs: [agent, project, task, skill, provider, person]
381
+ description: "Full sovereign topology: Agent ← Project ← Task + Skill + Provider. The infrastructure map you cannot build in any other tool."
382
+ config:
383
+ layout: force
384
+ showRelations: true
385
+
386
+ - name: "Agent Timeline"
387
+ slug: agent-timeline
388
+ type: timeline
389
+ scopeProfileSlug: project
390
+ description: "Projects as timeline bars, color-coded by assigned agent — who owns what, when."
391
+ config:
392
+ startField: project-start
393
+ endField: project-deadline
394
+ colorBy: project-assigned-agent
395
+
396
+ - name: "Cost View"
397
+ slug: cost-view
398
+ type: table
399
+ scopeProfileSlug: task
400
+ description: "Tasks ranked by actual token usage — the CFO view. Which work is burning budget?"
401
+ config:
402
+ visibleColumns: [task-status, task-type, task-assigned-agent, task-token-estimate, task-actual-tokens, task-effort-hours]
403
+ defaultSort:
404
+ field: task-actual-tokens
405
+ direction: desc
406
+
407
+ - name: "Untrusted Skills Alert"
408
+ slug: untrusted-skills-alert
409
+ type: table
410
+ scopeProfileSlug: skill
411
+ description: "Skills requiring security review. Audit before your agents run them."
412
+ config:
413
+ visibleColumns: [skill-trust, skill-category, skill-source-url, skill-maintainer, skill-virustotal, skill-notes]
414
+ filterBy:
415
+ field: skill-trust
416
+ operator: in
417
+ value: [Review, Untrusted, Blocked]
418
+
419
+ - name: "Backlog"
420
+ slug: backlog
421
+ type: table
422
+ scopeProfileSlug: task
423
+ description: "Unqueued tasks awaiting agent assignment."
424
+ config:
425
+ visibleColumns: [task-priority, task-type, task-assigned-agent, task-due-date, task-effort-hours, task-token-estimate]
426
+ filterBy:
427
+ field: task-status
428
+ operator: is
429
+ value: Backlog
430
+ defaultSort:
431
+ field: task-priority
432
+ direction: desc
433
+
434
+ - name: "Agent Health Monitor"
435
+ slug: agent-health-monitor
436
+ type: kanban
437
+ scopeProfileSlug: agent
438
+ description: "Agents grouped by health: Healthy / Degraded / Error. Operational triage."
439
+ config:
440
+ groupByField: agent-health
441
+
442
+ - name: "Session Logs"
443
+ slug: session-log-view
444
+ type: table
445
+ scopeProfileSlug: task
446
+ description: "Tasks with session keys — the audit trail of what agents actually executed."
447
+ config:
448
+ visibleColumns: [task-status, task-assigned-agent, task-session-key, task-actual-tokens, task-type]
449
+ filterBy:
450
+ field: task-session-key
451
+ operator: is_not_empty
452
+
453
+ - name: "Provider Key Health"
454
+ slug: provider-key-health
455
+ type: kanban
456
+ scopeProfileSlug: provider
457
+ description: "Providers by credential status: Valid / Expiring / Expired. Never run an agent on an expired key."
458
+ config:
459
+ groupByField: provider-key-health
460
+
461
+ - name: "My Active Work"
462
+ slug: my-active-work
463
+ type: table
464
+ scopeProfileSlug: task
465
+ description: "Tasks currently in flight — what your agents are doing right now."
466
+ config:
467
+ visibleColumns: [task-status, task-priority, task-type, task-assigned-agent, task-due-date]
468
+ filterBy:
469
+ field: task-status
470
+ operator: in
471
+ value: [Queued, Running, Review]
472
+ defaultSort:
473
+ field: task-due-date
474
+ direction: asc
475
+
476
+ - name: Agent
477
+ type: bento
478
+ scopeProfileSlug: agent
479
+ config:
480
+ layout: bento
481
+ blocks:
482
+ - id: agent-header
483
+ kind: widget
484
+ widgetType: section-header
485
+ pos: { x: 0, y: 0, w: 12, h: 2 }
486
+ config: { title: "Agent Fleet", icon: Bot, color: "#1A3A5C", profileSlug: agent }
487
+ - id: agent-count
488
+ kind: widget
489
+ widgetType: stat-card
490
+ pos: { x: 0, y: 2, w: 3, h: 3 }
491
+ config: { label: "Active Agents", aggregation: count, profileSlug: agent, color: "#1A3A5C" }
492
+ - id: agent-fleet
493
+ kind: view
494
+ viewName: "Agent Fleet"
495
+ pos: { x: 0, y: 9, w: 12, h: 8 }
496
+ - id: agent-health
497
+ kind: view
498
+ viewName: "Agent Health Monitor"
499
+ pos: { x: 0, y: 19, w: 12, h: 8 }
500
+ - id: agent-active
501
+ kind: widget
502
+ widgetType: entity-count
503
+ pos: { x: 3, y: 2, w: 3, h: 3 }
504
+ config: { profileSlug: agent, label: Active, icon: CheckCircle, filter: { status: active }, color: "#10B981" }
505
+ - id: agent-running-tasks
506
+ kind: widget
507
+ widgetType: entity-count
508
+ pos: { x: 6, y: 2, w: 3, h: 3 }
509
+ config: { profileSlug: task, label: "Running Tasks", icon: Loader, color: "#3B82F6" }
510
+ - id: agent-skills-avail
511
+ kind: widget
512
+ widgetType: entity-count
513
+ pos: { x: 9, y: 2, w: 3, h: 3 }
514
+ config: { profileSlug: skill, label: "Skills Available", icon: Zap, color: "#8B5CF6" }
515
+ - id: agent-spotlight
516
+ kind: widget
517
+ widgetType: entity-spotlight
518
+ pos: { x: 0, y: 5, w: 5, h: 4 }
519
+ config: { profileSlug: agent, seed: daily, layout: detail, subtitleField: status, color: "#1A3A5C" }
520
+ - id: agent-recent-tasks
521
+ kind: widget
522
+ widgetType: entity-list
523
+ pos: { x: 5, y: 5, w: 7, h: 4 }
524
+ config: { profileSlug: task, title: "Recent Tasks", limit: 8, variant: compact }
525
+ breakpoints:
526
+ lg: { cols: 12, rowHeight: 60, gap: 12 }
527
+ md: { cols: 10, rowHeight: 60, gap: 12 }
528
+ sm: { cols: 6, rowHeight: 60, gap: 12 }
529
+ xs: { cols: 4, rowHeight: 60, gap: 12 }
530
+ xxs: { cols: 2, rowHeight: 60, gap: 12 }
531
+
532
+ - name: Task
533
+ type: bento
534
+ scopeProfileSlug: task
535
+ config:
536
+ layout: bento
537
+ blocks:
538
+ - id: task-header
539
+ kind: widget
540
+ widgetType: section-header
541
+ pos: { x: 0, y: 0, w: 12, h: 2 }
542
+ config: { title: Tasks, icon: CheckSquare, color: "#6366F1", profileSlug: task }
543
+ - id: task-count
544
+ kind: widget
545
+ widgetType: stat-card
546
+ pos: { x: 0, y: 2, w: 3, h: 3 }
547
+ config: { label: "Total Tasks", aggregation: count, profileSlug: task, color: "#6366F1" }
548
+ - id: task-board
549
+ kind: view
550
+ viewName: "Task Board"
551
+ pos: { x: 0, y: 9, w: 12, h: 8 }
552
+ - id: task-backlog
553
+ kind: view
554
+ viewName: Backlog
555
+ pos: { x: 0, y: 19, w: 12, h: 8 }
556
+ - id: task-in-progress
557
+ kind: widget
558
+ widgetType: entity-count
559
+ pos: { x: 3, y: 2, w: 3, h: 3 }
560
+ config: { profileSlug: task, label: "In Progress", icon: Loader, filter: { status: in-progress }, color: "#3B82F6" }
561
+ - id: task-completed
562
+ kind: widget
563
+ widgetType: entity-count
564
+ pos: { x: 6, y: 2, w: 3, h: 3 }
565
+ config: { profileSlug: task, label: Completed, icon: CheckCircle, filter: { status: completed }, color: "#10B981" }
566
+ - id: task-failed
567
+ kind: widget
568
+ widgetType: entity-count
569
+ pos: { x: 9, y: 2, w: 3, h: 3 }
570
+ config: { profileSlug: task, label: Failed, icon: XCircle, filter: { status: failed }, color: "#EF4444" }
571
+ - id: task-active-list
572
+ kind: widget
573
+ widgetType: entity-list
574
+ pos: { x: 0, y: 5, w: 12, h: 4 }
575
+ config: { profileSlug: task, title: "Active Tasks", limit: 8, variant: detailed }
576
+ breakpoints:
577
+ lg: { cols: 12, rowHeight: 60, gap: 12 }
578
+ md: { cols: 10, rowHeight: 60, gap: 12 }
579
+ sm: { cols: 6, rowHeight: 60, gap: 12 }
580
+ xs: { cols: 4, rowHeight: 60, gap: 12 }
581
+ xxs: { cols: 2, rowHeight: 60, gap: 12 }
582
+
583
+ - name: Project
584
+ type: bento
585
+ scopeProfileSlug: project
586
+ config:
587
+ layout: bento
588
+ blocks:
589
+ - id: project-header
590
+ kind: widget
591
+ widgetType: section-header
592
+ pos: { x: 0, y: 0, w: 12, h: 2 }
593
+ config: { title: Projects, icon: Folder, color: "#F59E0B", profileSlug: project }
594
+ - id: project-count
595
+ kind: widget
596
+ widgetType: stat-card
597
+ pos: { x: 0, y: 2, w: 3, h: 3 }
598
+ config: { label: "Total Projects", aggregation: count, profileSlug: project, color: "#F59E0B" }
599
+ - id: project-cmd
600
+ kind: view
601
+ viewName: "Project Command Center"
602
+ pos: { x: 0, y: 5, w: 12, h: 10 }
603
+ - id: project-timeline
604
+ kind: view
605
+ viewName: "Agent Timeline"
606
+ pos: { x: 0, y: 15, w: 12, h: 8 }
607
+ breakpoints:
608
+ lg: { cols: 12, rowHeight: 60, gap: 12 }
609
+ md: { cols: 10, rowHeight: 60, gap: 12 }
610
+ sm: { cols: 6, rowHeight: 60, gap: 12 }
611
+ xs: { cols: 4, rowHeight: 60, gap: 12 }
612
+ xxs: { cols: 2, rowHeight: 60, gap: 12 }
613
+
614
+ - name: Skill
615
+ type: bento
616
+ scopeProfileSlug: skill
617
+ config:
618
+ layout: bento
619
+ blocks:
620
+ - id: skill-header
621
+ kind: widget
622
+ widgetType: section-header
623
+ pos: { x: 0, y: 0, w: 12, h: 2 }
624
+ config: { title: Skills, icon: Zap, color: "#10B981", profileSlug: skill }
625
+ - id: skill-count
626
+ kind: widget
627
+ widgetType: stat-card
628
+ pos: { x: 0, y: 2, w: 3, h: 3 }
629
+ config: { label: "Total Skills", aggregation: count, profileSlug: skill, color: "#10B981" }
630
+ - id: skill-registry
631
+ kind: view
632
+ viewName: "Skill Registry"
633
+ pos: { x: 0, y: 9, w: 12, h: 8 }
634
+ - id: skill-trusted
635
+ kind: widget
636
+ widgetType: entity-count
637
+ pos: { x: 3, y: 2, w: 3, h: 3 }
638
+ config: { profileSlug: skill, label: Trusted, icon: Shield, filter: { trusted: true }, color: "#10B981" }
639
+ - id: skill-untrusted
640
+ kind: widget
641
+ widgetType: entity-count
642
+ pos: { x: 6, y: 2, w: 3, h: 3 }
643
+ config: { profileSlug: skill, label: Untrusted, icon: AlertTriangle, filter: { trusted: false }, color: "#EF4444" }
644
+ - id: skill-spotlight
645
+ kind: widget
646
+ widgetType: entity-spotlight
647
+ pos: { x: 0, y: 5, w: 6, h: 4 }
648
+ config: { profileSlug: skill, seed: random, layout: detail, subtitleField: category, color: "#8B5CF6" }
649
+ - id: skill-agents-using
650
+ kind: widget
651
+ widgetType: entity-list
652
+ pos: { x: 6, y: 5, w: 6, h: 4 }
653
+ config: { profileSlug: agent, title: "Agents Using", limit: 6, variant: compact }
654
+ breakpoints:
655
+ lg: { cols: 12, rowHeight: 60, gap: 12 }
656
+ md: { cols: 10, rowHeight: 60, gap: 12 }
657
+ sm: { cols: 6, rowHeight: 60, gap: 12 }
658
+ xs: { cols: 4, rowHeight: 60, gap: 12 }
659
+ xxs: { cols: 2, rowHeight: 60, gap: 12 }
660
+
661
+ - name: Provider
662
+ type: bento
663
+ scopeProfileSlug: provider
664
+ config:
665
+ layout: bento
666
+ blocks:
667
+ - id: provider-header
668
+ kind: widget
669
+ widgetType: section-header
670
+ pos: { x: 0, y: 0, w: 12, h: 2 }
671
+ config: { title: Providers, icon: Database, color: "#06B6D4", profileSlug: provider }
672
+ - id: provider-count
673
+ kind: widget
674
+ widgetType: stat-card
675
+ pos: { x: 0, y: 2, w: 3, h: 3 }
676
+ config: { label: "Total Providers", aggregation: count, profileSlug: provider, color: "#06B6D4" }
677
+ - id: provider-dash
678
+ kind: view
679
+ viewName: "Provider Dashboard"
680
+ pos: { x: 0, y: 9, w: 12, h: 8 }
681
+ - id: provider-keys
682
+ kind: view
683
+ viewName: "Provider Key Health"
684
+ pos: { x: 0, y: 19, w: 12, h: 8 }
685
+ - id: provider-healthy
686
+ kind: widget
687
+ widgetType: entity-count
688
+ pos: { x: 3, y: 2, w: 3, h: 3 }
689
+ config: { profileSlug: provider, label: Healthy, icon: CheckCircle, filter: { status: healthy }, color: "#10B981" }
690
+ - id: provider-degraded
691
+ kind: widget
692
+ widgetType: entity-count
693
+ pos: { x: 6, y: 2, w: 3, h: 3 }
694
+ config: { profileSlug: provider, label: Degraded, icon: AlertTriangle, filter: { status: degraded }, color: "#F59E0B" }
695
+ - id: provider-all
696
+ kind: widget
697
+ widgetType: entity-list
698
+ pos: { x: 0, y: 5, w: 12, h: 4 }
699
+ config: { profileSlug: provider, title: "All Providers", limit: 8, variant: detailed }
700
+ breakpoints:
701
+ lg: { cols: 12, rowHeight: 60, gap: 12 }
702
+ md: { cols: 10, rowHeight: 60, gap: 12 }
703
+ sm: { cols: 6, rowHeight: 60, gap: 12 }
704
+ xs: { cols: 4, rowHeight: 60, gap: 12 }
705
+ xxs: { cols: 2, rowHeight: 60, gap: 12 }
706
+
707
+ displayTemplates:
708
+ - name: "Agent Card"
709
+ description: ""
710
+ entityType: agent
711
+ targetType: entity
712
+ isDefault: true
713
+ config:
714
+ layout:
715
+ structure:
716
+ header:
717
+ enabled: true
718
+ slots: [agent-status, agent-health, agent-runtime, agent-role]
719
+ layout: horizontal
720
+ sidebar:
721
+ enabled: true
722
+ slots: [agent-owner, agent-provider, agent-channel, agent-model, agent-version, agent-last-seen, agent-deployment, agent-heartbeat]
723
+ position: right
724
+ width: 260px
725
+ layout: vertical
726
+ content:
727
+ enabled: true
728
+ slots: [agent-workspace, agent-channels, agent-tags]
729
+ layout: vertical
730
+ fieldMapping:
731
+ agent-status: { slot: agent-status, renderer: { type: badge }, order: 1 }
732
+ agent-health: { slot: agent-health, renderer: { type: badge }, order: 2 }
733
+ agent-runtime: { slot: agent-runtime, renderer: { type: badge }, order: 3 }
734
+ agent-role: { slot: agent-role, renderer: { type: badge }, order: 4 }
735
+ agent-owner: { slot: agent-owner, renderer: { type: avatar }, order: 5 }
736
+ agent-provider: { slot: agent-provider, renderer: { type: link }, order: 6 }
737
+ agent-channel: { slot: agent-channel, renderer: { type: text }, order: 7, label: "Primary Channel", showLabel: true }
738
+ agent-model: { slot: agent-model, renderer: { type: text }, order: 8, label: Model, showLabel: true }
739
+ agent-version: { slot: agent-version, renderer: { type: text }, order: 9, label: Version, showLabel: true }
740
+ agent-last-seen: { slot: agent-last-seen, renderer: { type: date, format: relative }, order: 10 }
741
+ agent-deployment: { slot: agent-deployment, renderer: { type: text }, order: 11, label: Deployment, showLabel: true }
742
+ agent-heartbeat: { slot: agent-heartbeat, renderer: { type: text }, order: 12, label: Heartbeat, showLabel: true }
743
+ agent-workspace: { slot: agent-workspace, renderer: { type: text }, order: 13, label: "Workspace Path", showLabel: true }
744
+ agent-channels: { slot: agent-channels, renderer: { type: badge }, order: 14, label: "All Channels", showLabel: true }
745
+ agent-tags: { slot: agent-tags, renderer: { type: badge }, order: 15 }
746
+ colors:
747
+ accent: "#1A3A5C"
748
+
749
+ - name: "Project Card"
750
+ description: ""
751
+ entityType: project
752
+ targetType: entity
753
+ isDefault: true
754
+ config:
755
+ layout:
756
+ structure:
757
+ header:
758
+ enabled: true
759
+ slots: [project-status, project-priority, project-health, project-type]
760
+ layout: horizontal
761
+ sidebar:
762
+ enabled: true
763
+ slots: [project-assigned-agent, project-owner, project-deadline, project-start]
764
+ position: right
765
+ width: 260px
766
+ layout: vertical
767
+ content:
768
+ enabled: true
769
+ slots: [project-goal, project-outcome, project-tags]
770
+ layout: vertical
771
+ fieldMapping:
772
+ project-status: { slot: project-status, renderer: { type: badge }, order: 1 }
773
+ project-priority: { slot: project-priority, renderer: { type: badge }, order: 2 }
774
+ project-health: { slot: project-health, renderer: { type: badge }, order: 3 }
775
+ project-type: { slot: project-type, renderer: { type: badge }, order: 4 }
776
+ project-assigned-agent: { slot: project-assigned-agent, renderer: { type: link }, order: 5 }
777
+ project-owner: { slot: project-owner, renderer: { type: avatar }, order: 6 }
778
+ project-deadline: { slot: project-deadline, renderer: { type: date, format: relative }, order: 7 }
779
+ project-start: { slot: project-start, renderer: { type: date }, order: 8 }
780
+ project-goal: { slot: project-goal, renderer: { type: text }, order: 9, label: Goal, showLabel: true }
781
+ project-outcome: { slot: project-outcome, renderer: { type: text }, order: 10, label: "Expected Outcome", showLabel: true }
782
+ project-tags: { slot: project-tags, renderer: { type: badge }, order: 11 }
783
+ colors:
784
+ accent: "#2E6DA4"
785
+
786
+ - name: "Task Card"
787
+ description: ""
788
+ entityType: task
789
+ targetType: entity
790
+ isDefault: true
791
+ config:
792
+ layout:
793
+ structure:
794
+ header:
795
+ enabled: true
796
+ slots: [task-status, task-priority, task-type]
797
+ layout: horizontal
798
+ sidebar:
799
+ enabled: true
800
+ slots: [task-assigned-agent, task-project, task-due-date, task-token-estimate, task-actual-tokens, task-effort-hours]
801
+ position: right
802
+ width: 260px
803
+ layout: vertical
804
+ content:
805
+ enabled: true
806
+ slots: [task-blocked-by, task-session-key, task-tags]
807
+ layout: vertical
808
+ fieldMapping:
809
+ task-status: { slot: task-status, renderer: { type: badge }, order: 1 }
810
+ task-priority: { slot: task-priority, renderer: { type: badge }, order: 2 }
811
+ task-type: { slot: task-type, renderer: { type: badge }, order: 3 }
812
+ task-assigned-agent: { slot: task-assigned-agent, renderer: { type: link }, order: 4 }
813
+ task-project: { slot: task-project, renderer: { type: link }, order: 5 }
814
+ task-due-date: { slot: task-due-date, renderer: { type: date, format: relative }, order: 6 }
815
+ task-token-estimate: { slot: task-token-estimate, renderer: { type: number }, order: 7 }
816
+ task-actual-tokens: { slot: task-actual-tokens, renderer: { type: number }, order: 8 }
817
+ task-effort-hours: { slot: task-effort-hours, renderer: { type: number }, order: 9 }
818
+ task-blocked-by: { slot: task-blocked-by, renderer: { type: text }, order: 10, label: "Blocked By", showLabel: true }
819
+ task-session-key: { slot: task-session-key, renderer: { type: text }, order: 11, label: "Session Key", showLabel: true }
820
+ task-tags: { slot: task-tags, renderer: { type: badge }, order: 12 }
821
+ colors:
822
+ accent: "#1B6E45"
823
+
824
+ - name: "Skill Card"
825
+ description: ""
826
+ entityType: skill
827
+ targetType: entity
828
+ isDefault: true
829
+ config:
830
+ layout:
831
+ structure:
832
+ header:
833
+ enabled: true
834
+ slots: [skill-trust, skill-virustotal, skill-category]
835
+ layout: horizontal
836
+ sidebar:
837
+ enabled: true
838
+ slots: [skill-version, skill-install-date, skill-last-audit, skill-maintainer, skill-requires-api]
839
+ position: right
840
+ width: 260px
841
+ layout: vertical
842
+ content:
843
+ enabled: true
844
+ slots: [skill-source-url, skill-notes]
845
+ layout: vertical
846
+ fieldMapping:
847
+ skill-trust: { slot: skill-trust, renderer: { type: badge }, order: 1 }
848
+ skill-virustotal: { slot: skill-virustotal, renderer: { type: badge }, order: 2 }
849
+ skill-category: { slot: skill-category, renderer: { type: badge }, order: 3 }
850
+ skill-version: { slot: skill-version, renderer: { type: text }, order: 4, label: Version, showLabel: true }
851
+ skill-install-date: { slot: skill-install-date, renderer: { type: date }, order: 5 }
852
+ skill-last-audit: { slot: skill-last-audit, renderer: { type: date, format: relative }, order: 6, label: "Last Audit", showLabel: true }
853
+ skill-maintainer: { slot: skill-maintainer, renderer: { type: text }, order: 7, label: Maintainer, showLabel: true }
854
+ skill-requires-api: { slot: skill-requires-api, renderer: { type: checkbox }, order: 8, label: "Requires API Key", showLabel: true }
855
+ skill-source-url: { slot: skill-source-url, renderer: { type: text }, order: 9, label: Source, showLabel: true }
856
+ skill-notes: { slot: skill-notes, renderer: { type: text }, order: 10, label: "Security Notes", showLabel: true }
857
+ colors:
858
+ accent: "#7C3AED"
859
+
860
+ - name: "Provider Card"
861
+ description: ""
862
+ entityType: provider
863
+ targetType: entity
864
+ isDefault: true
865
+ config:
866
+ layout:
867
+ structure:
868
+ header:
869
+ enabled: true
870
+ slots: [provider-key-health, provider-type]
871
+ layout: horizontal
872
+ sidebar:
873
+ enabled: true
874
+ slots: [provider-model, provider-cost-input, provider-cost-output, provider-budget-day, provider-spend-week]
875
+ position: right
876
+ width: 260px
877
+ layout: vertical
878
+ content:
879
+ enabled: true
880
+ slots: [provider-base-url, provider-notes]
881
+ layout: vertical
882
+ fieldMapping:
883
+ provider-key-health: { slot: provider-key-health, renderer: { type: badge }, order: 1 }
884
+ provider-type: { slot: provider-type, renderer: { type: badge }, order: 2 }
885
+ provider-model: { slot: provider-model, renderer: { type: text }, order: 3, label: Model, showLabel: true }
886
+ provider-cost-input: { slot: provider-cost-input, renderer: { type: number }, order: 4 }
887
+ provider-cost-output: { slot: provider-cost-output, renderer: { type: number }, order: 5 }
888
+ provider-budget-day: { slot: provider-budget-day, renderer: { type: number }, order: 6 }
889
+ provider-spend-week: { slot: provider-spend-week, renderer: { type: progress }, order: 7, label: "Weekly Spend", showLabel: true }
890
+ provider-base-url: { slot: provider-base-url, renderer: { type: text }, order: 8, label: Endpoint, showLabel: true }
891
+ provider-notes: { slot: provider-notes, renderer: { type: text }, order: 9, label: Notes, showLabel: true }
892
+ colors:
893
+ accent: "#B5451B"
894
+
895
+ seedEntities:
896
+ - profileSlug: person
897
+ title: Antoine
898
+ properties:
899
+ person-role: Founder
900
+ person-email: antoine@synap.io
901
+ person-telegram: "@antoine_synap"
902
+ person-focus: "OpenClaw fleet management and Agent Fleet template"
903
+
904
+ - profileSlug: provider
905
+ title: "Claude (Anthropic)"
906
+ properties:
907
+ provider-type: "LLM Cloud"
908
+ provider-key-health: Valid
909
+ provider-model: claude-sonnet-4-6
910
+ provider-cost-input: 0.003
911
+ provider-cost-output: 0.015
912
+ provider-budget-day: 5
913
+ provider-spend-week: 14.2
914
+ provider-base-url: "https://api.anthropic.com/v1"
915
+ provider-notes: "Primary model for Mira (coding) and Lore (research). Claude Sonnet 4.6 via direct Anthropic API. OAuth tokens from Claude Free/Pro/Max are NOT permitted per Feb 2026 ToS update."
916
+
917
+ - profileSlug: provider
918
+ title: "DeepSeek via OpenRouter"
919
+ properties:
920
+ provider-type: "API Gateway"
921
+ provider-key-health: Valid
922
+ provider-model: deepseek/deepseek-r1
923
+ provider-cost-input: 0.00055
924
+ provider-cost-output: 0.00219
925
+ provider-budget-day: 2
926
+ provider-spend-week: 3.4
927
+ provider-base-url: "https://openrouter.ai/api/v1"
928
+ provider-notes: "Cost-efficient option for Tact (ops agent) running high-volume onboarding automations. OpenRouter provides auth profile rotation and fallback chain."
929
+
930
+ - profileSlug: provider
931
+ title: "Ollama (Local)"
932
+ properties:
933
+ provider-type: "LLM Local"
934
+ provider-key-health: "No Key (Local)"
935
+ provider-model: qwen3:8b
936
+ provider-cost-input: 0
937
+ provider-cost-output: 0
938
+ provider-budget-day: 0
939
+ provider-spend-week: 0
940
+ provider-base-url: "http://127.0.0.1:11434"
941
+ provider-notes: "Local Ollama instance for heartbeat tasks and low-stakes automation. Zero API cost. Qwen3 8B fits in 8GB RAM. Use for cron-driven monitoring tasks that don't require frontier model quality."
942
+
943
+ - profileSlug: skill
944
+ title: github-mcp
945
+ properties:
946
+ skill-trust: Trusted
947
+ skill-category: Development
948
+ skill-source-url: "https://github.com/openclaw/skills/tree/main/github-mcp"
949
+ skill-version: 2.1.0
950
+ skill-install-date: "2026-02-01"
951
+ skill-last-audit: "2026-02-15"
952
+ skill-virustotal: Clean
953
+ skill-maintainer: "OpenClaw core team"
954
+ skill-requires-api: true
955
+ skill-notes: "Official MCP server for GitHub. Supports repo management, PR creation, issue triage, and webhook triggers. Maintained by OpenClaw core team. Audit Feb 15 — clean."
956
+
957
+ - profileSlug: skill
958
+ title: shell-sandbox
959
+ properties:
960
+ skill-trust: Trusted
961
+ skill-category: Development
962
+ skill-source-url: "https://github.com/openclaw/skills/tree/main/shell-sandbox"
963
+ skill-version: 1.4.2
964
+ skill-install-date: "2026-02-01"
965
+ skill-last-audit: "2026-02-20"
966
+ skill-virustotal: Clean
967
+ skill-maintainer: openclaw-labs
968
+ skill-requires-api: false
969
+ skill-notes: "OpenClaw-compatible sandboxed shell executor. Commands run inside Docker container with workspace-scoped filesystem. Allowlist: git, npm, cargo, pytest, make. Never runs as root. Strongly preferred over bare shell access."
970
+
971
+ - profileSlug: skill
972
+ title: telegram
973
+ properties:
974
+ skill-trust: Trusted
975
+ skill-category: Communication
976
+ skill-source-url: "https://github.com/openclaw/skills/tree/main/telegram"
977
+ skill-version: 3.0.1
978
+ skill-install-date: "2026-02-01"
979
+ skill-last-audit: "2026-02-18"
980
+ skill-virustotal: Clean
981
+ skill-maintainer: "OpenClaw core team"
982
+ skill-requires-api: true
983
+ skill-notes: "Official Telegram channel plugin. Supports DM and group commands. Bot token stored encrypted at rest in OpenClaw's SecretBackend. allowFrom configured to owner number only."
984
+
985
+ - profileSlug: skill
986
+ title: web-browser
987
+ properties:
988
+ skill-trust: Review
989
+ skill-category: Browser
990
+ skill-source-url: "https://github.com/openclaw/skills/tree/main/web-browser"
991
+ skill-version: 1.8.0
992
+ skill-install-date: "2026-02-10"
993
+ skill-last-audit: "2026-02-10"
994
+ skill-virustotal: Clean
995
+ skill-maintainer: community
996
+ skill-requires-api: false
997
+ skill-notes: "CDP-based Chrome/Chromium automation. Significant prompt injection surface: agent reads web content that could contain malicious instructions. Set to Review pending a full audit. Do not use on untrusted URLs until audited."
998
+
999
+ - profileSlug: skill
1000
+ title: email-gmail
1001
+ properties:
1002
+ skill-trust: Review
1003
+ skill-category: Communication
1004
+ skill-source-url: "https://github.com/openclaw/skills/tree/main/email-gmail"
1005
+ skill-version: 2.3.1
1006
+ skill-install-date: "2026-02-08"
1007
+ skill-last-audit: "2026-02-08"
1008
+ skill-virustotal: Clean
1009
+ skill-maintainer: community
1010
+ skill-requires-api: true
1011
+ skill-notes: "Gmail OAuth integration. Read + send permissions. Set to Review: OAuth scope is broad (all mail read/send). Consider scoping to specific labels or creating a dedicated automation Gmail account. Tact uses this for onboarding sequences — monitor closely."
1012
+
1013
+ - profileSlug: skill
1014
+ title: flagged-analytics-skill
1015
+ properties:
1016
+ skill-trust: Untrusted
1017
+ skill-category: Data
1018
+ skill-source-url: "https://clawhub.io/skills/advanced-analytics-v2"
1019
+ skill-version: 1.0.3
1020
+ skill-install-date: "2026-02-14"
1021
+ skill-last-audit: "2026-02-22"
1022
+ skill-virustotal: Flagged
1023
+ skill-maintainer: unknown
1024
+ skill-requires-api: true
1025
+ skill-notes: "FLAGGED — VirusTotal scan Feb 22 returned 3 detections. Suspected data exfiltration payload similar to documented ClawHub supply chain attacks. Tact was using this skill (see relations). Immediately disable in Tact config. Source repo deleted. Do not reinstall. Report to ClawHub security team."
1026
+
1027
+ - profileSlug: agent
1028
+ title: Mira
1029
+ properties:
1030
+ agent-status: Active
1031
+ agent-health: Healthy
1032
+ agent-runtime: OpenClaw
1033
+ agent-version: v0.1.6
1034
+ agent-model: claude-sonnet-4-6
1035
+ agent-provider: "ref:provider:Claude (Anthropic)"
1036
+ agent-owner: "ref:person:Antoine"
1037
+ agent-channel: Telegram
1038
+ agent-channels: [Telegram, CLI]
1039
+ agent-heartbeat: "*/30 * * * *"
1040
+ agent-last-seen: "2026-02-24"
1041
+ agent-workspace: /home/agents/mira
1042
+ agent-deployment: VPS
1043
+ agent-role: Coder
1044
+ agent-tags: [production, "24/7"]
1045
+ content: "# Agent Brief: Mira\n\n## Identity\nMira is the primary coding agent. She runs OpenClaw v0.1.6 on a 4 vCPU / 8GB VPS (Hetzner CX22), boots in under 10ms, and idles at ~16MB RAM. Her primary model is Claude Sonnet 4.6 via direct Anthropic API. Fallback: DeepSeek R1 via OpenRouter for lower-priority tasks.\n\n## Core Capabilities\nMira's installed skills: github-mcp (repo management, PR creation, webhook triggers), shell-sandbox (sandboxed bash in Docker, allowlist: git/npm/cargo/pytest/make), telegram (agent channel). All three are Trusted — clean VirusTotal, maintained by verified sources.\n\n## Active Projects\n- **Synap CI/CD Pipeline**: Automates test runs on PR merge, deploys to staging on green CI. Runs cron every 30 minutes to check for open PRs.\n\n## Security Configuration\nOpenClaw workspace scoped to `/home/agents/mira`. Command allowlist enforced — no arbitrary shell execution. API key encrypted at rest via OpenClaw SecretBackend. Gateway accessible only via Tailscale (no public port exposure). Pairing code required for new connections.\n\n## Known Limitations\n- Does not handle design or content tasks — delegate those to a writer agent\n- Token usage spikes on large codebases: set per-session budget cap to $1.50 in provider config\n- WhatsApp channel deliberately excluded — Telegram preferred for persistent session management"
1046
+
1047
+ - profileSlug: agent
1048
+ title: Lore
1049
+ properties:
1050
+ agent-status: Idle
1051
+ agent-health: Healthy
1052
+ agent-runtime: OpenClaw
1053
+ agent-version: v0.1.6
1054
+ agent-model: claude-sonnet-4-6
1055
+ agent-provider: "ref:provider:Claude (Anthropic)"
1056
+ agent-owner: "ref:person:Antoine"
1057
+ agent-channel: Telegram
1058
+ agent-channels: [Telegram, CLI]
1059
+ agent-heartbeat: "0 8 * * *"
1060
+ agent-last-seen: "2026-02-24"
1061
+ agent-workspace: /home/agents/lore
1062
+ agent-deployment: VPS
1063
+ agent-role: Researcher
1064
+ agent-tags: [production, on-demand]
1065
+
1066
+ - profileSlug: agent
1067
+ title: Tact
1068
+ properties:
1069
+ agent-status: Active
1070
+ agent-health: Degraded
1071
+ agent-runtime: OpenClaw
1072
+ agent-version: latest
1073
+ agent-model: deepseek/deepseek-r1
1074
+ agent-provider: "ref:provider:DeepSeek via OpenRouter"
1075
+ agent-owner: "ref:person:Antoine"
1076
+ agent-channel: Telegram
1077
+ agent-channels: [Telegram]
1078
+ agent-heartbeat: "0 9 * * 1-5"
1079
+ agent-last-seen: "2026-02-24"
1080
+ agent-workspace: /home/agents/tact
1081
+ agent-deployment: Docker
1082
+ agent-role: Ops
1083
+ agent-tags: [production, "24/7"]
1084
+ content: "# Agent Brief: Tact — ⚠️ HEALTH: DEGRADED\n\n## Status Alert\n**Tact's health is currently DEGRADED.** Investigation required: the flagged-analytics-skill (VirusTotal: 3 detections) was installed and used by Tact for client onboarding tracking. Immediately disable this skill in Tact's config:\n\n```toml\n# ~/.zeroclaw/config.toml — Tact instance\n[skills]\ndisabled = [\"flagged-analytics-skill\"]\n```\n\nAudit Tact's session logs for the past 7 days. Check for anomalous outbound requests. Rotate any API keys that Tact had access to.\n\n## Identity\nTact is the ops agent running OpenClaw (Docker container isolation). Handles client onboarding automation: email sequences via email-gmail skill, CRM record creation, Slack introductions. Runs on DeepSeek R1 via OpenRouter — lower cost for high-volume, lower-complexity ops tasks.\n\n## Active Projects\n- **Client Onboarding Automation**: Sends welcome email sequence on new signup, creates CRM record, posts Slack intro. Triggered by CRM webhook.\n\n## Post-Remediation\nAfter disabling flagged skill and rotating credentials, reset health to Healthy and re-evaluate skill registry for any other Review-level skills that warrant upgrade or removal."
1085
+
1086
+ - profileSlug: project
1087
+ title: "Synap CI/CD Pipeline"
1088
+ properties:
1089
+ project-status: "In Progress"
1090
+ project-priority: High
1091
+ project-assigned-agent: "ref:agent:Mira"
1092
+ project-owner: "ref:person:Antoine"
1093
+ project-start: "2026-02-10"
1094
+ project-deadline: "2026-03-15"
1095
+ project-health: Green
1096
+ project-type: DevOps
1097
+ project-goal: "Automate test execution on every PR merge and deploy to staging on green CI with zero manual intervention"
1098
+ project-outcome: "Mira handles full CI/CD loop; human only reviews merged PRs and production deploys"
1099
+ project-tags: [recurring, internal]
1100
+
1101
+ - profileSlug: project
1102
+ title: "Competitive Research Sprint"
1103
+ properties:
1104
+ project-status: "In Progress"
1105
+ project-priority: High
1106
+ project-assigned-agent: "ref:agent:Lore"
1107
+ project-owner: "ref:person:Antoine"
1108
+ project-start: "2026-02-17"
1109
+ project-deadline: "2026-03-07"
1110
+ project-health: Green
1111
+ project-type: Research
1112
+ project-goal: "Map the full OpenClaw/OpenClaw alternative ecosystem, identify user pain points from public sources, and output a structured market audit"
1113
+ project-outcome: "Comprehensive market audit doc + template architecture recommendation"
1114
+ project-tags: [one-off, internal]
1115
+
1116
+ - profileSlug: project
1117
+ title: "Client Onboarding Automation"
1118
+ properties:
1119
+ project-status: "In Progress"
1120
+ project-priority: Critical
1121
+ project-assigned-agent: "ref:agent:Tact"
1122
+ project-owner: "ref:person:Antoine"
1123
+ project-start: "2026-02-01"
1124
+ project-deadline: "2026-03-31"
1125
+ project-health: Yellow
1126
+ project-type: Automation
1127
+ project-goal: "Eliminate manual onboarding steps: automate welcome email, CRM creation, and Slack intro on every new signup"
1128
+ project-outcome: "New clients fully onboarded within 5 minutes of signup, zero human ops involvement for standard accounts"
1129
+ project-tags: [recurring, client]
1130
+
1131
+ - profileSlug: project
1132
+ title: "Template Stack Documentation"
1133
+ properties:
1134
+ project-status: Backlog
1135
+ project-priority: Medium
1136
+ project-owner: "ref:person:Antoine"
1137
+ project-deadline: "2026-03-31"
1138
+ project-health: Green
1139
+ project-type: Content
1140
+ project-goal: "Write comprehensive documentation for all 4 Synap workspace templates: PM OS, Content OS, Second Brain, Agent Fleet"
1141
+ project-outcome: "Self-service docs at synap.io/templates so users can install and configure templates without support"
1142
+ project-tags: [one-off, internal]
1143
+
1144
+ - profileSlug: task
1145
+ title: "Automate test suite on PR merge"
1146
+ properties:
1147
+ task-status: Running
1148
+ task-priority: High
1149
+ task-assigned-agent: "ref:agent:Mira"
1150
+ task-project: "ref:project:Synap CI/CD Pipeline"
1151
+ task-type: Code
1152
+ task-due-date: "2026-03-01"
1153
+ task-effort-hours: 6
1154
+ task-token-estimate: 80
1155
+ task-actual-tokens: 42
1156
+ task-session-key: session_mira_2026_0224_ci_001
1157
+ task-tags: [autonomous, recurring]
1158
+
1159
+ - profileSlug: task
1160
+ title: "Deploy staging on green CI"
1161
+ properties:
1162
+ task-status: Queued
1163
+ task-priority: High
1164
+ task-assigned-agent: "ref:agent:Mira"
1165
+ task-project: "ref:project:Synap CI/CD Pipeline"
1166
+ task-type: DevOps
1167
+ task-due-date: "2026-03-01"
1168
+ task-effort-hours: 3
1169
+ task-token-estimate: 30
1170
+ task-actual-tokens: 0
1171
+ task-blocked-by: "Automate test suite on PR merge must complete first"
1172
+ task-tags: [autonomous, blocked, recurring]
1173
+
1174
+ - profileSlug: task
1175
+ title: "Research OpenClaw alternatives landscape"
1176
+ properties:
1177
+ task-status: Done
1178
+ task-priority: High
1179
+ task-assigned-agent: "ref:agent:Lore"
1180
+ task-project: "ref:project:Competitive Research Sprint"
1181
+ task-type: Research
1182
+ task-due-date: "2026-02-20"
1183
+ task-effort-hours: 4
1184
+ task-token-estimate: 120
1185
+ task-actual-tokens: 134
1186
+ task-session-key: session_lore_2026_0219_research_001
1187
+ task-tags: [autonomous]
1188
+
1189
+ - profileSlug: task
1190
+ title: "Compile pain points from GitHub issues"
1191
+ properties:
1192
+ task-status: Running
1193
+ task-priority: High
1194
+ task-assigned-agent: "ref:agent:Lore"
1195
+ task-project: "ref:project:Competitive Research Sprint"
1196
+ task-type: Research
1197
+ task-due-date: "2026-02-26"
1198
+ task-effort-hours: 5
1199
+ task-token-estimate: 200
1200
+ task-actual-tokens: 88
1201
+ task-session-key: session_lore_2026_0224_research_002
1202
+ task-tags: [autonomous, high-cost]
1203
+
1204
+ - profileSlug: task
1205
+ title: "Send welcome email sequence on signup"
1206
+ properties:
1207
+ task-status: Running
1208
+ task-priority: Critical
1209
+ task-assigned-agent: "ref:agent:Tact"
1210
+ task-project: "ref:project:Client Onboarding Automation"
1211
+ task-type: Ops
1212
+ task-due-date: "2026-03-31"
1213
+ task-effort-hours: 1
1214
+ task-token-estimate: 15
1215
+ task-actual-tokens: 9
1216
+ task-session-key: session_tact_2026_0224_onboard_003
1217
+ task-tags: [autonomous, recurring, needs-review]
1218
+
1219
+ - profileSlug: task
1220
+ title: "Create CRM record and Slack intro"
1221
+ properties:
1222
+ task-status: Running
1223
+ task-priority: Critical
1224
+ task-assigned-agent: "ref:agent:Tact"
1225
+ task-project: "ref:project:Client Onboarding Automation"
1226
+ task-type: Ops
1227
+ task-due-date: "2026-03-31"
1228
+ task-effort-hours: 1
1229
+ task-token-estimate: 10
1230
+ task-actual-tokens: 7
1231
+ task-session-key: session_tact_2026_0224_onboard_004
1232
+ task-tags: [autonomous, recurring, needs-review]
1233
+
1234
+ - profileSlug: task
1235
+ title: "Audit flagged-analytics-skill across all agents"
1236
+ properties:
1237
+ task-status: Queued
1238
+ task-priority: Critical
1239
+ task-assigned-agent: "ref:person:Antoine"
1240
+ task-project: "ref:project:Client Onboarding Automation"
1241
+ task-type: Review
1242
+ task-due-date: "2026-02-25"
1243
+ task-effort-hours: 2
1244
+ task-token-estimate: 0
1245
+ task-actual-tokens: 0
1246
+ task-tags: [needs-review]
1247
+
1248
+ - profileSlug: task
1249
+ title: "Write onboarding guide for Agent Fleet template"
1250
+ properties:
1251
+ task-status: Backlog
1252
+ task-priority: Medium
1253
+ task-project: "ref:project:Template Stack Documentation"
1254
+ task-type: Content
1255
+ task-due-date: "2026-03-21"
1256
+ task-effort-hours: 3
1257
+ task-token-estimate: 50
1258
+ task-actual-tokens: 0
1259
+ task-tags: [async]
1260
+
1261
+ suggestedRelations:
1262
+ - { sourceRef: "agent:Mira", targetRef: "provider:Claude (Anthropic)", type: links_to }
1263
+ - { sourceRef: "agent:Mira", targetRef: "provider:DeepSeek via OpenRouter", type: links_to }
1264
+ - { sourceRef: "agent:Lore", targetRef: "provider:Claude (Anthropic)", type: links_to }
1265
+ - { sourceRef: "agent:Tact", targetRef: "provider:DeepSeek via OpenRouter", type: links_to }
1266
+ - { sourceRef: "agent:Mira", targetRef: "skill:github-mcp", type: links_to }
1267
+ - { sourceRef: "agent:Mira", targetRef: "skill:shell-sandbox", type: links_to }
1268
+ - { sourceRef: "agent:Mira", targetRef: "skill:telegram", type: links_to }
1269
+ - { sourceRef: "agent:Lore", targetRef: "skill:web-browser", type: links_to }
1270
+ - { sourceRef: "agent:Lore", targetRef: "skill:telegram", type: links_to }
1271
+ - { sourceRef: "agent:Tact", targetRef: "skill:email-gmail", type: links_to }
1272
+ - { sourceRef: "agent:Tact", targetRef: "skill:telegram", type: links_to }
1273
+ - { sourceRef: "agent:Tact", targetRef: "skill:flagged-analytics-skill", type: links_to }
1274
+ - { sourceRef: "project:Synap CI/CD Pipeline", targetRef: "agent:Mira", type: assigned_to }
1275
+ - { sourceRef: "project:Competitive Research Sprint", targetRef: "agent:Lore", type: assigned_to }
1276
+ - { sourceRef: "project:Client Onboarding Automation", targetRef: "agent:Tact", type: assigned_to }
1277
+ - { sourceRef: "task:Automate test suite on PR merge", targetRef: "project:Synap CI/CD Pipeline", type: belongs_to_project }
1278
+ - { sourceRef: "task:Automate test suite on PR merge", targetRef: "agent:Mira", type: assigned_to }
1279
+ - { sourceRef: "task:Deploy staging on green CI", targetRef: "project:Synap CI/CD Pipeline", type: belongs_to_project }
1280
+ - { sourceRef: "task:Deploy staging on green CI", targetRef: "agent:Mira", type: assigned_to }
1281
+ - { sourceRef: "task:Research OpenClaw alternatives landscape", targetRef: "project:Competitive Research Sprint", type: belongs_to_project }
1282
+ - { sourceRef: "task:Research OpenClaw alternatives landscape", targetRef: "agent:Lore", type: assigned_to }
1283
+ - { sourceRef: "task:Compile pain points from GitHub issues", targetRef: "project:Competitive Research Sprint", type: belongs_to_project }
1284
+ - { sourceRef: "task:Compile pain points from GitHub issues", targetRef: "agent:Lore", type: assigned_to }
1285
+ - { sourceRef: "task:Send welcome email sequence on signup", targetRef: "project:Client Onboarding Automation", type: belongs_to_project }
1286
+ - { sourceRef: "task:Send welcome email sequence on signup", targetRef: "agent:Tact", type: assigned_to }
1287
+ - { sourceRef: "task:Create CRM record and Slack intro", targetRef: "project:Client Onboarding Automation", type: belongs_to_project }
1288
+ - { sourceRef: "task:Create CRM record and Slack intro", targetRef: "agent:Tact", type: assigned_to }
1289
+ - { sourceRef: "agent:Mira", targetRef: "person:Antoine", type: created_by }
1290
+ - { sourceRef: "agent:Lore", targetRef: "person:Antoine", type: created_by }
1291
+ - { sourceRef: "agent:Tact", targetRef: "person:Antoine", type: created_by }
1292
+
1293
+ bento:
1294
+ viewName: "Agent Fleet Home"
1295
+ blocks:
1296
+ - widgetType: welcome-header
1297
+ pos: { x: 0, y: 0, w: 12, h: 2 }
1298
+ config: { title: "Agent Fleet", subtitle: "Your sovereign control plane for the agent fleet." }
1299
+ - widgetType: entity-count
1300
+ pos: { x: 0, y: 2, w: 3, h: 2 }
1301
+ config: { profileSlug: agent, label: Agents, icon: bot }
1302
+ - widgetType: entity-count
1303
+ pos: { x: 3, y: 2, w: 3, h: 2 }
1304
+ config: { profileSlug: task, label: Tasks, icon: check-square }
1305
+ - widgetType: entity-count
1306
+ pos: { x: 6, y: 2, w: 3, h: 2 }
1307
+ config: { profileSlug: skill, label: Skills, icon: zap }
1308
+ - widgetType: entity-count
1309
+ pos: { x: 9, y: 2, w: 3, h: 2 }
1310
+ config: { profileSlug: provider, label: Providers, icon: database }
1311
+ - widgetType: entity-spotlight
1312
+ pos: { x: 0, y: 4, w: 4, h: 4 }
1313
+ config: { profileSlug: agent, seed: random, layout: detail, subtitleField: status, color: "#1A3A5C" }
1314
+ - widgetType: entity-list
1315
+ pos: { x: 4, y: 4, w: 4, h: 4 }
1316
+ config: { profileSlug: task, title: "Active Tasks", limit: 6, variant: compact }
1317
+ - widgetType: entity-list
1318
+ pos: { x: 8, y: 4, w: 4, h: 4 }
1319
+ config: { profileSlug: skill, title: "Top Skills", limit: 6, variant: compact }
1320
+ - kind: view
1321
+ viewName: "Agent Fleet"
1322
+ pos: { x: 0, y: 8, w: 8, h: 4 }
1323
+ - kind: view
1324
+ viewName: "Provider Key Health"
1325
+ pos: { x: 8, y: 8, w: 4, h: 4 }
1326
+ - kind: view
1327
+ viewName: "Task Board"
1328
+ pos: { x: 0, y: 12, w: 7, h: 4 }
1329
+ - kind: view
1330
+ viewName: "Untrusted Skills Alert"
1331
+ pos: { x: 7, y: 12, w: 5, h: 4 }
1332
+
1333
+ profileEntityBentoTemplates:
1334
+ agent:
1335
+ blocks:
1336
+ - id: entity-header
1337
+ kind: widget
1338
+ widgetType: entity-header
1339
+ pos: { x: 0, y: 0, w: 12, h: 2 }
1340
+ - id: entity-props
1341
+ kind: widget
1342
+ widgetType: entity-properties
1343
+ pos: { x: 0, y: 2, w: 4, h: 8 }
1344
+ - id: entity-content
1345
+ kind: widget
1346
+ widgetType: entity-content
1347
+ pos: { x: 4, y: 2, w: 8, h: 4 }
1348
+ - id: entity-rel
1349
+ kind: widget
1350
+ widgetType: entity-content
1351
+ pos: { x: 4, y: 6, w: 8, h: 4 }
1352
+ task:
1353
+ blocks:
1354
+ - id: entity-header
1355
+ kind: widget
1356
+ widgetType: entity-header
1357
+ pos: { x: 0, y: 0, w: 12, h: 2 }
1358
+ - id: entity-props
1359
+ kind: widget
1360
+ widgetType: entity-properties
1361
+ pos: { x: 0, y: 2, w: 4, h: 8 }
1362
+ - id: entity-content
1363
+ kind: widget
1364
+ widgetType: entity-content
1365
+ pos: { x: 4, y: 2, w: 8, h: 4 }
1366
+ - id: entity-rel
1367
+ kind: widget
1368
+ widgetType: entity-content
1369
+ pos: { x: 4, y: 6, w: 8, h: 4 }
1370
+
1371
+ layout:
1372
+ pinnedApps: [intelligence, dashboard, data]
1373
+ defaultView: agent-fleet
1374
+ defaultApp: null
1375
+ sidebarItems:
1376
+ - kind: profile
1377
+ profileSlug: agent
1378
+ label: "Agent Fleet"
1379
+ icon: bot
1380
+ - kind: profile
1381
+ profileSlug: task
1382
+ label: Tasks
1383
+ icon: check-square
1384
+ - kind: profile
1385
+ profileSlug: skill
1386
+ label: Skills
1387
+ icon: zap
1388
+ - kind: profile
1389
+ profileSlug: project
1390
+ label: Projects
1391
+ icon: folder
1392
+ - kind: profile
1393
+ profileSlug: provider
1394
+ label: Providers
1395
+ icon: database
1396
+ - kind: app
1397
+ appId: intelligence
1398
+ label: Intelligence
1399
+
1400
+ # App reference — Agent Fleet has no dedicated browser app; it lands on entity detail / views.
1401
+ app:
1402
+ kind: stored
1403
+ cellKey: entity-detail
1404
+
1405
+ integrations:
1406
+ - templateKey: agency-skills
1407
+
1408
+ playbooks:
1409
+ - name: "Agent Health Check"
1410
+ goalTemplate: "Check the health of all agents in the fleet, review recently failed tasks, and verify all provider keys are valid."
1411
+ - name: "Security Audit"
1412
+ goalTemplate: "Review the skill registry for any Untrusted or Review status skills. Check VirusTotal results and rotation dates of all provider keys."
1413
+
1414
+ onboarding:
1415
+ goal: "Capture the agent fleet the user runs — the agents themselves, the model providers behind them, the skills they carry, and the projects they work — so the workspace reflects their real AI operation."
1416
+ framing: "Act as a pragmatic AI ops lead. Tease out which agents are live, what models and providers power them, what each agent can do, and what work they're pointed at. Translate that into agents, providers, skills, and projects."
1417
+ collect:
1418
+ - profileSlug: agent
1419
+ what: "The agents they run and what powers each"
1420
+ cardinality: several
1421
+ keyFields: [title, agent-model, agent-provider, agent-status]
1422
+ - profileSlug: provider
1423
+ what: "The model providers behind those agents and their budgets"
1424
+ cardinality: few
1425
+ keyFields: [title, provider-type, provider-model, provider-budget-day]
1426
+ - profileSlug: skill
1427
+ what: "The skills/capabilities each agent carries and how trusted they are"
1428
+ cardinality: several
1429
+ keyFields: [title, skill-category, skill-trust, skill-source-url]
1430
+ openingQuestions:
1431
+ - "Which agents are you running right now, and what's each one for?"
1432
+ - "What models and providers power them, and are there budget limits?"
1433
+ - "What skills do your agents carry, and which projects are they pointed at?"
1434
+ doneWhen: "The live agents exist with their model/provider, the providers are captured with budgets, key skills are catalogued, and agents are linked to active projects."