Sessy is a free, open source email & communication project written in Ruby and released under a custom open-source licence. It has 929 GitHub stars, 44 forks and 7 open issues, and was last pushed 2 days ago. On this registry it ranks #10 of 13 tracked projects in Email & Communication, with 5 head-to-head comparisons available. It gained 5 stars over the last 6 tracked days.

What is Sessy?

What it is

Sessy is an open-source email observability tool for Amazon SES, built in Ruby on Rails by Marc Köhlbrugge and distributed under the O'Saasy License. It lives in the AWS ecosystem: you keep sending through raw SES, and Sessy supplies the interface that shows what happened to each message after it left your application. The repository carries the topics amazon-ses, email, rails, and ruby, and the project's own homepage is sessy.do.

The concrete problem is visibility. Amazon SES is cost-effective, reliable, and delivers well, but it is difficult to see what is actually happening with your email. That gap pushes teams toward third-party email services that the README describes as overpriced and often little more than glorified SES wrappers with a nicer UI. Sessy aims to close that gap without the wrapper: keep raw SES as the sending path and still get a readable view of deliveries, bounces, complaints, opens, clicks, and more.

Key capabilities

  • Delivery, bounce, complaint, open, and click tracking for messages sent through Amazon SES.
  • Per-message delivery timeline inspection, including bounce diagnostics.
  • Aggregate statistics across your email data.
  • An MCP server exposed at /mcp so AI coding agents such as Claude Code, Cursor, and Codex can query email data through read-only tools.
  • API key management through an API keys page in the web interface, used to authenticate MCP clients.
  • A jobs dashboard at /jobs for monitoring queues, retrying failed jobs, and viewing recurring tasks, backed by Solid Queue.
  • First-party deployment documentation covering Docker, Kamal, and Dokku paths, plus AWS SES setup and security hardening guides.

Who uses it and how

  • Teams already sending through raw Amazon SES that want delivery analytics without adding a paid wrapper service.
  • Self-hosters running the published container image ghcr.io/marckohlbrugge/sessy:main with a mounted storage volume and a generated SECRET_KEY_BASE.
  • Operators deploying a modified fork through the documented Kamal path, or running the app on Dokku.
  • Developers and AI coding agents that connect to the MCP endpoint to search events, inspect a message's full delivery timeline, and pull aggregate stats.
  • Application owners hardening an SES setup using the project's security and deliverability best practices guide.

Getting started

The easiest path is Docker: run the container, set SECRET_KEY_BASE and DISABLE_SSL, and mount a volume at /rails/storage, following the

project readme (upstream, from github) — read inline

Sessy

Open-source email observability for AWS SES by Marc Köhlbrugge.

What is Sessy?

Amazon SES is a fantastic email service: cost-effective, reliable, and great deliverability. But it's frustratingly difficult to see what's actually happening with your emails.

That's why many people turn to overpriced email services that are often just glorified SES wrappers with a nice UI. You end up paying a lot for something you could do yourself.

Sessy is the open-source alternative. Use raw SES and still get a beautiful interface to see what happens after you hit send: deliveries, bounces, complaints, opens, clicks, and more.

Running your own Sessy instance

The easiest way to run Sessy is with Docker:

docker run -p 80:80 \
  -e SECRET_KEY_BASE=$(openssl rand -hex 64) \
  -e DISABLE_SSL=true \
  -v sessy:/rails/storage \
  ghcr.io/marckohlbrugge/sessy:main

See Docker deployment docs for full configuration options.

Want to deploy your own modified version? See Kamal deployment docs for deploying from a fork.

Using Dokku? See Dokku deployment docs.

Need help configuring AWS SES itself? See AWS SES setup guide.

For hardening recommendations, see SES security and deliverability best practices.

MCP server for AI agents

Sessy ships an MCP server at /mcp, so AI coding agents (Claude Code, Cursor, Codex) can query your email data: search events, inspect a message's full delivery timeline with bounce diagnostics, and pull aggregate stats. All tools are read-only.

Create an API key on the API keys page in the web UI, then follow the connect instructions at /docs/mcp on your instance. For example, for Claude Code:

claude mcp add --transport http sessy https://your-sessy-host/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Two things worth knowing:

  • Cloudflare / CDN users: bot protection (managed challenges) blocks MCP clients. Exempt the /mcp path from bot protection or agent requests will fail.
  • HTTP Basic auth: /mcp authenticates with API keys only and ignores HTTP_AUTH_*. Enabling HTTP Basic later does not revoke previously created API keys — review the API keys page after locking down an install.

Hosted version

We're working on a managed version of Sessy for those who'd rather not run their own instance.

You'll notice references to it in this codebase: a saas/ directory, Gemfile.saas, and the occasional Sessy.saas? check. These power the hosted version and are intentionally kept in this repository for simplicity, rather than maintaining separate repos. None of it affects self-hosting: the default bundle ignores the saas/ engine entirely, and the test suite verifies the open-source version behaves identically without it.

Jobs dashboard

Sessy uses Solid Queue for background jobs. A web dashboard is available at /jobs to monitor queues, retry failed jobs, and view recurring tasks.

Development

You are welcome to modify Sessy to your liking.

To get started:

bin/setup
bin/dev

Contributing

We welcome contributions! Since we're still in a very early stage, please keep the following in mind:

  • Typos and obvious bugs: Feel free to submit a PR directly.
  • Code changes: Please try to match our existing style.
  • New features: Please open an issue first to discuss before implementing.
  • Deployment docs: We keep first-party deployment docs focused on broad, open, self-hosted paths we actively use (for example Docker, Kamal, and Dokku). We generally do not add provider-specific deployment guides to this repository.

For anything beyond small fixes, please open an issue first so no one wastes their time on something we might not merge.

License

Sessy is released under the O'Saasy License, except where a subdirectory specifies otherwise (for example, the Claude and Cursor plugin packages are MIT).

Inspiration

Sessy was heavily inspired by Fizzy and we're grateful to 37signals for open-sourcing their codebase.

Frequently asked questions

Is Sessy free to use?

Sessy is open source. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Sessy do?

Own your SES email analytics, from send to inbox

What is Sessy written in?

Sessy is primarily written in Ruby. Its source is publicly available at https://github.com/marckohlbrugge/sessy, and it has 929 GitHub stars.