Alfred Cazares
← Back to the shelf
Running Last touched June 12, 2026

Jarvis

A local, autonomous LLM agent that organizes files and triages email — built around a safety layer, not bolted onto one.

PythonLLM agentsGmail APIOAuthTkinter

The source for this one is not public. The write-up below covers what I built and why the repository is closed. Happy to walk through it in detail on a call.

A life-admin agent that runs on my own machine. It organizes downloads, classifies and labels email, tracks expenses, and maintains a dashboard, driven from a desktop GUI or the CLI.

The reason I built it was less about the automation and more about the governance question: what does it take to let a model take real, destructive actions on your actual files and inbox without it being a terrible idea?

What it does

File organization. Scans the Downloads folder, classifies files by extension and naming pattern with confidence scoring, detects duplicates via SHA-256 content hashing, and moves files into categorized subfolders.

Email management. Connects to Gmail over OAuth, classifies messages into Finance, Jobs, Kids, Home, Tech, Shopping, Promotions, Social, and Important, then applies matching Jarvis/* labels for filtering.

Built, not yet wired to the GUI: expense tracking from CSV with auto-categorization, a markdown dashboard with daily and weekly summaries, autonomous scheduling, classification learning from user corrections, and a supervisory agent for high-risk operations.

The part I actually care about

The architecture separates a planner, executor, reflector, and scheduler above a dedicated safety and governance layer — directory whitelisting, rate limits, and an audit logger — which every capability module sits beneath.

Concretely, that means:

  • No filesystem operation can touch a path outside the whitelist, enforced below the agent rather than in its prompt
  • The email safety matrix refuses to delete unread mail or anything from a known contact
  • Every action is written to an audit log before it happens, so there is always a record of what the agent did and why

Prompt-level guardrails are advisory. Anything that genuinely must not happen belongs in code the model cannot talk its way around, and that principle drove most of the design.

There is also a redaction layer that strips credentials and key-shaped strings out of anything before it reaches the model — with tests to prove it.