<div align="center">
  <img src="images/korax.png" alt="Korax" width="160"/>

  # Korax

  **PGP-First Email. Private by Default.**

  [![License: PolyForm Noncommercial](https://img.shields.io/badge/license-PolyForm%20Noncommercial-blue)](LICENSE)
  [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Android%20%7C%20iOS-lightgrey)]()
  [![Status](https://img.shields.io/badge/status-Beta-orange)]()

</div>

---

Korax is an email client built around a single principle: **encryption should be the default, not the exception.**

Most clients bolt PGP on as an afterthought — a plugin, a hidden setting, a third-party extension. Korax is designed from the ground up so that signing, encryption, and key management are a seamless part of your everyday workflow. Your mail stays between you and the people you write to.

---

## Features

- **PGP encryption and signing — native, not a plugin.** Compose encrypted mail as naturally as plain text.
- **TOFU trust model.** "Trust On First Use" with visual indicators: see at a glance whether a contact's key is known, trusted, or changed.
- **No tracking pixels.** Remote images are blocked by default. Autoload only for contacts whose public key you have saved.
- **Local-first.** All messages cached in SQLite on your device. Instant load, works offline, nothing sent to any cloud.
- **Multi-language.** English, German, Spanish, Finnish, Russian, Swedish.
- **Linux: always free, always fully unlocked.** No paywall, no nag screens. Honor system.

---

## Download

### Linux (AppImage)

The Linux release is a self-contained AppImage — no installation required.

1. Download `Korax-x86_64.AppImage` from the [Releases](../../releases) page.
2. Make it executable:
   ```bash
   chmod +x Korax-x86_64.AppImage
   ```
3. Run:
   ```bash
   ./Korax-x86_64.AppImage
   ```

### macOS · Android · iOS

Coming soon.

---

## Free vs Pro

| Feature | Free | Pro |
|---|:---:|:---:|
| Send & receive email | ✓ | ✓ |
| IMAP accounts | Max 3 | Unlimited |
| Basic PGP encryption / decryption | ✓ | ✓ |
| Import PGP identity | ✓ (max 1) | ✓ (unlimited) |
| Generate PGP keypair | — | ✓ |
| Keyserver auto-lookup (WKD) | — | ✓ |
| Custom themes / swipe actions | — | ✓ |
| **Linux** | **Always Pro** | **Always Pro** |

Pro is a one-time purchase. All Pro features are free during the current beta period.

---

## Under the Hood

### Architecture

```
Flutter UI (Dart)
      │
flutter_rust_bridge (FFI)
      │
   mailcore (Rust)
   ├── IMAP client
   ├── SMTP client
   ├── SQLite storage
   ├── MIME parser
   └── DNS SRV discovery
```

The UI layer never blocks: all network and crypto operations run in Rust, communicated to Dart via an FFI bridge with zero copy overhead.

| Layer | Technology |
|---|---|
| UI | Flutter / Dart |
| Core engine | Rust (`mailcore`) |
| FFI bridge | flutter_rust_bridge |
| Cryptography | sequoia-openpgp |
| Local storage | SQLite |
| State management | Riverpod |

---

### mailcore — Open Source Engine

`mailcore` is the Rust library at the heart of Korax. It handles everything below the UI:

- **IMAP client** — RFC 3501 compliant, UIDVALIDITY-aware, uses `BODY.PEEK[]` to preserve `\Seen` flag integrity
- **SMTP client** — RFC 5321 with STARTTLS and SMTPS
- **SQLite storage layer** — local message cache, folder state, account credentials
- **MIME parser** — RFC 2045/2046 multipart handling
- **DNS SRV auto-discovery** — resolves `_imaps._tcp` and `_submission._tcp` before falling back to defaults; same mechanism used by Thunderbird, Evolution, and others

The source is published here for transparency and community audit. It is licensed under the [PolyForm Noncommercial License 1.0.0](LICENSE) — free to read, study, and use for noncommercial purposes. Commercial use requires a separate agreement.

**What stays proprietary:**

The PGP/Sequoia integration, advanced privacy features, and the Flutter UI (`korax/`) are not published. A second Rust library — `mailmore` — will eventually hold additional proprietary engine capabilities.

---

## Security

**Reporting vulnerabilities:** Do not open a public issue. Contact the maintainer directly at the address shown in the application's About screen.

**Key storage:** Private keys are never written to SQLite or disk in plaintext. On every platform, they are stored in the OS secure enclave (iOS Keychain, macOS Keychain, Android Keystore).

---

## About

Created by **Eugen Kaparulin**.  
Official binaries distributed by **K-Ops Oy**.

© Eugen Kaparulin. All rights reserved.  
`mailcore` is published under the [PolyForm Noncommercial License 1.0.0](LICENSE).  
All other parts of Korax are proprietary.
