Iarsma
Webmail where agents are colleagues, not chaos.
A self-hosted, JMAP-native mail client built so humans and AI agents can work the same inbox as peers — with capability scoping, dry-run evaluation, and a tamper-evident audit log.
View on GitHub → Read the brief
iarsma — Irish for relic, durable artifact. Pronounced roughly "EER-smuh".
What it is
Iarsma is a webmail client for people who run their own mail server (Stalwart, primarily) and want their inbox to be programmable without giving up control. The shell is TypeScript + React + Tauri 2; the security-critical pieces are Rust compiled to WASM components. It speaks JMAP directly — no IMAP shim, no server-side rendering tier — and exposes the same capabilities to humans, scripts, and agents through a single typed surface.
Core ideas
- Agents as peers Every action a person can take is the same capability an agent calls. No second-class scripting layer. No "AI sidebar" bolted to a UI it can't see.
- Capability scoping Agents are issued narrow scopes — read this folder, draft (don't send) replies, label messages — enforced at the WASM-component boundary. The default is least-privilege.
- Dry-run by default Any mutating capability can be evaluated as a preview first. You see exactly what would change before it commits. Agents can plan; you approve.
- Tamper-evident audit log Every committed action is hashed into a chain (SHA-384, post-quantum-conservative). You can prove what an agent did and when, locally, without trusting a third party.
- JMAP-native Built on RFC 8620/8621. Real-time push, batched reads, server-side search — no protocol translation tax.
- Self-hosted, single bundle Ships as a static-site zip. Drop it next to your Stalwart deployment, point a reverse proxy at it, done.
Principles
Open by default. Accessible by default. Local-first. The agent surface is not a feature, it is the surface. Every decision in the brief has a "why" line — if you can't explain why, you can't ship it.
Status
Alpha · in development
The architecture is in. The auth flow, MCP server, and CI gating are scaffolded. The JMAP client component, action log, and memory backend are the next milestones. If you want to follow along — or push back on a decision — the decision log is the place.
License
Source-available, free to self-host. See the repo for the current license terms.