Skip to main content
Nemofy
Routed to

sms_primary → primary
sms_b · sms_c → fallback

Tenant

tenant_a · prod
eu-west-1

Notifications,
under your control.

One infrastructure to deliver across every channel, connect every app and provider, built to run on your infrastructure.

[API KEY]

sk_live_•••• •••• •••• •••• 0p3y

Latency
47ms
Audit trail

evt_4823
channel·sms · tenant·tenant_a
pii·redacted · v4.2

Webhook

POST internal/webhooks/nemofy
200 OK · 12ms

It’s never as simple as “just send a notification.”

Routing logic, retries, fallbacks, compliance rules, user preferences, legacy system compatibility, and multi-channel orchestration quickly turn it into a complex infrastructure project.

notification roadmapdraft 07 / still moving after three planning reviews
page 02 of 12
vendor SDK
welcome template
translate FRdelayed
audit log v2
vendor swap
SendGrid SDK
cold-start copy
translate FRdelayed
fallback rule
switch SMS vendor
drip alerts
FCM + APNs
signup copy
translate FR
fallback map
push vendor swap
email batch
SMS support
translate FRdelayed
audit log v2
WhatsApp
duplicated notification work
vendor adapters
four local versions
translate FR
same review reopens
audit logs
rebuilt beside sender
fallback rules
copied after timeout
blocked legacy
never fully removed
the visible line of code is above the schedule. the real work stacks underneath.animated on entry

Production reality

Sending is the easy part. Production never stops asking questions.

  • Notifications that didn’t fire.
  • Vendors that go down at 3am.
  • Compliance asking who toggled what.
  • Password resets that vanish between services.

Without a platform, every one is its own investigation across scattered tools.

Order events
orders · billing · auth
Sender service
single point of failure
The customer
never notified
▶ Platform · day one

Nemofy is the platform layer between your applications and every provider you use.

Routed, retried, failed-over, audited. One trace per notification, across every channel and every provider. Read our docs

  • Retry policy
  • Templates
  • Routing engine
  • Fallback chain
  • Webhooks
  • PII redaction
  • Audit trail
  • Multi-tenancy
  • Observability
  • Rate limiting

Built around your operations

Skip the years of building. Begin at state-of-the-art.

Nemofy gives you a battle-tested notification platform with every capability already in place: vendor-agnostic routing, unified audit trails, live observability, and seamless fallbacks. Configured, not coded.

Your stack. Your rules.

Integrate the providers you want and the tools you love. From frameworks to delivery providers, and change anything at any time. All without touching core code.

Your infrastructure, your notifications, your future.

Nemofy

Multi-tenancy

Customize notifications and create per-tenant feeds to deliver value to your business customers.

Tenant A
Tenant B
Tenant C

Every event, one trail.

Per tenant, per provider, per channel. PII redacted at the field, not the endpoint.

Audit · last eventslive
  • 14:32:01evt_4823delivered · sms_primary · 1.84s
  • 14:32:00evt_4822fallback → sms_b · 2.12s
  • 14:31:58evt_4821delivered · email_primary
  • 14:31:55evt_4820delivered · push_primary

Quota management.

Per-tenant, per-event quotas with warning and critical thresholds. Alerts fire before you hit the wall.

Quota Usage
1,000 / Per Day
Configure
89/ 1,000
9%
Warning: 70%Critical: 90%
Sources
API & SDKs
PythonTypeScriptJavaGo
Kafka topics
Apache Kafka
Databases
PostgreSQLMySQL
Routing decision tree12,478 events / min
TriggerNew notification event
Apply priorityfirst-match · fast path
Match by regiongeo-aware · per locale
BranchCheck tenant tier
IF enterprise
Premium poolTwilio · low-latency SMS
ELSE standard
Round-robin LBSendGrid · Mailgun · Resend
Destinations
Email
SMS
Push
Chat
Voice

Templates

Write once. Render anywhere.

One template covers every channel, every locale, every customer. Mustache-style variables, live preview, per-tenant overrides. Edit in the admin, or check templates into git and ship them through the same pipeline as your code.

order-confirmed.mjml
Template Studio
Variablescustomer.firstNameorder.idorder.shipDatetracking.url
1<mjml>
2 <mj-body>
3 <mj-section>
4 <mj-text>
5 Hi {{customer.firstName}},
6
7 Your order {{order.id}} ships
8 on {{order.shipDate}}.
9 </mj-text>
10 <mj-button href="{{tracking.url}}">
11 Track order
12 </mj-button>
13 </mj-section>
14 </mj-body>
15</mjml>
Inbox · Live preview
Fromorders@your-app.com
Tosarah.chen@example.com
SubjectYour order ORD-4823 is on the way
Your App

Hi Sarah,

Your order ORD-4823 ships on Monday, 27 May. You'll get a tracking update as soon as it leaves the warehouse.

Track order

Sent by Your App via Nemofy. You're receiving this because you placed an order at your-app.com.

9:23●●●●●
Monday, 27 May
9:23
Your Appnow

Order on the way

Hi Sarah, your order ORD-4823 ships Mon 27 May.

Push · Lock screen

Ship a notification in minutes. From your IDE, your CLI, or your agent.

One unified API across every channel. SDKs in every major language. The Nemofy skill works in Codex, Cursor, OpenCode, Claude, Aider, and any agent that supports tool use.

SDKs · every major language
  • Node
  • TypeScript
  • Python
  • Java
  • Go
  • Ruby
API

Unified API

One call. Every channel. The same event reaches email, SMS, push, chat, voice — wherever your routing rules send it.

POST /api/v1/eventsHTTP
curl https://nemofy.internal/api/v1/events \
  -H "Authorization: Bearer $NEMOFY_API_KEY" \
  -H "X-TENANT-ID: tenant_a" \
  -d '{
    "event": "order.confirmed",
    "recipient": { "email": "user@example.com", "phone": "+212600000000" },
    "data": { "orderId": "4823", "amount": "1240.00" }
  }'
AGENT · CLI

From your IDE, your CLI, or your AI agent

Add a notification, promote it through environments, audit changes — all from your terminal. Or describe what you want and let the agent ship it. The Nemofy skill works in Codex, Cursor, OpenCode, Claude Code, Aider, and any agent that supports tool use.

your agent · nemofy skill
$ nemofy skill install
installed for codex, cursor, opencode, claude, aider

# in your agent:
add an SMS for order-confirmed,
same template as the email

agent using nemofy:
wrote notifications/order-confirmed.yaml
mapped template order-confirm-v2 to channel sms
fallback chain: twilio_eu → inwi → mgate

$ nemofy notif test order-confirmed
delivered via sms_primary · 247ms

$ nemofy promote order-confirmed --to staging
promoted · audit row #14,239

Deployment & sovereignty

On the infrastructure you already own.

Nemofy deploys inside your perimeter — Docker Compose or Helm chart. Plugs into the identity you already run. No customer data leaves your infrastructure.

Your perimeterOutbound · provider APIs

Standard ops surface

Java 21 · Spring Boot 4 · PostgreSQL or MySQL · Redis · JobRunr-backed background processing. Healthcheck endpoints. Observable through the metrics stack you already operate.

Identity, federated

Plugs into the identity you already run via Keycloak — federates with your existing AD, LDAP, or SAML directory. No parallel user store.

Multi-tenant, at the data layer

Isolation enforced via TenantContext + repository-level filters. Not at the edge. Per-tenant providers, per-tenant audit, per-tenant routing.

Nemofy — Notifications, under your control