Alfred is finally working as a true agentic butler.
It connects to your AI runtime (Claude Code, OpenClaw, or Zo Computer), maintains a self-healing knowledge graph, executes durable workflows, and meets you wherever you already are.
You set it up once on a Mac Mini or VPS and stop thinking about it.
That's the design goal.
Here's everything that shipped:
Temporal execution engine. Alfred now has a kinetic layer: a Temporal-based workflow engine that runs durable, scheduled operations. Daily briefings. Inbox processing. Vault health sweeps. Write workflows in Python; the agent handles reasoning, Python handles control flow. If the worker crashes mid-workflow, it resumes exactly where it left off.
Also: workflow discovery is automatic. Drop a .py file in your workflows directory and the worker finds it. pip install alfred-vault[temporal] to add it.
Live dashboard. An Ink-based TUI showing real-time worker status, pipeline progress, mutation feeds, and health indicators. You can watch your vault being built in real time.
Multi-stage pipelines replaced monolithic agent calls. All three agent-backed workers got rewritten. Each stage has a focused prompt instead of one massive blob. The structural work that doesn't need an LLM (dedup, interlinking, fuzzy matching) is now pure Python.
Curator runs 4 stages:
→ LLM creates one rich note and outputs a JSON entity manifest
→ pure Python entity resolution against the vault → pure Python interlinking
→ per-entity LLM enrichment. No more template placeholder text leaking into records.
Janitor runs 3 stages:
→ pure Python autofix for deterministic issues (missing fields, invalid types)
→ per-broken-link LLM calls with pre-computed candidate matches
→ per-record LLM enrichment for stubs.
Distiller runs a 2-pass architecture.
Pass A:
→ per-source LLM extraction with signal hints (Python counts words like "decided", "assumed", "constraint")
→ pure Python dedup using overlap coefficient
→ per-learning LLM creation.
Pass B:
→ meta-analysis across the entire learning graph, finds contradictions between decisions, surfaces shared assumptions, synthesizes emergent insights. Your vault doesn't just accumulate facts; it builds a reasoning graph.
Full documentation. Architecture overview, per-tool guides, vault schema reference, agent backend setup, configuration reference, CLI commands. All in docs/ and on the GitHub wiki.
Production hardening.
- Crash protection on all daemon loops.
- Staggered worker startup.
- Per-tool OpenClaw agent isolation.
- Manifest retry loops.
- Ollama embedding resilience.
- Fixes across all four worker pipelines (six patch releases of finding every way the system could die and making it not)
Quickstart got smarter. When you pick OpenClaw as your backend, quickstart now auto-registers the four required agents vault-curator, vault-janitor, vault-distiller, worker) so you don't hit a wall on first run. It checks whether Temporal is installed and whether the server is running, and tells you clearly what won't work if either is missing.
Curator inotify fallback. The inbox watcher used watchdog which relies on inotify. Inside containers on older kernels, overlayfs, or NFS mounts, inotify events don't fire. Files dropped into inbox/ after the startup scan were invisible. Now the curator rescans the inbox every 60 seconds as a fallback. When inotify works, the rescan finds nothing. When it doesn't, your files still get processed.
Batch processing and ingestion.alfred process batch -j 4 processes all unprocessed inbox files with parallel workers (4 by default). alfred ingest splits bulk conversation exports (ChatGPT, Anthropic) into individual inbox files. You can import years of chat history and let the curator chew through it overnight.
Six-layer architecture. this is the core concept behind Alfred's build:
Infra → Data → Semantic → Kinetic → Agent → Interface. The vault is the semantic layer, readable by humans and agents, same artifact. Temporal is the kinetic layer. The agent backends are pluggable (Zo, OpenClaw, Claude Code. Your runtime's channels (Telegram, WhatsApp, Slack, iMessage, email) are the interface layer. Each layer is independent.
Alfred now turns any agentic runtime into a butler you can forget about. Or at least getting there:)
GitHub:
PyPI: pip install alfred-vault