No description
  • Scheme 62.3%
  • Kotlin 17.7%
  • Rust 9.8%
  • Shell 8.5%
  • Makefile 1.5%
  • Other 0.2%
Find a file
ober 2c7c4e556d
All checks were successful
required-ci / required (push) Successful in 11m6s
Merge pull request #27
2026-09-23 18:04:09 -04:00
.forgejo ci: vendor jSQLite clone + sync jpkg version to 0.2.0 2026-08-05 16:05:43 -06:00
bin Add Jerboa JMAP implementation 2026-08-01 16:35:01 -06:00
dist/release-evidence Add Jerboa JMAP implementation 2026-08-01 16:35:01 -06:00
docs fix: make security gates CI portable 2026-08-10 16:15:59 -06:00
examples Configure ingest poll interval 2026-08-04 20:13:22 -06:00
lib/jjmap fix: bound JMAP pre-auth connections 2026-09-23 15:43:57 -06:00
rust fix: bound JMAP pre-auth connections 2026-09-23 15:43:57 -06:00
support fix: bound JMAP pre-auth connections 2026-09-23 15:43:57 -06:00
tests fix: bound JMAP pre-auth connections 2026-09-23 15:43:57 -06:00
.gitignore fix: close kimi security acceptance gaps 2026-08-10 16:02:29 -06:00
.gitsafeignore Set up Forgejo CI/CD policy 2026-08-03 12:50:50 -06:00
.jerbuild Wire native FFI into binary and admin crypto 2026-08-04 17:54:41 -06:00
AGENTS.md docs(agents): add checkout hygiene policy (work dirs under ~/work, cleanup when done) 2026-09-12 19:10:36 -06:00
apk-kimi.md docs: add apk-kimi.md Android build-out plan, bump to 0.2.7 2026-08-11 14:56:27 -06:00
finish2-kimi3.md fix: make security gates CI portable 2026-08-10 16:15:59 -06:00
jjmapd fix: bound JMAP pre-auth connections 2026-09-23 15:43:57 -06:00
jpkg.sexp fix: bound JMAP pre-auth connections 2026-09-23 15:43:57 -06:00
Makefile feat: build out Android mail client 2026-08-11 17:09:19 -06:00
plan.md base 2026-07-31 14:44:02 -06:00
README.md Add planned config parsing and operator docs 2026-08-04 17:54:41 -06:00
SECURITY.md Add planned config parsing and operator docs 2026-08-04 17:54:41 -06:00
vendor-lock.env fix: close kimi security acceptance gaps 2026-08-10 16:02:29 -06:00
VERSION fix: bound JMAP pre-auth connections 2026-09-23 15:43:57 -06:00

jjmapd — Zero-knowledge JMAP email-fetch server

A JMAP (RFC 8620) email-fetch server that stores age-encrypted email blobs. Plaintext is never stored on disk. Decryption happens only on the client.

Quick Start

jjmapd serve --config examples/jjmap.json

Architecture

┌──────────┐  plaintext   ┌──────────┐  encrypted   ┌─────────┐
│  SMTP    │ ──────────→  │  jjmapd  │ ────────────→ │ SQLite  │
│  server  │  (maildir)   │  ingest  │  (age blobs)  │  + FS   │
└──────────┘              └──────────┘               └─────────┘
                                    │
                          JMAP/TLS  │  encrypted
                          ←─────────┘  (age blobs)
                                    │
                            ┌───────┴───────┐
                            │  Android APK  │
                            │  (decrypts    │
                            │   on device)  │
                            └───────────────┘

Build

make build        # Jerboa library build
make binary       # produce jjmapd binary
make native-build # Rust age library
make test         # run tests
make verify       # CI/pre-commit gate
make dist         # distribution build
make release-evidence

Security

See SECURITY.md. Cryptographic operations are pure Rust, no OpenSSL.

Operator Docs

  • docs/threat-model.md
  • docs/runbook.md
  • docs/protocol-coverage.md
  • docs/deployment-freebsd.md

License

Apache 2.0