Skip to main content
Nemofy

Notifications, under your control.

One platform across every channel — works with every app or agent and any provider. Built to run on the infrastructure you own.

On your stack

No vendor lock-in. Live, on day one.

Latency47ms
Routed to

sms_primary · fallback

cURLv1
$ POST /v1/messages
> 200 OK · 47ms

{
  "event": "order.confirmed",
  "channel": "auto",
  "recipient": "user_4823",
  "tenant":  "tenant_a",
  "region":  "eu-west-1"
}

 delivered via sms_primary

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
Page 02 / 12
2026 Q1
Jan · 4 SDKs landed across 4 teams
Feb
  • Billing
    welcome template
  • CRM
    cold-start copy
  • Mobile
    signup copy
  • Legacy
    SMS support
Mar
  • Billing
    translate FR
  • CRM
    translate FR
  • Mobile
    translate FR
  • Legacy
    translate FR
Same review across 4 teams
2026 Q2
Apr
  • Billing
    audit log v2
  • CRM
    fallback rule
  • Mobile
    fallback map
  • Legacy
    audit log v2
Rebuilt in two lanes
May
  • Billing
    vendor swap
  • CRM
    switch SMS vendor
  • Mobile
    push vendor swap
Jun · 2 more queued · 1 blocked
21 tasks · 4 teams · 6 months. The visible line of code is above. The real work stacks underneath.

Production reality

Sending is the easy part.

  • 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
on-call · last 7 days
4 · 20h 06m
  • Inc 011h 47m

    Customer never got the order confirmation SMS

    No event IDNo central trailNo automatic retry
  • Inc 023h 12m

    SMS vendor returns 504. Failover, or hold?

    No configured fallback chainNo provider health probeNo automated swap
  • Inc 036h 45m

    Compliance asks: who disabled push for a tenant last quarter?

    Audit logs scatteredNo admin action trailNo per-tenant view
  • Inc 048h 22m

    Password reset didn't fire across the auth → notification chain

    No end-to-end traceNo event replayNo correlation across services
22 system touchpoints · no shared trace · no central audit · no automated failover
▶ 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

Features
  • Retry policy
  • Templates
  • Routing engine
  • Fallback chain
  • Webhooks
  • PII redaction
  • Audit trail
  • Multi-tenancy
  • Observability
  • Rate limiting
Channels
  • voice
  • push
  • sms
  • chat
  • email
SDKs
  • Java
  • TypeScript
  • Python
  • Go
  • Node

Built around your operations

Skip the years of building. Start where mature platforms end up.

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.

ActionStatusResource
Search
TimeUser actionStatusResource
10d agoRevoke API keySuccessAPPLICATION
10d agoCreate API keySuccessAPPLICATION
10d agoDelete eventSuccessEVENT
10d agoSend notificationFailureAPPLICATION
10d agoClone eventSuccessEVENT
10d agoUpdate template variableSuccessTEMPLATE

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%

Live ops.

Events per minute, delivery rate, p95 latency, and per-provider health.

Events / min+4.2% vs last hour
12,478
Delivered
99.97%
p95 latency
412ms
Providers3 healthy · 1 warn
  • Twilio412ms · sms
  • SendGrid298ms · email
  • Mailgun1.2s · email
  • FCM186ms · push
Routing engine

One routing brain across every event and every channel.

A notification enters from your SDK or API, runs through strategy, health, and rule checks, then falls over to a backup provider when the primary is unhealthy. Configured per tenant, swapped without touching application code.

TriggerNotification from SDK or API
Choose strategyPriority · round-robin · region
Apply health checkProbe provider liveness
Apply routing strategyScore providers, pick primary
Apply IF / ELSE rulesTenant tier · channel · payload
IF
DeliverTwilio · low-latency SMS
End
ELSE
Fallback if neededSendGrid · auto-retry
End

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-shipped.tpl
EditorPreview
Variablescustomer.nameorder.idorder.statusorder.itemsorder.trackingUrl
SubjectHi {{user.name}}, {{#ifEquals type "payment"}}Payment of ${{amount}} received{{/ifEquals}}
1Dear {{upper customer.name}},
2
3Your order #{{order.id}} has been {{order.status}}.
4
5{{#if order.items}}
6{{#each order.items}}
7- {{name}} x{{quantity}} - ${{price}}
8{{/each}}
9Total: ${{order.total}}
10{{/if}}
11
12{{#ifEquals order.status "shipped"}}
13Track your package: {{order.trackingUrl}}
14{{/ifEquals}}
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.

Claude Code
Sonnet 4.6
nemofy skill · ready
$ 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

On the infrastructure you already own.

One platform, deployed where you run it. The same Nemofy you boot on a single VM scales across a Kubernetes cluster behind your load balancer. No customer data leaves your perimeter.

System Warning
System-wide deployment health overview
DB OKRedis OKHeap 67.1%
Instances
8
2 Online4 Offline2 Stopped
Infrastructure health
2 / 2
2 healthy0 warning0 critical
DatabaseRedisAvg Heap 67.1%
All ServicesAllLast 24 Hours

Pick your infra.

Same binaries, same config schema, every target. Run a single container on a laptop, a Compose stack on a VM, or a Helm chart on a managed Kubernetes cluster. Your call.

VMSingle node · bare metal
DockerOne container
Docker ComposeLocal + dev stack
HelmChart, declarative
KubernetesHA, multi-zone
Nemofy — Notifications, under your control