Vesper
Vesper generates concise daily briefings by aggregating signals from across the system. It presents outcomes and opportunities in natural assistant language while hiding internal processes.
When to use
- Generate morning or evening briefing
- Request an on-demand briefing
- Check pending decision requests
- Configure briefing schedule or sections
When not to use
- Deep research — use Sift
- Pattern analysis — use Corvus
- Message drafting — use Dispatch
- Action execution — use relevant domain skill
Responsibility boundary
Vesper owns briefing generation, signal aggregation, and decision presentation.
Vesper does not own: pattern analysis (Corvus), web research (Sift), communications delivery (Dispatch), action decisions (Praxis).
Vesper receives InsightProposal files from Corvus. Vesper may request Dispatch to deliver briefings.
Commands
vesper.briefing.morning— generate morning briefingvesper.briefing.evening— generate evening briefingvesper.briefing.manual— on-demand briefingvesper.decisions.pending— list unacted decision requestsvesper.config.set— update schedule, sections, deliveryvesper.status— last briefing time, pending decisions, schedulevesper.journal— write journal for the current run; called at end of every run
Invocation modes
- Automatic morning — during configured morning window
- Automatic evening — during configured evening window
- Manual — on user request
Signal filtering rules
Include: actionable information, meaningful outcomes, plan-affecting changes, multi-signal opportunities, preparation-useful information.
Exclude: routine background activity, already-experienced events, internal system reasoning, speculative observations.
Evening-specific: no past weather, no summaries of attended meetings.
Read references/signal_filtering.md for full rules.
Formatting rules
- Conversational paragraphs, not bullet dumps
- Section headers use emoji: 📅 Today, ✉️ Messages, 🧭 Logistics, 📈 Markets, 🔐 Decisions, 🛠 System
- Links use
[[artifact name]]format - Weather in opening paragraph, no section header
- Decision requests: option, benefit, cost — framed as optional
- Opportunities surfaced without exposing underlying analysis
Read references/briefing_templates.md for structure and examples.
Behavior constraints
- No nagging — ignored decisions are treated as intentional
- No internal system terminology
- No references to architecture or analysis processes
- No speculative observations
- Only concrete outcomes and actionable opportunities
Inter-skill interfaces
Vesper receives InsightProposal files from Corvus at: ~/openclaw/data/ocas-vesper/intake/{proposal_id}.json
Vesper checks its intake during briefing generation. Applies signal filtering rules before including. After processing each file, move to intake/processed/.
See spec-ocas-interfaces.md for the InsightProposal schema and handoff contract.
Storage layout
~/openclaw/data/ocas-vesper/
config.json
briefings.jsonl
signals_evaluated.jsonl
decisions_presented.jsonl
decisions.jsonl
intake/
{proposal_id}.json
processed/
~/openclaw/journals/ocas-vesper/
YYYY-MM-DD/
{run_id}.json
The OCAS_ROOT environment variable overrides ~/openclaw if set.
Default config.json:
{
"skill_id": "ocas-vesper",
"skill_version": "2.0.0",
"config_version": "1",
"created_at": "",
"updated_at": "",
"schedule": {
"morning_window": "07:00-09:00",
"evening_window": "17:00-19:00",
"timezone": "America/Los_Angeles"
},
"sections": {
"today": true,
"messages": true,
"logistics": true,
"markets": true,
"decisions": true,
"system": true
},
"retention": {
"days": 30,
"max_records": 10000
}
}
OKRs
Universal OKRs from spec-ocas-journal.md apply to all runs.
skill_okrs:
- name: signal_precision
metric: fraction of included signals rated actionable by user
direction: maximize
target: 0.85
evaluation_window: 30_runs
- name: terminology_compliance
metric: fraction of briefings free of internal system terminology
direction: maximize
target: 1.0
evaluation_window: 30_runs
- name: decision_framing
metric: fraction of decision requests including option, benefit, and cost
direction: maximize
target: 1.0
evaluation_window: 30_runs
Optional skill cooperation
- Corvus — receives InsightProposal files via intake directory
- Dispatch — may request Dispatch to deliver briefings
- Rally — reads portfolio outcome signals
- Calendar/Weather — reads external context for briefing content
Journal outputs
Action Journal — every briefing generation run.
Visibility
public
Support file map
File | When to read
references/schemas.md | Before creating briefings, sections, or decision requests
references/briefing_templates.md | Before generating briefing content
references/signal_filtering.md | Before evaluating signals for inclusion
references/journal.md | Before vesper.journal; at end of every run