Functions
Elastic scale-to-zero

Functions that scale like serverless — governed like enterprise.

Run HTTP and event-driven code with revisions, traffic control, zero-trust guardrails, and first-class integrations — with AI-assisted provisioning and debugging.

Deploy a Function

Deploy → Scale → Observe

90s overview

Select a trigger to see the flow

Function
Database
handler.ts
export default async function handler(req: Request) {
  // Process HTTP request
  const data = await req.json();
  return Response.json({ status: "ok" });
}
Triggers

Triggers as first-class primitives

Beyond typical HTTP functions. Connect to any event source with type-safe handlers and automatic scaling.

Events flow in Results flow out

Create triggers • Run locally • Preview

Elastic Execution

Intelligent scale-to-zero + immutable revisions

Every deploy creates an immutable revision. Route traffic between versions, canary new code, and rollback instantly—all with automatic scaling that goes to zero when idle.

Revision v1.3.0 Latest
Just now
85% traffic
Replicas
3
p99 Latency
24ms
RPS
1.2k
Revision v1.2.0 Stable
2 days ago
15% traffic
Traffic Split Canary → Promote → Rollback
v1.2.0 v1.3.0

Scale Behavior

Functions scale to zero when idle. First request wakes the function (~50-200ms cold start).

Concurrency Model

One request per instance. Minimizes latency by avoiding resource contention.

Request Buffer

Burst handling
Processing

Deploy → Canary → Rollback

Fluid Compute

Start serverless. Promote seamlessly.

Same packaging, same identity, same observability — different execution posture. Graduate functions to dedicated compute when you need it.

1

Pure Scale-to-Zero

Default

Ideal for sporadic traffic, webhooks, and event handlers. Pay only for actual execution time.

Cold Start
~100ms
Min Replicas
0
Billing
Per-exec
2

Pinned Warm Capacity

Dedicated

Keep minimum instances warm for latency-sensitive workloads. Instant response, no cold starts.

Cold Start
0ms
Min Replicas
1+
Billing
Reserved
3

Worker Mode

Long-running

For async processing, batch jobs, and long-running tasks. Built-in queue consumption and retries.

Max Duration
15min+
Queue
Built-in
Retries
Auto

Long-running tasks?

Use worker mode with queues and built-in retries. Function mode is best for sub-minute executions.

Marketplace

Managed services. One-click bindings.

Connect functions to managed databases, storage, messaging, and analytics. Policy-aware bindings with identity, cost allocation, and audit built in.

my-function

Event processor

Binding Created
Identity: my-function@project.iam
Cost Tag: team:platform
Audit: Enabled
// Auto-injected binding
const db = process.env.DATABASE_URL;

Browse Marketplace → Deploy BigQuery → Bind to Function

Multi-Region

Global functions. Enterprise patterns.

Deploy across regions with active-active or active-passive patterns. Automatic failover, latency-based routing, and consistency controls.

US
us-east-1
EU
eu-west-1
AP
ap-south-1

Routing Pattern

Requests route to the nearest healthy region. All regions serve traffic simultaneously.

Region Health

us-east-1
12ms Active
eu-west-1
85ms Active
ap-south-1
120ms Standby

AI Recommendation

Based on your stateless function and PostgreSQL binding, we recommend Active-Active with read replicas in each region.

Stateful dependencies?

Use managed services that support your chosen pattern. PostgreSQL read replicas or Redis with CRDT work well for active-active.

AI-First

AI-assisted provisioning & debugging

Generate function skeletons, select triggers, bind integrations safely, propose IAM policies, estimate costs, and explain error traces — all policy-aware.

function.yaml
AI Generated
# Generated by Celeris AI
apiVersion: functions.celeris.io/v1
kind: Function
metadata:
  name: webhook-processor
  namespace: production
spec:
  runtime: nodejs20
  trigger:
    type: http
    route: /webhooks/stripe
  scaling:
    minScale: 0
    maxScale: 100
    concurrencyTarget: 10
  bindings:
    - name: database
      service: postgresql://prod-db
  policy:
    egress:
      - api.stripe.com
    networkPolicy: zero-trust
    audit: true
---
# Rollout Strategy
rollout:
  strategy: canary
  steps:
    - weight: 10
      pause: 5m
    - weight: 50
      pause: 10m
    - weight: 100

AI Copilot

Policy-aware assistance

