Skip to content

Github · GitHub Repository Radar

inlark inlark

📧✨ Beautiful email. For everyone.

Stars

97

Forks

4

Watchers: 97

Language

TypeScript

License: GNU Affero General Public License v3.0

Repository Radar Score

0 / 100

Growth

7d
+0
30d
+0
%
0.0%

Not enough metric snapshots yet to chart growth for this repository.

Score breakdown

—

Need help integrating this stack?

Our team builds with modern open-source stacks. Tell us what you are shipping.

Get a quote →

Inlark

Beautiful email. For everyone.

A fast, keyboard-first desktop mail client for the accounts you already own.
JMAP and IMAP, Linux, Windows and macOS. No hosted service, no subscription, no telemetry.

Download · Features · Connect an account · Build from source


Inlark's unified inbox, showing conversations from several accounts in one list, each marked with its account colour.

Why Inlark?

If you run your own mail server, or just have a few accounts at small providers, your choices are usually an email client that looks like it was designed for Windows XP, one that wants a monthly fee, or one that routes your mail through someone else's cloud. Inlark is the fourth option: a calm, modern client that talks straight to your server and then gets out of the way.

  • One inbox for every account. Personal, work and the side project you swear you'll finish all land in one timeline, each marked with its account. Replies go out from the address the message was sent to, so you stop accidentally emailing your landlord from your work address.
  • Your keyboard, first. J/K to move, E to archive, R to reply, / to search, and Ctrl K for everything else. Every action works with a mouse, too.
  • Undo for everything. Archive, trash, move, star or mark as spam, then press Z. It works even if another client changed the mailbox in between.
  • Search that goes all the way back. Searches run on your server across every folder and every year, narrowed by sender, recipient, subject, date or attachment.
  • Big mailboxes stay fast. A quarter of a million conversations in the unified inbox still scroll smoothly, because only the few dozen on screen are ever drawn.
  • Sending you can trust. Drafts survive crashes. If a send's response gets lost on the way back, Inlark marks the message unconfirmed and doesn't retry it on its own, so nobody gets your message twice.
  • Private by design. Inlark connects directly to your mail server. There's no Inlark account, no sync service and no analytics.
  • Dark and light, with equal care. Both themes get the same attention to detail, and rich HTML mail keeps the look its sender designed.
  • At home on your desktop. Native notifications, a tray icon with your unread count, and Inlark can be your default mailto: handler.
A conversation open in Inlark's reader, with reply, reply all and forward below the message. Inlark's command palette listing actions and folders, each with its keyboard shortcut.
A focused reader, without the clutter Ctrl K: every action, folder and account in a few keystrokes

Note

Inlark is an early preview. The everyday essentials work, but it's young. Keep your server's webmail bookmarked for now, just in case.

Install

Grab the latest build from the releases page:

Packaged builds check for updates in the background. When an update downloads successfully, Inlark installs it after you quit, so it never interrupts your work. If the automatic update fails, Inlark links to the download page for a manual install.

Platform Download
Windows Installer (x64)
macOS DMG or ZIP, for both Apple Silicon and Intel
Linux AppImage, .deb or .rpm (x64), or Nix

Nix and NixOS

Install from the flake:

nix profile install 'github:inlark/inlark#inlark'

Or enable the NixOS module in your flake configuration:

{
  inputs.inlark.url = "github:inlark/inlark";

  outputs = { nixpkgs, inlark, ... }: {
    nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        inlark.nixosModules.default
        { programs.inlark.enable = true; }
      ];
    };
  };
}

The package includes the desktop entry, icon and mailto: handler, for x86_64 and aarch64 Linux. These examples follow the latest code on the default branch.

To update a profile installation, run nix profile upgrade inlark. For NixOS, run nix flake update inlark from your system configuration directory, then sudo nixos-rebuild switch --flake .#my-host (replace my-host with your host name). Nix keeps the installed revision until you update it; removing the release tag does not enable automatic updates.

Connect an account

Open Settings → Accounts → Add account and type your email address. Inlark looks up what your domain publishes and shows you the protocol, servers, ports and security it found before it asks for a password. Set up manually is always there if you prefer.

  • JMAP is preferred when your server offers it. Inlark finds it through DNS SRV or /.well-known/jmap.
  • IMAP/SMTP settings come from your domain's autoconfig file or DNS SRV records. Only if your domain publishes nothing does Inlark ask Thunderbird's public settings directory, and then it sends just the domain.
  • Encryption is required. Inlark uses implicit TLS or required STARTTLS, always with certificate verification and never a plaintext fallback. Your password is never tried against a server you didn't choose.
  • Passwords go into your OS keyring when one is available. Without a keyring, you decide whether to remember a login on this device. If you do, the password is stored unencrypted in an owner-only file.

