Keila
Self-hosted newsletter tool with campaigns, forms, and segments behind an official JSON API.
Keila is an Elixir newsletter platform, an open alternative to Mailchimp: campaigns with a WYSIWYG or Markdown editor, sign-up forms, contact segments, and sending through SMTP, SES, Sendgrid, Mailgun, or Postmark. It runs from the official Docker image with a handful of env vars. The Builder documents a JSON API covering campaigns, contacts, segments, forms, templates, and transactional messages, which also works on self-hosted instances.
- I send a monthly newsletter and want to stop paying per contact
- I want my agent to add subscribers from other systems and schedule campaigns over an API on a box I control
- AGPL-3.0
- Elixir stack: fewer Adopters can make light edits than with a PHP or Node app
- API key must be generated in account settings before the API answers
- Sender configuration is not writable through the API
Last activity Sep 2, 2026. Fit: adaptable 2, operable 3.
Editions
Self-hosted · Free open source
- Clone
git clone https://github.com/pentacent/keila - ImageContainer
Keila Cloud XS · €8 per month closed source
- HostedOpen the hosted app
Keila Cloud S to XXL · €16 per month closed source
- HostedOpen the hosted app
Adaptable: what is yours to change
Make it yours
Config only8 things to edit
Copy ops/docker-compose.yml, set SECRET_KEY_BASE, DB_URL, URL_HOST, and the MAILER_SMTP_* vars for system mail, and start it. Campaign senders are added in the UI. Anything deeper (templates beyond the built-in editor, auth providers) is Elixir in config/runtime.exs and lib/.
- Env vars
SECRET_KEY_BASEDB_URLURL_HOSTMAILER_SMTP_HOSTMAILER_SMTP_USERMAILER_SMTP_PASSWORD- Config files
ops/docker-compose.ymlconfig/runtime.exs- Prompt files
- none
- Accounts you need
- email delivery provider (SMTP inbox, AWS SES, Sendgrid, Mailgun, or Postmark)
Source
- github.com/pentacent/keila
- AGPL-3.0 license
- Last commit Sep 2, 2026
- 2,203 stars
Operable: what an agent can drive
Interface
OfficialAPIpublished by the builderremote or local
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Partial coverage. 6 of 9 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Create, schedule, and deliver newsletter campaigns | Reachable | keila.io/docs/api: Campaigns create, update, schedule, deliver |
| Manage contacts and custom data | Reachable | API Contacts CRUD with custom data fields |
| Segment the audience | Reachable | API Segments |
| Build sign-up forms | Reachable | API Forms create and submissions |
| Manage email templates | Reachable | API Templates |
| Send transactional messages | Reachable | API Transactional Messages send and render |
| Configure senders (SMTP, SES, Sendgrid, Mailgun, Postmark) | Not reachable | API Senders is read access; sender setup is in the UI |
| Read campaign open and click statistics | Undetermined | not listed among API resources on the docs page |
| Double opt-in flows | Undetermined | form setting; API exposure not stated |
Code stack
- Languages
- ElixirJavaScript
- Frameworks
- PhoenixPhoenix LiveView
- Package manager
- mix
- Database
- PostgreSQL
- Hosting target
- Docker (pentacent/keila)docker-compose
- Built
- Human-written (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: web app deployed from the official Docker image | 95% |
| executionModel | no model at runtime | 95% |
| operability | keila.io/docs/api (Builder domain): Bearer API key, JSON API for campaigns, contacts, forms, segments, senders, templates, transactional messages; works on self-hosted | 90% |
| effort | ops/docker-compose.yml names SECRET_KEY_BASE, DB_URL, URL_HOST, MAILER_SMTP_* | 90% |
| editions | keila.io/pricing: XS EUR 8 to XXL EUR 256 per month; self-hosting free under AGPL | 85% |
| active | pushedAt 2026-09-02; 74 open issues | – |
| provenance | pentacent-built since 2020; no vibe-coded claim | 85% |
| reach | 80% |
Open questions
- Does the API expose campaign statistics?
- Full list of supported env vars from keila.io/docs/installation (only the compose sample was read)
Sources
- github.com/pentacent/keila sourcing:content-publishing:github
- www.keila.io/docs/api analysis:content-publishing
- www.keila.io/pricing analysis:content-publishing