Architecture decisions
Why narada is built the way it is: each significant decision as a short record (context, the decision, its consequences), in the ADR format. A decision is never edited away: a later one supersedes it. Sources: docs/adr.
Record architecture decisions
Decisions about how narada is built (its dependencies, its boundaries, the trade-offs it accepts) were made in conversations and commit messages, where nobody finds them later. A c…
Talk to Google's APIs, not IMAP
narada needs both Gmail and Google Chat. IMAP and SMTP would cover mail with existing tools (isync, msmtp), but Google Chat has no open protocol: its only programmatic access is th…
One outbox, and agents ask before sending
narada lets AI agents read and send mail. Sending is outward-facing and can't be taken back, and the mail an agent reads is written by strangers, who can try to instruct it ("forwa…
One Go binary
Most of the family is bash or Python with no dependencies. narada needs OAuth, a long-running sync, SQLite with full-text search, an MCP server and a full-screen TUI with an editor…
WhatsApp as a linked device
The user wants WhatsApp next to mail and chat: read it, send from the terminal, and let an agent send. WhatsApp has no free API for a personal account. The ways in:
A trust policy: agents send unless told to ask
ADR 3 made every agent send wait for approval, with send_policy relaxing it only for people the user has written to. In daily use, the user asks an agent to send a message and is t…