Skip to main content

Personal agentic infrastructure. Self-hosted. Always on.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

alfred_vault-1.0.0.tar.gz (393.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

alfred_vault-1.0.0-py3-none-any.whl (498.4 kB view details)

Uploaded Python 3

File details

Details for the file alfred_vault-1.0.0.tar.gz.

File metadata

  • Download URL: alfred_vault-1.0.0.tar.gz
  • Upload date:
  • Size: 393.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for alfred_vault-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1b512d1e0214adf879d4663ccfa0bb1e79ad5d4d41a0e4c9ae0183b9150f46f9
MD5 7020687f573a90a18835a61d624c73ae
BLAKE2b-256 6b2ee8144bc8213a107da6b4a0adb4d4fd4bab3578d88d076a5d55d34da8a2a6

See more details on using hashes here.

File details

Details for the file alfred_vault-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: alfred_vault-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 498.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for alfred_vault-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bc85cadb89636d97635e944e0344c9aaad6d51a8428e4de8f8d51ee0b15e6816
MD5 64f9d9f039896dee9b6b3e7a2d92b0db
BLAKE2b-256 f96e4a55c23164c8d63474f640fa5c500ef43d2d10c7a60d1d3c3b20bff79546

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page