Capabilities

Generate skeleton
Select trigger
Bind integrations
Propose IAM
Estimate cost
Explain errors

Quick Generate

Policy Violation Blocked

Egress to *.amazonaws.com is not allowed. Use marketplace-managed S3 instead.

AI generates function + trigger + bindings + rollout

Security & Governance

Zero-trust. Audit-ready.

Enterprise-grade security for serverless. Identity management, network policies, egress controls, and comprehensive audit logging.

Identity

Per-function identity

  • Workload identity per function
  • OIDC token injection
  • Role-based access control

Network

Zero-trust policies

  • Allow/deny ingress rules
  • mTLS for east-west traffic
  • Private networking options

Egress

Outbound controls

  • Explicit egress allowlist
  • Domain-level blocking
  • NAT gateway options

Secrets

Secure bindings

  • Encrypted at rest + transit
  • Automatic rotation
  • External secrets support

Audit

Complete trail

  • All invocations logged
  • Config change history
  • Exportable to SIEM

BYOC

Your cloud, your rules

  • Deploy to your cloud org
  • Data residency control
  • VPC integration

Policy Preview

Toggle policies to see effect
policy:
  identity: my-function@project.iam.gserviceaccount.com
  network:
    mode: zero-trust
    allowIngress:
      - internal-gateway
  egress:
    mode: allowlist
    allow:
      - api.stripe.com
      - *.googleapis.com
  audit:
    enabled: true
    retention: 90d
    export: bigquery://audit-logs
Observability

Debug at distributed-systems scale

Invocation timelines, correlated logs and traces, service graph context, and AI-powered error explanations.

Invocation Timeline

Last 24h
14:32:15.234 24ms
POST /webhooks
req-abc123
14:32:14.892 31ms
POST /webhooks
req-def456
14:32:14.156 1.2s
POST /webhooks
TimeoutError: Database connection
Trace: trace-xyz789
Cold Start: Yes (142ms)
14:32:13.445 28ms
POST /webhooks
req-ghi789
14:32:12.891 19ms
GET /health
req-jkl012
+1,247 more

Service Graph Context

API fn fn DB
Error path Healthy

AI Error Analysis

Root Cause

Database connection pool exhausted. Cold start + burst traffic caused new connections to exceed pool limit (max: 10).

Suggested Fix

1. Increase connection pool to 25
2. Enable connection warming on cold start
3. Consider "Warm" scale mode for this function

Testing Gates

Tests as first-class deploy gates

E2E, smoke, and load tests run automatically on preview environments. Tests can block promotion. AI generates baseline tests and thresholds.

Preview

Ephemeral environment created

Deployed

Smoke Tests

Basic functionality verified

Health check
Auth flow
DB connection

Load Tests

Performance validation

1000 req/s ramp Running...

Promote

Canary → Full rollout

Waiting for tests

AI-Generated Tests

AI analyzes your function signature and bindings to generate baseline tests.

Health check endpoint Auto-created
Request validation Auto-created
DB connectivity Auto-created
p99 < 200ms threshold Suggested

Gate Configuration

Block promotion on failure
Run on every PR
Load test threshold p99 < 200ms
Error rate threshold < 0.1%

PR opens → Preview → Tests → Auto promote

Use Cases

Choose your pattern

Select a use case to see how Functions adapts. Each pattern shows the optimal trigger, compute mode, bindings, and rollout strategy.

Webhook Ingestion + Validation

Receive Stripe webhooks, validate signatures, and store events

Trigger

HTTP POST

Compute Mode

Scale-to-Zero

Bindings

PostgreSQL

Rollout

Canary 10% → 100%

Why Celeris is better

Zero-trust egress policy ensures only Stripe IPs can call your webhook. Marketplace PostgreSQL binding handles connection pooling automatically. Multi-region active-active for 99.99% uptime.

Handler Preview

import { verifyStripeSignature } from "@celeris/stripe";
import { db } from "@celeris/postgres";

export default async (req: Request) => {
  const event = await verifyStripeSignature(req);
  await db.insert(events).values(event);
  return Response.json({ received: true });
}
Get started in minutes

Deploy your first function in minutes, not days.

Elastic scale-to-zero with enterprise governance. Start free, scale infinitely.

BYOC-ready
Audit-ready
Multi-region patterns
AI-powered

No credit card required. Free tier includes 100K invocations/month.