godwit
Health Gecti
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 103 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Open-source, AI-native desktop email client for macOS, Windows and Linux. Your mail stays yours: data is masked locally before any model sees it.
![]()
Godwit
An open-source, AI-native email client you can extend.
AI helps with your mail. Your mail stays yours.
Download · Website · Changelog
https://github.com/user-attachments/assets/29ee980c-73a5-47f0-a736-b01828c22785
Godwit is a desktop email client for macOS, Windows and Linux. It works with any IMAP/SMTP account and ships with an AI assistant, Wit, that reads, summarizes, translates and drafts mail with the model you choose. Before anything goes to a cloud model, names, account numbers, phone numbers and keys are masked on your machine. Everything AI in it, the built-in features included, runs through the same extension points open to you: drop in a SKILL.md and a button appears.
The name comes from the bar-tailed godwit, which holds the record for the longest non-stop bird flight.
Features
- Mail: IMAP/SMTP accounts with sync, offline changes, conversations, and HTML compose with reply, forward, CC/BCC, drafts and recipients completed from your contacts. Setup is detected for Gmail, Outlook (sign in with Microsoft), iCloud, Yahoo, AOL, QQ Mail, 163/126 Mail, Tencent Exmail, Lark/Feishu and DingTalk Mail, hosted corporate mail by its MX records, and any other IMAP server. Local
.emlfiles can be imported into a local archive. - Views: questions that stay open in the sidebar, such as To handle, built from conditions and groups, across all your accounts. They never change the mail itself.
- Sign-in codes and links: codes and magic links in 14 languages are recognized as they arrive, with a banner to copy or open them and a list of recent ones in the tray.
- Organize: labels, set by the model or by hand and synced as IMAP keywords; local rules (when … if … then …) with condition groups; one-click unsubscribe (RFC 8058); and a Contacts page with unsubscribe, archive all and block per sender.
- Search: ⌘K finds mail, conversations, contacts and attachments.
- Wit: an agent that answers questions about your mail, reads attachments (PDF, Office, CSV) and drafts replies. It writes drafts and never sends. Anything that leaves your machine, such as an unsubscribe or an opened link, waits for your approval, which names where it goes.
- Privacy masking: text bound for a cloud model or translation service is checked on your machine, with a local recognition model, for keys, ID and financial numbers, codes, phone numbers, email addresses, names, addresses and accounts. Each kind is masked (replaced by a placeholder and put back only on your side), warned about, or blocked, and every request is in the masking log.
- Security: sender verification badges, display-name spoofing protection and AI fraud classification; remote images load through a privacy proxy.
- AI actions: summarize, translate, adjust tone and length, and quick replies, on a message, a selection or a draft. On macOS 26 and later, mail can also be translated on the Mac with the system's own translation, free and without a model (Settings › Intelligence › Features › Translate with › System translation).
- Your models: any OpenAI-compatible (Chat Completions or Responses) or Anthropic-compatible service, including local ones like Ollama and LM Studio. API keys stay in the system keychain.
- Extensions:
- Skills: a
SKILL.md(Agent Skills) in the data directory'sskills/folder becomes a Wit skill, or an action button withgodwit-action-*metadata. - Plugins: install from the plugin directory in Settings › Extensions, or write your own: TypeScript plugins with declared permissions add hooks, actions, cards and Wit tools. Types are in
sdk/godwit.d.ts, published as@godwit/sdk(npm i -D @godwit/sdk). Plugins can read mail and write drafts; none can send. - Native plugins: a shared library behind a small C ABI (
sdk/native/godwit_plugin.h), for what a sandbox cannot do. It runs with all of Godwit's rights, so Godwit shows the risk and asks you to allow that exact file; a changed file needs your permission again. - MCP servers: give Wit external tools. Each server is approved once, and each write call every time.
- Skills: a
- For other agents:
godwit mcpis an MCP server that lets Claude, Claude Code, Codex, Cursor and any other MCP app read your mail and create drafts. Sending through MCP is your setting: by default each send waits for you to confirm it, and you can turn it off or let it send directly. Turn on the Local API under Settings › Intelligence › AI apps and copy the client configuration from there. - Updates itself from dl.godwit.email (the Microsoft Store version is updated by the Store).
Install
Download the latest build from godwit.email:
macOS: the
.dmg, or with Homebrew:brew install godwit-email/tap/godwitWindows: the installer, which installs for the current user without admin rights, or Godwit on the Microsoft Store, which the Store updates.
Linux: the
.deb, or install for the current user (no root) with:curl -fsSL https://dl.godwit.email/install.sh | sh
Verify a download
Every release is built from its tag by release.yml, which signs build provenance for each file it uploads. Check that a download was built here, and from which commit, with the GitHub CLI:
gh attestation verify godwit-1.30.0-arm64.dmg --repo godwit-email/godwit
For the Microsoft Store version, verify Godwit.exe in its install folder (Get-AppxPackage BaranWang.Godwit shows where). The app also records its commit: go version -m on the executable prints it as vcs.revision.
Command line
godwit [--data-dir DIR] the desktop app
godwit --headless [--data-dir DIR] serve the Local API without a window
godwit call [--data-dir DIR] METHOD [JSON_ARGS_ARRAY] call the running Godwit once
godwit mcp [--data-dir DIR] an MCP server on stdio for agents
godwit dev-sync-db replace the dev database from production (development builds only)
godwit --version
Development
Godwit is written in Go on MyGo: the main window is native UI, while compose, the Wit page and the message reader are React pages in web/. mise installs the pinned Go and Bun:
mise install
mise run generate # install web dependencies and generate Go/TypeScript code before Go tests
mise run dev # run the app, reloading on changes
mise run dev:sync-db # replace the dev database from production; stop both apps first
go test ./... # Go tests
mise run web:check
mise run build # package for this machine into dist/
Native and web UI translations share internal/i18n/en.json and zh-Hans.json, using ICU MessageFormat. Edit these catalogs, run mise run generate to update the Go and TypeScript accessors, and validate with go tool mygo i18n check. MyGo's generated Go/TypeScript accessors and client are ignored by Git; do not edit them directly. Development, packaging and mise run web:check / web:test generate them automatically; run mise run generate before using Go commands directly.
Development builds (mygo dev and go run) use a separate Godwit-dev data
directory beside production's Godwit directory (on Windows, ~/.godwit-dev
beside ~/.godwit). GUI, headless, call and mcp all use the matching default;
an explicit --data-dir still takes precedence. Release builds keep their existing
directory. MYGO_ENV=production selects production defaults for an unpackaged binary.
To start dev with production mail and settings, quit both instances and runmise run dev:sync-db, then mise run dev. This overwrites the dev database.
It copies committed WAL data, validates and migrates only the copy, and leaves
the production database untouched. It refuses to run while either directory is
owned by a running instance. A database already upgraded by an older dev run is
not downgraded by this command.
The sync copies only the database. Dev gets a fresh keychain identity, so enter
account credentials and model/plugin/MCP secrets again in dev. Cached attachments
are downloaded again; draft attachments and outbox files are not copied, and their
file references are cleared to avoid using production or stale dev files. Re-add
draft attachments before sending from dev. Skills and plugin files are not
copied. After you sign in, dev can sync and change the same remote mailbox.
Layout:
| Path | |
|---|---|
core/ |
the mail engine and service: sync, storage, send, AI, plugins, skills |
app/ |
the native UI |
web/, webui/ |
the web pages and their Go side |
cmd/godwit/ |
the executable: GUI, headless, call, mcp |
mcpserver/, rpc/ |
the MCP server and the Local API |
sdk/ |
plugin types |
docs/ |
design specs and plans |
site/ |
godwit.email, a Cloudflare Worker (mise run site:dev) |
The homepage's demo window and main download button share browser-platform detection. macOS shows traffic lights; Windows shows the app caption and right-hand window controls; Linux also uses right-hand controls. The window controls are decorative, not actions that close or resize the website.
Client CI always runs a lightweight changes check, but skips the desktop matrix and embedded-web checks when all changed paths are under site/. The separate Site workflow checks the website and deploys it from main. Shared configuration changes, such as mise.toml, and mixed site/client changes still run client CI.
Commit messages and PR titles follow Conventional Commits; release-please turns them into versions and the changelog. Merging its release PR builds every platform and uploads the installers and updates to the R2 bucket behind dl.godwit.email; each platform's update manifest goes up last, and installed apps update from it as soon as it is there.
Commits whose changed files are all under site/ are excluded from the application's version calculation and changelog by release-please's exclude-paths. Mixed changes, including a site change together with the root README.md, still participate in application releases.
License
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi