Private, local "Pulse"-style daily reflection for the Prometheus self-learning loop.
Like ChatGPT Pulse — but private, local, sourced from your own wiki, and curated by an LLM that knows what you actually worked on yesterday.
ChatGPT Pulse ships 5-10 visual cards in the morning based on the user's chat history. It is hosted, requires a $200/mo Pro plan, and ships everything to OpenAI.
This tool does the same thing for the Prometheus wiki:
- Reads the wiki entries, learning-log records, and session summaries you produced in the last 24 hours.
- Calls an LLM (gpt-5.4-mini via the openai-proxy by default) to curate 5-10 cards that connect what you did to broader trends in the area.
- Writes the result to
~/.prometheus/pulse/<DATE>.mdand ingests a copy into your local wiki asdaily-pulse-<DATE>.md.
No data leaves your machine except the LLM call (which is to the openai-proxy
that is already running locally on :8181). No third-party integrations
(Gmail, Calendar, etc.) are read or implied.
git clone https://github.com/Prometheus-AGS/prometheus-daily-pulse ~/Projects/prometheus-daily-pulse
ln -sf ~/Projects/prometheus-daily-pulse/bin/daily-pulse ~/.local/bin/daily-pulse
chmod +x ~/.local/bin/daily-pulseThe tool expects:
bash≥ 4python3≥ 3.8curl- The
openai-proxyrunning on:8181(see prometheus-skill-system for setup).
No jq, no node, no other dependencies.
daily-pulse runEquivalent to: gather + curate + wiki-ingest. Produces
~/.prometheus/pulse/<DATE>.md and ~/.prometheus/knowledge/shared/wiki/daily-pulse-<DATE>.md.
# 1. Read yesterday's wiki + learning-log into a context file
daily-pulse gather [--date YYYY-MM-DD] [--days N]
# 2. Run LLM curation on the context file → pulse markdown
daily-pulse curate [--date YYYY-MM-DD] [--model MODEL]
# 3. Copy the pulse markdown into the wiki with proper frontmatter
daily-pulse wiki-ingest [--date YYYY-MM-DD]
# 4. Print the pulse for a date
daily-pulse show [--date YYYY-MM-DD]--date YYYY-MM-DD— date to curate (default: yesterday)--days N— lookback window in days (default: 1)--today— use today instead of yesterday (for--run)--model MODEL— override LLM model (default:gpt-5.4-mini)--no-ingest— skip the wiki-ingest step inrun
LEARN_GRADER_URL— openai-proxy base URL (defaulthttp://localhost:8181/v1)LEARN_GRADER_MODEL— default model (defaultgpt-5.4-mini)PULSE_DIR— output dir (default~/.prometheus/pulse)WIKI_DIR— wiki dir (default~/.prometheus/knowledge/shared/wiki)LEARNING_LOG_DIR— learning-log dir (default~/.prometheus/learning-log)
A daily-pulse-<DATE>.md file with this shape:
# Daily pulse — 2026-06-29
_Curated by daily-pulse · 2026-06-30T21:47:34Z · model: gpt-5.4-mini_
## Themes from yesterday
- self-learning loop hardening
- filesystem and launchd reliability
- auth/security correctness
## Why these cards
<one paragraph explaining what was prioritized and why>
## Today's pulse
### 1. Self-learning loop now spans 5 AI tools
`release` confidence: **high**
You confirmed the loop across Claude Code, Codex, OpenCode, Kimi Code, and MiniMax.
**Why this matters:** This is the distribution layer becoming real ...
**Verify:** search "self-learning loop Claude Code Codex OpenCode ..."
---
### 2. ...
## Meta
- cards: 9
- themes: 3Each card has:
- a scannable title (≤ 60 chars)
- a punchy summary (≤ 140 chars)
- why this matters — one sentence tying it to your actual work
- a category (
release|trend|tool|technique|paper|post|gotcha|opinion) - a suggested query — what to search the web for to verify or expand the card
- a confidence rating (honest; the LLM is told to use "low" when unsure)
The LLM is explicitly told:
- "Ground every card in something concrete from the user's activity. If you cannot, drop the card."
- "Do NOT invent URLs. The
suggested_queryfield is the verifiable thread." - "Skip generic 'AI is changing the world' cards. The user is already in the work."
- "5-10 cards total. If the activity is thin, 3 honest cards beats 8 padded ones."
+--------------------+
| Yesterday's |
| wiki + learning |
| log + sessions |
+---------+----------+
|
v
+--------------------+
| gather (python) |
| → context.md |
+---------+----------+
|
v
+--------------------+
| LLM (gpt-5.4-mini)|
| via openai-proxy |
| → cards JSON |
+---------+----------+
|
v
+--------------------+
| render (python) |
| → pulse.md |
+---------+----------+
|
v
+--------------------+
| wiki-ingest |
| → daily-pulse- |
| <DATE>.md |
+--------------------+
daily-pulse run does all four steps. Each step is also runnable on its own.
The tool is meant to be invoked daily. Three schedulers we ship first-class support for:
mavis cron self daily-pulse --every 24h --prompt "Run: daily-pulse run"Mavis runs the prompt as a managed session. The session sees your full agent
context (including web-search via MCP) and can enrich the cards with live
URLs before running daily-pulse run. See docs/orchestration-mavis.md.
Drop docs/orchestration-kimi-claw.toml into Kimi's scheduled tasks dir.
Kimi runs it once per day at 7am local. See docs/orchestration-kimi-claw.md.
Add a scheduled task in Claude Desktop's Cowork panel with the prompt in
docs/orchestration-claude-cowork.md. Claude runs it with the web-search
tool enabled, then calls daily-pulse run once context is ready.
bash ~/Projects/prometheus-daily-pulse/scripts/smoke-test.shVerifies: bash parse, subcommand dispatch, gather, curate against a fixture, wiki-ingest, show. 8 assertions, all should pass.
MIT. See LICENSE.
- Prometheus-AGS/prometheus-skill-system — the 280-skill orchestrator
- Prometheus-AGS/prometheus-wiki-loop
—
kbd-close,kbd-open,wiki-loop-mcp - Prometheus-AGS/prometheus-learn-grade — the external critic
- OpenAI: ChatGPT Pulse announcement — the public feature this mirrors