IMAP accounts build a local index in the background, newest Inbox mail first. Until it catches up, lists tell you that older mail may be missing, and search still runs on the server. If your server can't do an action safely, such as a move without MOVE or UIDPLUS, Inlark turns it off and tells you why rather than guessing.

Gmail and Microsoft sign-in (OAuth) aren't supported yet.

Build from source

You'll need Node 24 and pnpm 12.3.4.

pnpm install --frozen-lockfile
pnpm dev          # the desktop app
pnpm dev:web      # browser preview with sample mail, no real accounts

Add ?stress=1 to the browser preview's URL for five synthetic 50,000-message inboxes, or run pnpm dev -- --demo for a sample workspace in the desktop app. On NixOS, run nix develop path:. first. The shell provides a compatible Electron.

Checks, packaging and releases
pnpm check             # formatting, types, tests and a production build
pnpm test:stalwart     # real JMAP, IMAP and SMTP against a disposable Stalwart server (Podman or CONTAINER_RUNTIME=docker)
nix build path:.       # Nix package in ./result/bin/inlark
pnpm package:linux     # AppImage, .deb and .rpm in apps/desktop/release
pnpm test:deb          # Debian packaging smoke test (Podman)

The Nix build is pinned by flake.lock, pnpm-lock.yaml and the dependency hash in nix/package.nix. After changing dependencies, replace that hash with the one Nix reports.

To smoke-test the Nix package without opening a window:

INLARK_DATA_DIR="$(mktemp -d)" ./result/bin/inlark --smoke-test --ozone-platform=wayland

Normal app data lives in Electron's userData directory, usually ~/.config/Inlark.

How the repository is organised
Location What lives there
apps/desktop/src/main Network access, credentials, drafts and the send journal, discovery, IMAP indexing, native lifecycle
apps/desktop/src/preload The small, validated bridge between the app and the system
apps/desktop/src/renderer The React app: lists, reader, composer, preferences
apps/marketing The Astro landing page, deployed as static Cloudflare Workers assets
packages/core Platform-independent types, validation, search and merge logic
packages/jmap The JMAP provider
packages/imap The IMAP/SMTP provider
packages/ui Shared components and the Tailwind theme
tests Domain, protocol, storage and real-server tests

Built with Electron, React, TypeScript, Tailwind CSS, Base UI, TanStack and Turborepo.

What's not here (yet)

Inlark tries to make everyday email excellent before adding more features. AI, snooze, scheduled sending, rules, calendars, a full address book and mobile apps are all deliberately out of scope for now. If you need your email client to also be your calendar, your CRM and your life coach, this isn't that client. Yet.

Credits

Inlark stands on the shoulders of two products that showed how good software can feel:

  • Linear, for its restraint, clear hierarchy and obsessive attention to detail, the bar for Inlark's visual design.
  • Superhuman, for proving email can be fast, focused and driven from the keyboard, the bar for Inlark's workflows.

Inlark isn't affiliated with either. We just admire their work.

License

Copyright © 2026 Paul Koeck. Inlark is free software under the GNU Affero General Public License v3 (AGPL-3.0-only). The bundled Inter font is under the SIL Open Font License; the outlined Hanken Grotesk wordmark is also under the SIL Open Font License.

Created: Sep 25, 2026

Last push: Oct 2, 2026

Default branch: main

Latest release: v0.2.0

Languages

Share of the codebase by language, based on repository metadata from the host.

  • TypeScript 84.2%
  • CSS 9.1%
  • Astro 5.4%
  • JavaScript 0.7%
  • Nix 0.3%
  • Python 0.1%
  • Shell 0.1%
  • HTML 0.1%

Repository Radar analysis

Deterministic insights derived from public metadata and our observations — not personal testing or reviews.

Why this repository is interesting

  • Maintained recently (last push 1 week ago).

Who should use it

  • Developers working primarily with TypeScript
  • Teams exploring AI tooling, agents, or ML infrastructure
  • Early adopters evaluating emerging projects

Potential use cases

  • Reference or evaluate TypeScript open-source approaches in this domain
  • Prototype AI/agent workflows or study reference architectures

Strengths

  • Recent repository activity
  • README present in our index
  • Declared license: GNU Affero General Public License v3.0

Limitations / considerations

  • Insights are derived from public metadata and our observations — not a substitute for code review

What to watch

  • Radar Score is modest — dig into activity and docs before committing
  • Young repository — popularity and maintenance patterns can change quickly

Strong signals: Active maintenance

Source: GitHub (public metadata) + Repository Radar analysis. We do not claim ownership of third-party repositories.

Ready to ship something that compounds?

Share your roadmap. We’ll come back with scope options, timeline ranges, and who from Shriram IT Ventures should be in the room.

Popular with product teams