SaaSignal is in public beta — free tier, no credit card required Read the docs →
Cloudflare Edge · KV · Channels · Jobs

The serverless
infrastructure
layer.

Three composable primitives — global key-value, real-time pub/sub, and unified job queues — built for Next.js and Vercel. No config files. No clusters. Just an API key.

Read the docs

Works with Next.js 13+ · App Router · Edge Runtime · Node.js

app/api/metric/route.ts
// Three APIs. One import.
import { createClient } from 'saasignal'
import { NextResponse } from 'next/server'

const ss = createClient(process.env.SAASIGNAL_KEY)

export async function POST(req: Request) {
  const { orgId, metric, value } = await req.json()

  // Cache at the edge — ~200K writes / $1
  await ss.infra.kv.set(`metric:${orgId}`, value)

  // Push to live dashboards — ~1M msgs / $1
  await ss.infra.channels.publish(`org:${orgId}`, {
    event: 'metric.updated',
    data: { metric, value }
  })

  // Queue background work — ~1M jobs / $1
  await ss.infra.jobs.create({
    trigger: { type: 'immediate' },
    handler: 'https://acme.com/api/process',
    payload: { orgId, metric, value }
  })

  return NextResponse.json({ ok: true })
}
Built for
Next.js Cloudflare Edge Runtime Node.js

Three APIs.
Every backend feature.

Queue, Task, and Cron are not different things — they're all "execute a handler, at some point, with retries." The only difference is the trigger.

KV ~1M reads / $1

Global Key-Value Store

Sub-millisecond reads from 300+ edge locations. Sessions, feature flags, rate limits, distributed locks — all from a single API.

import { createClient } from 'saasignal'
const ss = createClient(process.env.SAASIGNAL_KEY)

// Edge-fast sessions
await ss.infra.kv.set('session:u_123', {
  userId: 'u_123',
  role: 'admin',
  plan: 'pro',
}, { ttl: 86400 })

// Atomic counters
await ss.infra.kv.increment('ratelimit:u_123')

// Batch operations
const { results } = await ss.infra.kv.batch([
  { op: 'get', key: 'config:flags' },
  { op: 'get', key: 'config:limits' },
])
Channels ~1M msgs / $1

Real-Time Pub/Sub

WebSocket and SSE subscriptions with presence, message history, and fan-out. Build live dashboards in minutes, not months.

// Publish from your API route
await ss.infra.channels.publish('org:acme', {
  event: 'metric.updated',
  data: { mrr: 42840, delta: +1200 }
})

// Subscribe in the browser
const channel = ss.infra.channels.subscribe('org:acme')
channel.on('metric.updated', ({ mrr, delta }) => {
  setMRR(mrr)
})

// Presence — who's online right now
const { users } = await ss.infra.channels.presence('org:acme')
console.log(users.length, 'users online')
Jobs ~1M jobs / $1

Tasks, Queues & Cron

One primitive replaces three services. Immediate tasks, delayed execution, cron schedules, push queues, pull queues — all with retries and dead-letter.

// Send welcome email in background
await ss.infra.jobs.create({
  trigger: { type: 'immediate' },
  handler: 'https://app.acme.com/api/on-signup',
  payload: { userId: 'u_123' },
  max_attempts: 3,
  backoff: 'exponential',
})

// Nightly billing digest (cron)
await ss.infra.jobs.create({
  trigger: {
    type: 'scheduled',
    schedule: '0 9 * * *',
    timezone: 'America/New_York',
  },
  handler: 'https://app.acme.com/api/digest',
})

From zero to global edge
in four steps.

01

Create a project

Sign up, create an org, then a project. Takes 30 seconds.

02

Generate a token

Create a scoped token and add SAASIGNAL_KEY to your Vercel environment.

03

Install the SDK

Run npm install saasignal and import with a single line.

04

Deploy

Push to Vercel. KV, Channels, and Jobs are live on 300+ edge locations.

Every standard.
Every workflow.

Use SaaSignal from any tool, agent, or framework. We support the protocols developers and AI agents already speak.

TypeScript SDK

First-class typed client for Node.js, Bun, and edge runtimes. Namespaced APIs for KV, Channels, Jobs, and Billing.

npm install saasignal
View on npm →

CLI

Manage KV, Channels, Jobs, and billing directly from your terminal. No code required — just set your API key and go.

npx saasignal kv get mykey
CLI reference →

MCP Server

Production MCP endpoint at /mcp. AI agents connect with an API key and get scope-filtered tools — KV, Channels, Jobs, and more.

{ "type": "http", "url": ".../mcp" }
MCP setup guide →

OpenAPI Spec

Full OpenAPI 3.1 specification with interactive docs. Generate clients in any language or explore the API in your browser.

/api/openapi.json
Explore API docs →

One balance.
Every primitive.

1 token ≈ $1 of metered SaaSignal platform spend across compute, storage, media, realtime, and logistics providers. Markup is built into top-up bundles & plans — usage itself tracks underlying service cost.

KV read~1.0M simple reads / token
KV write~160K small writes + 30d storage / token
Channel publish~1.2M small publishes / token
Mapbox geocode~500 requests / token
Storage uploadvaries by bytes + storage time
3.2
of 5 tokens
KV
1.8
Channels
0.84
Jobs
0.56

Simple, transparent pricing.

Start free. Scale as you grow. No infrastructure costs, ever.

Free
$0
  • 0.5 tokens / month
  • 10 req/s
  • 50 channel subscriptions
  • Global edge deployment
  • All three primitives
Start for free
Indie
$19/mo
  • 4 tokens / month
  • 100 req/s
  • 1K channel subscriptions
  • Global edge deployment
  • All three primitives
Get started
Scale
$149/mo
  • 45 tokens / month
  • 2,000 req/s
  • 100K channel subscriptions
  • Global edge deployment
  • All three primitives
Get started

What does 1 token get you?

KV Readsabout 1,000,000 simple reads
KV Writesabout 160,000 small writes
Channel Messagesabout 1,200,000 small publishes
Mapbox Geocodingabout 500 requests
Storage / Mediavaries with bytes, retention, and delivery

1 token = $1.00 of metered SaaSignal platform spend across compute, storage, media, and logistics providers.
Your subscription is how you bundle those tokens cheaply.

Need more? Contact us for enterprise pricing with SLAs.

Your next Vercel app
deserves better infrastructure.

Get KV, Channels, and Jobs in one API call. Free to start, no credit card required.