sam-4screen-desktop 2026-10-13:10:51:28

This commit is contained in:
2026-10-13 10:51:28 +11:00
parent 4f66700a14
commit 294050ba7c
3 changed files with 127 additions and 1 deletions

View File

@@ -212,6 +212,7 @@
},
"active": "7066c9273c6fb936",
"lastOpenFiles": [
"010 inbox/Email Agent — Family Inbox Triage.md",
"100 inbox/Local LLM Infrastructure & Qwen2.5 Deployment.md",
"010 inbox/Email & DNS Setup — Domains, Mailboxes & Records.md",
"300 areas/360 Dev-Ops Network Computers/Email & DNS Setup — Domains, Mailboxes & Records.md",
@@ -239,7 +240,6 @@
"300 areas/395 AI Tools to try/Alibaba Code Review AI Tool.md",
"Clippings/alibabaopen-code-review Secure, fast, efficient, battle-tested at Alibaba's scale. Hybrid architecture code review tool deterministic pipelines + LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, S.md",
"300 areas/395 AI Tools to try/Tools to try with AI.md",
"200 projects/260 Ideas to Build Create Make/Artemis on GrapheneOS Pixel Mobile.md",
"010 inbox/_WATCHER",
"300 areas/355 AI Research and Techniques",
"300 areas/355 Ai Research and Techniques",

View File

@@ -0,0 +1,123 @@
---
type: note
proposed_folder: 200 projects/Tools Software WebUI
proposed_toc: "100 Table of Contents/Projects.md → Tools & Software"
proposed_tags:
- tool
- project
- email
- family
- architecture
- go
- inbox
- triage
- gmail
- htmx
confidence: 0.82
approved: false
proposed_for: ad82cc944024
created: "2026-10-13 10:45"
tags:
- project
- email
- gmail
- go
- htmx
- ai
aliases:
- Email Agent
- Family Inbox Triage
skills:
- Go backend development
- HTMX server-rendered UI
- IMAP and SMTP integration
- LLM classification (JEV) and drafting (OmniRoute)
- SQLite data modelling
- Docker and Caddy deployment
tools:
- Go
- HTMX
- SQLite
- Gmail IMAP/SMTP
- JEV (TypeSafe System One)
- OmniRoute
- Apprise
- Docker
- Caddy
---
# [[Email Agent — Family Inbox Triage]]
## What is this project?
One page that clears the family inbox. All family mail lands in a single Gmail
account, because PurelyMail forwards every domain address there. This app reads
that mail, sorts it into categories, recommends what to do, and lets Sam act on
whole groups at once.
The goal is simple: Sam opens one page, spends a few minutes, and knows that
nothing important was missed.
## What it does
- **Reads Gmail** over IMAP with an app password. It forces IPv4, because IPv6
to Gmail is broken from the server.
- **Classifies every message** with JEV (a TypeSafe System One model). Each mail
gets a category, an importance, a suggested action, and a confidence.
- **Shows a triage list** grouped by category, with the recommended action on
every row and a bulk select.
- **Acts in bulk**: delete, move, or mark. Deletes are recoverable — the app
moves mail to a Delete label, never hard-deletes.
- **Drafts replies** with an LLM through OmniRoute, from a template or a rule.
Sam edits the draft, then sends. It sends as the address the mail arrived at,
and there is no auto-send.
- **Spotlights unsubscribe links** and keeps an ignore list. It never follows a
link by itself.
- **Has a rules editor** — plain text, saved and versioned. The classifier obeys
the rules.
- **Sends a daily summary** by email through Apprise.
- **Answers the Hub**: a read-only question like "anything important in my
inbox?" returns a short answer.
## Why it matters (what it shows)
This is an end-to-end private AI tool, built and run in the home lab. It shows a
full path from an idea to a deployed service: a Go backend with no heavyweight
framework, an HTMX interface with no build step, a small SQLite store, real
mail-server protocols (IMAP and SMTP with an app password), two different model
paths (JEV for typed judgement, OmniRoute for text), and a strict "the human
confirms every action" design.
The design keeps the risky actions safe: no auto-send, no auto-delete, every
action logged, and deletes recoverable.
## Architecture
```mermaid
flowchart LR
SAM["Sam<br/>phone or desktop"] --> CADDY["Caddy on .35"]
CADDY --> UI["HTMX dashboard<br/>:8790"]
UI --> DB[("SQLite")]
UI --> GMAIL["Gmail<br/>IMAP + SMTP, IPv4"]
UI --> JEV["JEV<br/>classify"]
UI --> OMNI["OmniRoute<br/>draft reply"]
UI --> APPRISE["Apprise<br/>summary email"]
HUB["Central AI Hub :8788"] --> API["Hub API<br/>/ask /capabilities"]
API --> DB
N8N["n8n schedule"] --> JOBS["CLI jobs"]
JOBS --> DB
```
## Where it lives
- **Code**: Gitea repo `sam/email_agent`.
- **Live**: `https://mail.lab.audasmedia.com.au` (container on `.13`, port 8790).
- **Interactive map**: https://maps.lab.audasmedia.com.au/email_agent/docs/
- **AI context**: Outline collection `Email Agent`.
- **Tasks**: Vikunja project `Email Agent`.
## Status
Built and deployed. Phases 1 to 7 of the build spec are done and running. The
Phase 8 documentation pass wrote this note, the Gitea README and docs, the
Outline collection, the Vikunja board, and the architecture map.

View File

@@ -20059,3 +20059,6 @@ What the watcher did, newest last.
### 2026-10-11 16:50:50
- **filed** `Email & DNS Setup — Domains, Mailboxes & Records.md` → `300 areas/360 Dev-Ops Network Computers/Email & DNS Setup — Domains, Mailboxes & Records.md` (type area)
### 2026-10-13 10:44:03
- **proposed** `Email Agent — Family Inbox Triage.md` → `200 projects/Tools Software WebUI` (confidence 0.82)