Skip to main content

Alfred

The agent you can forget about.

Turn any agentic runtime into an ambient butler that manages your digital life — so you can be present for the rest of it.

MIT License Python 3.11+ PyPI


200 emails on Tuesday. Alfred surfaced 1 that actually required attention.

A meeting transcript dropped into the inbox at 3pm. By 3:02, Alfred had created the conversation record, updated three people records, filed two tasks under the right project, and linked everything together. Nobody asked for this. Nobody prompted anything. It just happened.

That night, Alfred noticed two records in the vault contradicted each other and flagged it. Fixed three broken links. Discovered a cluster of notes about the same theme that were never connected. Wrote the relationships. By morning, the knowledge graph was richer than when everyone went home.

This is what a butler does. Not just tasks when asked. Anticipatory attention. Owning things so you don't have to hold them in your head.


What is Alfred?

Alfred connects to your agentic runtime — Claude Code, OpenClaw, or Zo Computer — and turns it into a butler you set up once and forget about.

It does three things:

1. It maintains a knowledge graph that never goes stale. An Obsidian vault with 20 structured record types, wikilinked together, readable by both you and your agents. Four background workers — Curator, Janitor, Distiller, Surveyor — continuously process, clean, extract, and connect. The vault is your agent's operational memory and your second brain. Same artifact.

2. It executes durable workflows on your behalf. A Temporal-based engine that runs scheduled and triggered operations. Daily briefings. Inbox processing. Vault health sweeps. If it crashes, it picks up where it left off. Write workflows in Python — the agent handles reasoning, Python handles control flow.

3. It meets you where you already are. Telegram. WhatsApp. Slack. iMessage. Email. CLI. Whatever channels your runtime supports. Not another app to check — the butler comes to you.

The goal isn't to talk to your AI more. The goal is to prompt less and live more.


Get Started

pip install alfred-vault
alfred quickstart
alfred up

Three commands. Drop a file into inbox/ and it's handled.


The Four Workers

Alfred's semantic layer — four specialized workers that maintain your vault around the clock:

Curator Watches inbox/. Turns raw files — transcripts, emails, voice memos — into structured, interlinked records. Creates people, tasks, conversations, projects. Links everything.
Janitor Sweeps for entropy. Broken wikilinks, invalid frontmatter, orphaned files, stub records. Fixes them automatically.
Distiller Reads your operational records and surfaces what's implicit — assumptions, decisions, constraints, contradictions. Builds an evidence graph that evolves with your vault.
Surveyor Embeds your vault into vectors, clusters by semantic similarity, and writes relationship tags back. Finds connections you'd never spot manually.

Each worker has scope enforcement — the Curator can create but not delete, the Janitor can delete but not create, the Distiller can only create learning records. No single worker has unconstrained access.

Workflow Engine

The kinetic layer — durable, scheduled execution powered by Temporal:

alfred temporal worker                    # start the worker
alfred temporal run DailyBriefing         # trigger a workflow
alfred temporal schedule register crons.py  # register schedules

Built-in activities: spawn_agent, run_script, notify_slack, load_json_state, save_json_state, and more. Per-workflow agent profiles — different workflows can use different backends, skills, and scopes.

Agent Backends

Alfred doesn't contain an AI — it plugs into one:

Backend Type Setup
Claude Code Subprocess Default. claude on PATH
Zo Computer HTTP API Set ZO_API_KEY
OpenClaw Subprocess openclaw on PATH. Multi-stage pipelines.

Switch backends in config. No rewiring. The butler adapts to whichever runtime you run.


Architecture

Six layers, each independent:

 Interface     Telegram · WhatsApp · Slack · iMessage · email · CLI · TUI
     |
   Agent        Claude Code · Zo Computer · OpenClaw
     |
  Kinetic       Temporal — durable, scheduled workflow execution
     |
 Semantic       Obsidian vault — knowledge graph for humans and agents
     |
   Data          Omi · Zoom · email · RSS — ambient capture pipelines
     |
   Infra         Mac Mini · VPS · personal cloud — your hardware, your data

Infra — Runs on a Mac Mini under your desk, a Hetzner VPS, or a Zo Computer instance. Self-hosted. Your data never leaves your control.

Data — Anything that produces text can feed the inbox. Omi wearable transcripts, Zoom recordings, email digests, bulk conversation exports (alfred ingest).

Semantic — The Obsidian vault. 20 record types, YAML frontmatter, wikilinks. Maintained by four workers. Not a database — a browseable, versioned, git-tracked knowledge base.

Kinetic — Temporal workflows. Cron schedules, one-off triggers, durable execution. Crashes don't lose state. The agent sleeps for days and resumes with full context.

Agent — Pluggable AI backends. Per-workflow profiles. The butler delegates reasoning to whichever model you trust.

Interface — Governed by your runtime. OpenClaw routes Telegram, WhatsApp, Slack, iMessage, Discord, Signal. Zo routes Telegram, SMS, email. Locally: alfred CLI and alfred tui dashboard.


Install

pip install alfred-vault                    # core workers
pip install "alfred-vault[temporal]"        # + workflow engine
pip install "alfred-vault[all]"             # everything
From source
git clone https://github.com/ssdavidai/alfred.git
cd alfred/packages/alfred-vault && pip install -e ".[all]"

CLI

alfred up                              # start workers (background)
alfred down                            # stop
alfred status                          # overview
alfred tui                             # live dashboard

alfred temporal worker                 # start workflow worker
alfred temporal run <workflow>         # trigger a workflow
alfred temporal schedule register <f>  # register cron schedules

alfred vault create <type> <name>      # create record
alfred vault list [type]               # list records
alfred process                         # batch-process inbox
alfred ingest <file>                   # import conversation export

Documentation

GitHub Wiki · Architecture · Semantic Layer · Kinetic Layer · Agent Backends

Curator · Janitor · Distiller · Surveyor · Vault Schema · CLI Commands

Contributing

Early-stage, actively developed. Issues, PRs, and ideas welcome.

License

MIT · Built by David Szabo-Stuban

Metadata

Release files for alfred-vault 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for alfred-vault 1.0.0
File Size Uploaded Provenance
alfred_vault-1.0.0.tar.gz 393.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for alfred-vault 1.0.0
File Interpreter ABI Platform
alfred_vault-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 892.2 kB

Release files / alfred_vault-1.0.0.tar.gz

Download URL alfred_vault-1.0.0.tar.gz
Size 393.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1b512d1e0214adf879d4663ccfa0bb1e79ad5d4d41a0e4c9ae0183b9150f46f9
BLAKE2b-256 checksum
How to use checksums
6b2ee8144bc8213a107da6b4a0adb4d4fd4bab3578d88d076a5d55d34da8a2a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / alfred_vault-1.0.0-py3-none-any.whl

Download URL alfred_vault-1.0.0-py3-none-any.whl
Size 498.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc85cadb89636d97635e944e0344c9aaad6d51a8428e4de8f8d51ee0b15e6816
BLAKE2b-256 checksum
How to use checksums
f96e4a55c23164c8d63474f640fa5c500ef43d2d10c7a60d1d3c3b20bff79546
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Security for alfred-vault 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page