Claros was an oracle. This one tells you what to send next.
Open-source lifecycle email that writes itself.
Describe a flow in plain language. Claros compiles it once, drafts the email with your own AI key, and sends nothing until you approve it. Runs on your server, under your control.
git clone https://github.com/claroshq/claros.git && cd claros
docker compose run --rm install
docker compose up -dAbout 5 minutes with cached images. No AI key required to start; the prebuilt library flow sends your first real email with fixed templates.

The real dashboard, running locally in under five minutes.
Claros grew out of lifecycle email work at Elevate Studio, built first for their own products and later for clients. We started with Mautic, outgrew the maintenance, and refused the platforms that tax your contact count. So we wrote the engine we wanted: prompt-defined flows, deterministic execution, our own AI key, and human approval before anything sends.Read the full story →
Compile
Describe the journey. The compiler builds the plan.
Write a flow in plain English: "When a user signs up, send a welcome email immediately. If they have not activated after two days, send a getting-started guide. Stop when they activate." Claros sends the prompt to your configured LLM exactly once and stores the resulting plan. From then on, the engine executes that plan with SQL.
Read how compilation works →
A prompt becomes a deterministic plan you can read before it runs.
Approve
Every AI-drafted message waits in the queue.
The Brain decides whether to send, drafts the email, and scores it for value. Then the message lands in Approvals, not the outbox. You approve, reject, or switch the flow to auto-send once you trust it. Fixed-content flows skip the queue because a human already wrote the copy.
See the approval queue →
No AI-drafted email sends until a human says yes, unless you explicitly choose auto-approve.
Audience
See who to email next, not just what happened.
Contacts are bucketed by tenure and recency into a 4x4 grid. Each cell is an audience: start a flow from it, see who is in it, watch the trend. No SQL, no segment builder, no list import. The grid adapts to your product's natural rhythm.
Read about lifecycle states →
A 4x4 grid of tenure versus recency; every cell is an audience you can email.
Infrastructure
One Docker image. One database. That's it.
One Docker image plus Postgres 16 with pgvector. pg-boss for jobs, advisory locks for deduplication, pgvector for knowledge-base search. No Redis. No Kafka. No message broker.
- Ingest events through a Segment-compatible API or a 2 KB browser snippet served by your own instance.
- Send through your own Resend or SMTP account, including the Amazon SES SMTP endpoint.
- Split a single container into API, worker, and scheduler roles when you need to scale.
- RFC 8058 one-click unsubscribe headers and a CAN-SPAM postal footer are built in, with a suppression list enforced before every send.
Three commands on your own server.
Self-hosting is the only way to run Claros today. The install command creates your .env secrets, tests the database connection, applies migrations, and prints a one-time claim URL.
git clone https://github.com/claroshq/claros.git && cd claros
docker compose run --rm install
docker compose up -dNo LLM key is needed to start. The prebuilt library flow sends your first real email with fixed templates.
About 5 minutes with cached images.
Frequently asked questions
What is Claros?
Claros is an open-source lifecycle email engine. It ingests events about your users, maintains a lifecycle state for each contact, and sends email through automations called flows.
Can I run it without an AI key?
Yes. Ingestion, contacts, lifecycle tracking, the prebuilt library flow, fixed-content flows, approvals, suppression, and analytics all work without an LLM provider. You only need a key for prompt-defined flows, AI-drafted copy, or knowledge-base embeddings.
How is this different from other lifecycle email tools?
Claros has no visual flow builder. Instead of drawing a journey on a canvas, you describe it in plain language and the engine compiles a deterministic plan. You also host it yourself and send through your own transport, so your contact data and delivery stack stay under your control.
What do I need to self-host?
A server that can run Docker Compose. The default stack includes a bundled Postgres container; for production, point it at your own database.
Is it really open source?
Yes. The source is released under the MIT license. Development follows an "open source, not open contribution" model, similar to SQLite. Bug reports are welcome; code changes are maintained by the core team.
Is a hosted Cloud version available?
Not yet. A Cloud edition is planned. It will use the same engine as self-hosted Claros, add zero-config sending, and bill per email sent. For now, self-hosting is the only way to run it.
Stop wiring lifecycle email by hand.
Install Claros in about five minutes and send your first real email from your own server.