A Flutter client for smol mail, a minimalist end-to-end encrypted mail protocol.
Find a file
2026-09-29 21:21:59 +03:00
android fix: name a prod flavor so the real app stays buildable 2026-09-29 21:21:59 +03:00
assets feat: adopt bug logo and scale onboarding header with screen width 2026-09-27 17:39:29 +03:00
integration_test test: patrol flows for fetch cancel, rotation and unchanged-key refresh 2026-09-29 21:00:42 +03:00
lib fix: copy the master at each layer so zeroization stays local 2026-09-29 21:00:42 +03:00
linux feat: add Linux desktop build support 2026-09-27 00:09:11 +03:00
native test: patrol flows for fetch cancel, rotation and unchanged-key refresh 2026-09-29 21:00:42 +03:00
screenshots v1 release 2024-02-17 20:32:01 +05:30
test test: patrol flows for fetch cancel, rotation and unchanged-key refresh 2026-09-29 21:00:42 +03:00
.gitignore feat: patrol on-device integration smoke test 2026-09-29 18:19:50 +03:00
.metadata feat: add Linux desktop build support 2026-09-27 00:09:11 +03:00
AI-DECLARATION.md feat: add AI-DECLARATION.md and MIT license badge 2026-09-29 20:35:15 +03:00
analysis_options.yaml feat: replace mail protocol with smolmail and rebuild the UI 2026-09-26 22:45:38 +03:00
devbox.json feat: patrol on-device integration smoke test 2026-09-29 18:19:50 +03:00
devbox.lock feat: patrol on-device integration smoke test 2026-09-29 18:19:50 +03:00
LICENSE.md docs: add copyright line for the smolmail-client derivative work 2026-09-26 22:51:35 +03:00
pubspec.lock feat: patrol on-device integration smoke test 2026-09-29 18:19:50 +03:00
pubspec.yaml test: patrol flows for fetch cancel, rotation and unchanged-key refresh 2026-09-29 21:00:42 +03:00
README.md docs: add license, Flutter, Mistral and fork badges to the README 2026-09-29 21:21:59 +03:00

kirakira

AI-DECLARATION: copilot License: MIT Powered by Mistral Flutter Forked from flash-mail

A mobile client for Smol Mail, a minimalist end-to-end encrypted mail protocol: one Ed25519 identity, five operations, sealed and signed messages over a Noise_NX transport. Sibling of the reference CLI client (https://smol.place) and the browser client (https://code.randogoth.com/randogoth/gsmol).

kirakira began as FlashMail, a Flutter UI template for a disposable-email app built on mail.tm. Its networking layer was replaced end to end with a from-scratch Smol Mail implementation (lib/smol/: crypto, Noise handshake, framing, client flows), and the UI was redesigned around a Material 3 theme — dark navy and mint green by default, with a matching light theme — built from a single ColorScheme and AppColors extension rather than hardcoded colors per screen.

What it does

  • Create or restore an identity from a 32-byte seed — that's the only secret.
  • Pin a server's key, register or recall an address, then fetch and send sealed mail.
  • Trust-on-first-use for server and contact keys, with rotation support and on-screen warnings for anything unverified.
  • Export/import inbox, sent mail, contacts and server pins as one shareable backup file — never the seed.

Layout

lib/smol/          the protocol: crypto, Noise handshake, framing, client flows
lib/presentation/  screens, widgets and theme (Riverpod + auto_route)
lib/data/          Riverpod providers
test/              protocol vectors, store tests, a live e2e round-trip

Run and verify

devbox run analyze
devbox run test
flutter run

test/e2e_test.dart runs a live round-trip against https://smol.place/smolmaild.py on 127.0.0.1:1961 and skips itself when nothing's listening there.

Notes and limits

  • No server push in v1 — fetch is manual.
  • The seed lives in app storage; a compromised device is a compromised identity.
  • Rotation isn't revocation — a stolen key can still rotate onward. Settings surfaces rotations for out-of-band verification rather than applying them silently.

License

MIT — see LICENSE.md.