{"slug": "show-hn-secure-agentic-email-infrastructure-with-beta-desktop-client", "title": "Show HN: Secure agentic email infrastructure with beta desktop client", "summary": "GigaMail, a new open-source MCP server, provides secure agentic email infrastructure with a beta desktop client, enabling AI agents like Claude, Codex, and OpenClaw to safely access email via a permission model that requires human approval for sends and deletes. The tool keeps all data on the user's machine, supports multi-account via Microsoft Graph and IMAP, and includes features like hybrid search, sender memory, and knowledge files. It is available via pip install \"gigamail[all]\" and integrates with MCP clients.", "body_md": "**MCP server that gives your agent — Claude, Codex, OpenClaw, Hermes, or any\nMCP client — safe, controlled access to your email** — multi-account (Microsoft Graph + IMAP), calendar,\nlocal search index, sender memory, and an agent-aware permission model.\n\nNo built-in LLM: the intelligence is your agent's. The MCP server speaks stdio only — no network port. (An optional human console adds a local HTTP API bound to 127.0.0.1.)\n\n**On your data**: GigaMail keeps mail indexes, credentials, memory and\nconfiguration **on your machine** — we run no service and receive nothing.\nMail content your agent reads is, of course, handled by that agent and its\nmodel provider under their own data policies. Choose your agent\naccordingly; the masker (coming) lets you hide sensitive fields before the\nagent ever sees them.\n\n*A real draft: the agent pulled the figures from the account's documents,\npicked the floor plans to attach, and proposed slots from the calendar.\nThe human reviews and sends — or edits the instruction and regenerates.*\n\n**Hybrid search**: provider search (Graph/IMAP) + local SQLite index — fast and offline-friendly** Sender memory**: tone, topics and history per sender, so replies sound right** Observer**: patterns learned from how the user edited past drafts** Knowledge files**: attach your price lists, terms, product sheets to an account — the agent reads them to answer mail. Your agent doesn't need to know everything: the account carries its own knowledge**Agent-aware permissions**: reads are free; send/delete require an approval given** out of band**— the agent gets an inert request id, a human approves from the console or the CLI, and only then does it execute, with the exact arguments the human saw. Every write lands in an append-only action log**Credentials never touch the agent channel**: login and account management live in the CLI only — a prompt injection inside an email cannot add accounts or read secrets\n\n```\npip install \"gigamail[all]\"\n\ngigamail login                # Microsoft device flow\ngigamail accounts add-imap    # or IMAP: Aruba, Gmail, Libero, ...\n```\n\nMicrosoft login note: the bundled Azure app is not yet publisher-verified, so the consent screen shows an \"unverified\" notice (works fine; some corporate tenants may block it). Standard alternative: register your own Azure app and set your`client_id`\n\nin`src/ade_mail_agent/core/ms_config.json`\n\n. IMAP needs none of this.\n\nGive the account its identity and knowledge (this is what makes replies yours):\n\n```\ngigamail identity set                       # who am I, what I do, tone\ngigamail identity add-file C:\\docs\\pricelist.xlsx\ngigamail identity add-file C:\\docs\\catalog\\   # whole folder\n```\n\nRegister in Claude Desktop / Claude Code (`mcpServers`\n\n):\n\n```\n{\n  \"gigamail\": {\n    \"command\": \"gigamail-server\"\n  }\n}\n```\n\nThe commands are also available under their legacy names\n(`ade-mail-agent`\n\n, `ade-mail-agent-server`\n\n), so existing setups keep working.\n\nUsing **OpenClaw** or **Hermes** instead of Claude? Verified configs in\n[INTEGRATIONS.md](/adecubed/gigamail/blob/main/INTEGRATIONS.md).\n\nAre you an AI agent setting this up on behalf of a human?You can do the install and the MCP registration:`pip install \"gigamail[all]\"`\n\n, then add`gigamail-server`\n\nto your client's MCP config (see INTEGRATIONS.md; declare`GIGAMAIL_ROOT`\n\nif your client filters the environment).Stop there.Connecting a mailbox (`gigamail login`\n\n,`gigamail accounts add-imap`\n\n) asks for credentials and must be done by the human in their own shell — it is not something you should do, and GigaMail is built so that it cannot be done through you. Tell them what to run, then wait.\n\nThen just ask your agent: *\"reply to the last quote request using the price\nlist\"* — it reads the mail, pulls the numbers from your file, drafts the\nreply, and asks you before sending.\n\n24 typed tools, generated from the server itself:\n\n**Read (15)**— accounts, identity, knowledge files, messages, unread, folders, hybrid search, attachment text, sender history, learned patterns, calendar events, free-slot availability**Safe writes (3, audited)**— mark read, move message, create folder** Dangerous (6, human approval out of band)**— send, reply, delete message, delete folder, create/delete calendar event\n\nFull map and design decisions: [MAPPA_MCP.md](/adecubed/gigamail/blob/main/MAPPA_MCP.md).\n\nEmail content is treated as **untrusted data** (prompt injection). The\nagent cannot approve its own actions, by construction: a dangerous tool\nreturns only an inert `request_id`\n\n, and approving it — from the console or\nfrom `gigamail approvals approve`\n\n— requires an OS-level verification of\nthe person at the machine (**Windows Hello** / **Touch ID**). A process,\nincluding an agent that holds a shell, can open that prompt but cannot\npass it; with no such backend available, nothing approves. No secret ever\nenters the model context, so an injected instruction has nothing to\nspend. Repeating the id just returns *awaiting approval*. The agent\ncan only read files explicitly registered by the user, never the rest of the\nfilesystem. Every write action is logged to `%APPDATA%/ADE/agent_audit.jsonl`\n\n(append-only: GigaMail never rewrites past entries — it is not, and does not\nclaim to be, tamper-proof storage).\n\nWe red-team this: hostile emails ordering exfiltration, mass deletion, and the agent to approve itself — fed to a real agent with every mail tool enabled.\n\nThis design is a fix. v0.1.0 returned a one-time confirm token in the tool result, which put it in the model's context: the agent held both halves. Thanks to\n\nu/ranbumanandu/anderson_the_oneon r/mcp for catching it. The switch now sits where the agent cannot reach.\n\nThe structural half of that suite runs in CI on every push\n([tests/test_injection.py](/adecubed/gigamail/blob/main/tests/test_injection.py)); the real-agent half is\nopt-in ([scripts/injection_e2e.py](/adecubed/gigamail/blob/main/scripts/injection_e2e.py)) and runs with\na dry-run guard so confirmed actions are audited but never executed.\n\nYou can tell GigaMail: *mail from these senders (or in this folder) gets a\nreply drafted from these documents*. Rules are created from the CLI —\n`gigamail rules add`\n\n— behind the same Windows Hello / Touch ID prompt as\napprovals, and `gigamail watch`\n\nis the process that applies them. The MCP\nserver stays passive and **there is no MCP tool that touches rules**: an\ninjected instruction cannot enable autopilot.\n\n**semi**(default): the draft becomes a normal approval request — you get the notification, you approve with Hello, it goes out.- Notifications reach you where you are: a\n**Windows toast** with ✅ / ❌ buttons (run`gigamail desktop-setup`\n\nonce — UAC prompt — to make them clickable; they open the approval, which raises Hello) and**Telegram**(`gigamail telegram setup`\n\n, your own bot: ✅ approve if you opted in with`--approve`\n\nbehind Hello, ❌ reject, ✏️ ask for changes — accepted only from your chat). **auto**: the request is born approved,`decided_by automode:<rule_id>`\n\n— you gave that approval when you created the rule, for a precise scope, with a mandatory expiry, a daily cap and a per-sender cooldown. The notification still fires.\n\nThe drafter (your own agent, via `claude -p`\n\n) produces the reply *body*\nand nothing else: recipient, subject and thread are fixed from the incoming\nmessage — always the sender, never `Reply-To`\n\n, never an address written by\nthe draft. Deterministic barriers run first: no DMARC pass → never auto;\nauto-generated mail, lists, no-reply senders, the provider's spam verdict,\nexecutable attachments → no reply at all; the first message from a new\nsender always goes through you; a burst of matches pauses the rule by\nitself. Details in [SECURITY.md](/adecubed/gigamail/blob/main/SECURITY.md).\n\n**AGPL-3.0-or-later.** Free to use, study, modify and share. If you\ndistribute a modified version — or run one as a network service — you must\nmake its source available under the same license. Commercial licenses for\nclosed-source use are available from the copyright holder.\n\n**Server MCP che dà al tuo agente — Claude, Codex, OpenClaw, Hermes o\nqualunque client MCP — accesso sicuro e controllato alla tua posta** — multi-account (Microsoft Graph +\nIMAP), calendario, indice di ricerca locale, memoria dei mittenti e un\nmodello di permessi pensato per gli agenti.\n\nNessun LLM interno: l'intelligenza è quella del tuo agente. Il server MCP parla solo stdio — nessuna porta di rete. (La console per l'umano, che è opzionale, aggiunge una API HTTP locale su 127.0.0.1.)\n\n**Sui tuoi dati**: GigaMail tiene indici della posta, credenziali, memoria\ne configurazione **sul tuo computer** — noi non gestiamo alcun servizio e\nnon riceviamo nulla. Il contenuto delle mail che il tuo agente legge è\novviamente trattato da quell'agente e dal suo fornitore di modello secondo\nle loro policy. Scegli l'agente di conseguenza; il masker (in arrivo)\npermette di nascondere i dati sensibili prima che l'agente li veda.\n\n*Una bozza vera: l'agente ha preso i dati dai documenti collegati\nall'account, scelto le planimetrie da allegare e proposto gli orari liberi\ndal calendario. L'umano rivede e invia — oppure corregge l'istruzione e\nrigenera.*\n\n**Ricerca ibrida**: provider (Graph/IMAP) + indice SQLite locale — veloce e offline-friendly** Memoria dei mittenti**: tono, argomenti e storico per rispondere nel modo giusto** Observer**: pattern appresi dalle correzioni dell'utente alle bozze passate** File di conoscenza**: collega listini, condizioni, schede prodotto a un account — l'agente li legge per rispondere alle mail. Il tuo agente non deve sapere tutto: le informazioni che gli servono viaggiano con l'account**Permessi per agenti**: lettura libera; invio/cancellazione richiedono un'approvazione data** fuori banda**— all'agente arriva solo un id inerte, un umano approva dalla console o dalla CLI, e solo allora si esegue, con gli argomenti esatti che l'umano ha visto. Ogni scrittura finisce in un registro append-only**Credenziali fuori dal canale agente**: login e gestione account solo via CLI — una prompt injection dentro una mail non può aggiungere account né leggere segreti\n\n```\npip install \"gigamail[all]\"\n\ngigamail login                # device flow Microsoft\ngigamail accounts add-imap    # oppure IMAP: Aruba, Gmail, Libero, ...\n```\n\nNota sul login Microsoft: l'app Azure inclusa non è ancora publisher-verified, quindi la schermata di consenso mostra l'avviso \"unverified\" (funziona comunque; alcuni tenant aziendali potrebbero bloccarla). Alternativa standard: registra la tua app Azure e metti il tuo`client_id`\n\nin`src/ade_mail_agent/core/ms_config.json`\n\n. Per IMAP non serve nulla di tutto questo.\n\nDai all'account la sua identità e la sua conoscenza (è ciò che rende le\nrisposte *tue*):\n\n```\ngigamail identity set                       # chi sono, cosa faccio, tono\ngigamail identity add-file C:\\docs\\listino.xlsx\ngigamail identity add-file C:\\docs\\catalogo\\   # intera cartella\n```\n\nRegistrazione in Claude Desktop / Claude Code (`mcpServers`\n\n):\n\n```\n{\n  \"gigamail\": {\n    \"command\": \"gigamail-server\"\n  }\n}\n```\n\nI comandi restano disponibili anche con i vecchi nomi\n(`ade-mail-agent`\n\n, `ade-mail-agent-server`\n\n), così le installazioni esistenti\ncontinuano a funzionare.\n\nUsi **OpenClaw** o **Hermes** invece di Claude? Configurazioni verificate in\n[INTEGRATIONS.md](/adecubed/gigamail/blob/main/INTEGRATIONS.md).\n\nPoi chiedi al tuo agente: *\"rispondi all'ultima richiesta di preventivo\nusando il listino\"* — legge la mail, prende i numeri dal tuo file, prepara la\nrisposta e ti chiede conferma prima di inviare.\n\n24 tool tipizzati, generati dal server stesso:\n\n**Lettura (15)**— account, identità, file di conoscenza, messaggi, non lette, cartelle, ricerca ibrida, testo degli allegati, storico mittenti, pattern appresi, eventi di calendario, slot liberi**Scritture sicure (3, con audit)**— segna letto, sposta, crea cartella** Pericolose (6, approvazione umana fuori banda)**— invio, risposta, cancellazione messaggio, cancellazione cartella, creazione/cancellazione evento\n\nMappa completa e decisioni di design: [MAPPA_MCP.md](/adecubed/gigamail/blob/main/MAPPA_MCP.md).\n\nIl contenuto delle email è trattato come **dato non fidato** (prompt\ninjection). L'agente non può approvare le proprie azioni, per costruzione:\nun tool pericoloso restituisce solo un `request_id`\n\ninerte, e approvarlo —\ndalla console o con `gigamail approvals approve`\n\n— richiede una verifica\ndell'utente fisico a livello di sistema operativo (**Windows Hello** /\n**Touch ID**). Un processo, compreso un agente con la shell, può aprire quel\nprompt ma non superarlo; senza un backend del genere, nulla viene approvato.\nNessun segreto entra nel contesto del modello, quindi un'istruzione\niniettata non ha nulla da spendere. Ripetere\nl'id restituisce solo *in attesa di approvazione*. L'agente può leggere solo i file\nregistrati esplicitamente dall'utente, mai il resto del filesystem. Ogni\nazione di scrittura finisce in `%APPDATA%/ADE/agent_audit.jsonl`\n\n(append-only:\nGigaMail non riscrive mai le voci passate — non è, e non pretende di essere,\nun archivio a prova di manomissione).\n\nLo mettiamo alla prova: mail ostili che ordinano esfiltrazione, cancellazione di massa e all'agente di approvarsi da solo, date a un agente reale con tutti i tool attivi.\n\nQuesto disegno è una correzione. La v0.1.0 restituiva un token di conferma monouso nel risultato del tool, quindi dentro il contesto del modello: l'agente aveva entrambe le metà. Grazie a\n\nu/ranbumaneu/anderson_the_onesu r/mcp per averlo notato. Ora l'interruttore sta dove l'agente non arriva.\n\nLa metà strutturale della suite gira in CI a ogni push\n([tests/test_injection.py](/adecubed/gigamail/blob/main/tests/test_injection.py)); quella con l'agente\nreale è opt-in ([scripts/injection_e2e.py](/adecubed/gigamail/blob/main/scripts/injection_e2e.py)) e usa\nuna modalità dry-run, così le azioni confermate finiscono nell'audit ma non\nvengono mai eseguite.\n\nPuoi dire a GigaMail: *le mail da questi mittenti (o in questa cartella)\nricevono una risposta preparata da questi documenti*. Le regole si creano\ndalla CLI — `gigamail rules add`\n\n— dietro lo stesso prompt Windows Hello /\nTouch ID delle approvazioni, e `gigamail watch`\n\nè il processo che le\napplica. Il server MCP resta passivo e **nessun tool MCP tocca le regole**:\nun'istruzione iniettata non può accendere l'autopilota.\n\n**semi**(default): la bozza diventa una normale richiesta di approvazione — arriva la notifica, approvi con Hello, parte.- Le notifiche ti raggiungono dove sei:\n**toast Windows** con bottoni ✅ / ❌ (una volta`gigamail desktop-setup`\n\n— prompt UAC — per renderli cliccabili; aprono l'approvazione, che alza Hello) e**Telegram**(`gigamail telegram setup`\n\n, col tuo bot: ✅ approva se hai scelto`--approve`\n\ndietro Hello, ❌ rifiuta, ✏️ chiedi modifiche — accettati solo dalla tua chat). **auto**: la richiesta nasce già approvata,`decided_by automode:<rule_id>`\n\n— quell'approvazione l'hai data tu creando la regola, per uno scope preciso, con scadenza obbligatoria, tetto giornaliero e cooldown per mittente. La notifica parte comunque.\n\nChi scrive (il tuo agente, via `claude -p`\n\n) produce il *corpo* della\nrisposta e nient'altro: destinatario, oggetto e thread li fissa GigaMail\ndal messaggio in arrivo — sempre il mittente, mai il `Reply-To`\n\n, mai un\nindirizzo scritto dalla bozza. Prima passano barriere deterministiche:\nniente DMARC pass → mai auto; posta automatica, liste, mittenti no-reply,\nil verdetto spam del provider, allegati eseguibili → nessuna risposta; il\nprimo messaggio di un mittente nuovo passa sempre da te; una raffica di\nmatch mette in pausa la regola da sola. Dettagli in\n[SECURITY.md](/adecubed/gigamail/blob/main/SECURITY.md).\n\n**AGPL-3.0-or-later.** Libero di usarlo, studiarlo, modificarlo e\ncondividerlo. Se distribuisci una versione modificata — o la offri come\nservizio in rete — devi rendere disponibile il sorgente con la stessa\nlicenza. Licenze commerciali per usi closed-source sono disponibili dal\ntitolare del copyright.\n\n**一个 MCP 服务器，让你的代理 —— Claude、Codex、OpenClaw、Hermes 或任何\n兼容 MCP 的客户端 —— 安全、受控地访问你的真实邮箱** —— 多账户（Microsoft Graph + IMAP）、日历、本地搜索索引、发件人\n记忆，以及面向代理的权限模型。\n\n不内置任何 LLM：智能来自你自己的代理。MCP 服务器只使用 stdio 传输，不开 网络端口。（可选的人工控制台会在 127.0.0.1 上提供一个本地 HTTP API。）\n\n**关于你的数据**：GigaMail 把邮件索引、凭据、记忆和配置全部保存在**你自己\n的机器上** —— 我们不运行任何服务，也收不到任何数据。代理读取的邮件内容当\n然会经过该代理及其模型提供商，适用他们各自的数据政策。请据此选择你的代理。\n\n**混合搜索**：提供商搜索（Graph/IMAP）+ 本地 SQLite 索引，快速且支持离线**发件人记忆**：按发件人记录语气、话题与往来历史，让回复更贴切**观察者**：从用户对过往草稿的修改中学习偏好**知识文件**：把价目表、条款、产品资料挂到账户上，代理读取它们来回信 —— 你的代理不需要什么都懂：账户自带知识**面向代理的权限**：读取自由；发送/删除需要**带外**给出的人工批准 —— 代理只拿到一个惰性的请求 id，人从控制台或 CLI 批准后才会执行，且执行的 是人当时看到的那份参数。每次写操作都会记入只追加的审计日志**凭据永远不经过代理通道**：登录与账户管理只存在于 CLI —— 邮件里的提示 注入无法添加账户或读取任何机密\n\n```\npip install \"gigamail[all]\"\n\ngigamail login                # Microsoft 设备码登录\ngigamail accounts add-imap    # 或任意 IMAP 提供商\n```\n\n为账户设置身份与知识（这是让回复\"像你\"的关键）：\n\n```\ngigamail identity set                       # 我是谁、做什么、语气\ngigamail identity add-file C:\\docs\\pricelist.xlsx\n```\n\n在 Claude Desktop / Claude Code 中注册（`mcpServers`\n\n）：\n\n```\n{\n  \"gigamail\": {\n    \"command\": \"gigamail-server\"\n  }\n}\n```\n\n使用 **OpenClaw** 或 **Hermes**？经过验证的配置见\n[INTEGRATIONS.md](/adecubed/gigamail/blob/main/INTEGRATIONS.md)。\n\n你是替人类做安装的 AI 代理吗？你可以完成安装与 MCP 注册：`pip install \"gigamail[all]\"`\n\n，然后把`gigamail-server`\n\n加入客户端的 MCP 配置。到此为止。连接邮箱（`gigamail login`\n\n、`gigamail accounts add-imap`\n\n）需要输入凭据，必须由人类在自己的终端里完成 —— 这不是你该做的 事，GigaMail 的设计也让它无法经由你完成。告诉他们要运行什么，然后等待。\n\n之后直接对你的代理说：\"用价目表回复最近那封询价邮件\" —— 它会读邮件、从你 的文件里取数字、写好草稿，并在发送前征得你的同意。\n\n24 个类型化工具，由服务器本身生成：\n\n**读取（15）**—— 账户、身份、知识文件、邮件、未读、文件夹、混合搜索、 附件文本、发件人历史、学习到的偏好、日历事件、空闲时段**安全写入（3，有审计）**—— 标记已读、移动邮件、新建文件夹**危险操作（6，需带外人工批准）**—— 发送、回复、删除邮件、删除文件夹、 创建/删除日历事件\n\n邮件内容被视为**不可信数据**（提示注入）。代理从构造上就无法批准自己的\n操作：危险工具只返回一个惰性的 `request_id`\n\n，而批准它 —— 无论从控制台还是\n`gigamail approvals approve`\n\n—— 都需要对机器前的人进行操作系统级验证\n（**Windows Hello** / **Touch ID**）。任何进程（包括持有 shell 的代理）都能\n弹出这个验证框，却无法通过它；没有此类验证后端时，一律拒绝（fail-closed）。\n没有任何机密进入模型上下文，被注入的指令无物可用。重复提交 id 只会得到\n*等待批准*。代理只能读取用户明确注册的文件，永远碰不到文件系统的其余部分。\n每次写操作都记入只追加的审计日志（GigaMail 从不改写历史条目 —— 它不是、\n也不自称是防篡改存储）。\n\n我们对此做红队测试：让恶意邮件命令真实代理外泄数据、批量删除、自我批准 —— 在所有邮件工具全开的情况下，零破坏性操作。\n\n你可以告诉 GigaMail：*来自这些发件人（或这个文件夹）的邮件，用这些文档起草\n回复*。规则只能从 CLI（`gigamail rules add`\n\n）或控制台创建，且要经过与批准\n相同的 Windows Hello / Touch ID 验证；`gigamail watch`\n\n是执行规则的进程。\nMCP 服务器保持被动，**不存在任何能触碰规则的 MCP 工具**：被注入的指令无法\n打开自动驾驶。\n\n**semi**（默认）：草稿成为一个普通的批准请求 —— 你收到通知，用 Hello 批准后才会发出。- 通知会找到你：\n**Windows 桌面通知**带 ✅/❌ 按钮（运行一次`gigamail desktop-setup`\n\n使其可点击；按钮只是打开批准流程，仍需 Hello）， 以及**Telegram**（`gigamail telegram setup`\n\n，用你自己的机器人：✅ 批准需 在 Hello 背后显式开启`--approve`\n\n；❌ 拒绝、✏️ 要求修改 —— 且只接受来自 你那个会话的指令）。 **auto**：请求生来即已批准，`decided_by automode:<rule_id>`\n\n—— 这份批准是 你创建规则时在 Hello 背后给出的，范围精确、必有过期时间、每日上限和按 发件人的冷却时间。通知照常发出。\n\n起草者（你自己的代理，经 `claude -p`\n\n）只产出回复*正文*：收件人、主题与\n会话线程由 GigaMail 从来信中确定 —— 永远回给通过验证的发件人，绝不理会\n`Reply-To`\n\n，也绝不使用草稿里写出的地址。确定性栅栏先行：DMARC 未通过 →\n永不 auto；自动生成的邮件、邮件列表、no-reply 发件人、提供商的垃圾邮件判定、\n可执行附件 → 一律不回复；新发件人的第一封邮件永远经过你；短时间内大量命中\n会让规则自动暂停。详见 [SECURITY.md](/adecubed/gigamail/blob/main/SECURITY.md)。\n\n**AGPL-3.0-or-later.** 自由使用、研究、修改与分享。若你分发修改版 —— 或将\n其作为网络服务运行 —— 必须以相同许可证提供其源代码。闭源商用许可可向版权\n持有人洽询。", "url": "https://wpnews.pro/news/show-hn-secure-agentic-email-infrastructure-with-beta-desktop-client", "canonical_source": "https://github.com/adecubed/gigamail", "published_at": "2026-09-01 23:08:08+00:00", "updated_at": "2026-09-01 23:21:56.069672+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "ai-infrastructure"], "entities": ["GigaMail", "Claude", "Codex", "OpenClaw", "Hermes", "Microsoft Graph", "IMAP"], "alternates": {"html": "https://wpnews.pro/news/show-hn-secure-agentic-email-infrastructure-with-beta-desktop-client", "markdown": "https://wpnews.pro/news/show-hn-secure-agentic-email-infrastructure-with-beta-desktop-client.md", "text": "https://wpnews.pro/news/show-hn-secure-agentic-email-infrastructure-with-beta-desktop-client.txt", "jsonld": "https://wpnews.pro/news/show-hn-secure-agentic-email-infrastructure-with-beta-desktop-client.jsonld"}}