# Migaman: a CLI email alias manager for Migadu users

**URL:** <https://discourse.haskell.org/t/migaman-a-cli-email-alias-manager-for-migadu-users/11690>\
**Category:** Show and Tell\
**Created:** [March 22, 2025, 8:54pm UTC](https://discourse.haskell.org/t/migaman-a-cli-email-alias-manager-for-migadu-users/11690 "2025-03-22T20:54:15Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ozkutuk](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/ozkutuk/32/3992_2.png) [@ozkutuk](https://discourse.haskell.org/u/ozkutuk)\
**Post date:** [March 22, 2025, 8:54pm UTC](https://discourse.haskell.org/t/migaman-a-cli-email-alias-manager-for-migadu-users/11690/1 "2025-03-22T20:54:15Z")

</div>

> **[GitHub - ozkutuk/migaman: migaman is a CLI email alias manager for Migadu...](https://github.com/ozkutuk/migaman)**
>
> migaman is a CLI email alias manager for Migadu users

> Migaman is a CLI email alias manager for [Migadu](https://www.migadu.com/) users. It allows you to generate and manage per-service email addresses with ease, allowing you to protect your primary email address from spam without sacrificing convenience.

I have been sitting on this for some time now as it lacked polish in some areas, but it has been serving my needs for quite some time. Therefore, I have decided to pull the trigger and release the first version to public.

There is not much interesting going on on the technical side. It is essentially a CLI interface to a JSON API that uses SQLite to manage its internal state. Some details on the tech stack:

- **Persistence:** `beam` (together with `beam-sqlite`)
- **Migrations:** `migrant`
- **HTTP:** `req`
- **CLI:** `optparse-applicative`

Aside from the alias manager itself, the project also introduces the `migadu` library which wraps the JSON API and exposes it as an idiomatic Haskell interface. The library component is not feature-complete since I have only implemented what was necessary for migaman, but I would be happy extend it if someone needs access to some yet-unimplemented feature.
