Functions

Run code without managing a single server

Deploy event-driven functions in seconds — triggered by HTTP requests, schedules, or events elsewhere in your stack. Functions scale automatically and you're billed only for the time they actually run.

HTTP triggers Scheduled jobs Event triggers Multiple runtimes Auto-scaling
  StatusHealthy
RuntimeNode.js 20
Regionus-east
Invocations today12,438
Avg cold start180ms
Who it's for

Built for the code that shouldn't need its own server

If it's triggered by something — a request, a schedule, an event — rather than running all the time, it probably belongs in a function.

Webhooks & API endpoints

Handle incoming webhooks from Stripe, GitHub, or your own services without keeping a server running just to listen.

Scheduled jobs

Cron-style jobs for nightly reports, cleanup tasks, or syncing data — no separate scheduler to run and babysit.

Event-driven pipelines

React to a database change or a file landing in storage — chain functions together without wiring up a queue yourself.

Background processing

Resize images, send transactional email, or run any job that's too slow to hold up a request-response cycle.

Features

Everything a production function needs, on by default

No add-ons to configure and no extra invoices — this is what every function comes with.

Multiple runtimes

Node.js, Python, PHP, Java, and more — write each function in whatever language fits the job.

Automatic scaling

From zero to thousands of concurrent invocations without any configuration on your end.

Built-in logs & monitoring

See invocations, errors, and execution time from the console — nothing extra to install or wire up.

Environment variables & secrets

Store API keys and config separately from your code, scoped per function and per environment.

HTTP & event triggers

Expose a function as an HTTP endpoint, or wire it to fire on a schedule or an event — same deploy either way.

Cold-start optimized

Runtimes are kept warm intelligently based on traffic, so latency-sensitive endpoints stay fast.

How it works

From code to a live endpoint in under a minute

No infrastructure to configure first. Write your function, deploy it, and we handle provisioning, scaling, and routing in the background.

  • Write your function — a single handler, in whichever runtime your team already uses.
  • Deploy it — from the CLI, console, or your own CI pipeline.
  • Trigger it — over HTTP, on a schedule, or from an event elsewhere in your stack.
1  Write functionNode.js
2  Deployus-east
3  TriggerReady
For developers

Deploy from the CLI, console, or your own code

Typed clients across the languages you already use — same primitives, idiomatic in each one. If you're not the one writing this part, feel free to skip ahead to pricing.

// Deploy a function
import { WinixxCloud } from '@winixx/cloud';

const cloud = new WinixxCloud({ apiKey: process.env.WINIXX_API_KEY });

const fn = await cloud.functions.deploy({
  name: 'send-welcome-email',
  runtime: 'node20',
  entry: './handler.js',
  trigger: { type: 'http' },
});
// Deploy a function via the REST API
const res = await fetch('https://api.winixx.net/cloud/v1/functions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${WINIXX_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'send-welcome-email',
    runtime: 'node20',
    trigger: { type: 'http' },
  }),
});

const fn = await res.json();
// Deploy a function
import { WinixxCloud, FunctionSpec } from '@winixx/cloud';

const cloud = new WinixxCloud({ apiKey: process.env.WINIXX_API_KEY! });

const spec: FunctionSpec = {
  name: 'send-welcome-email',
  runtime: 'node20',
  entry: './handler.ts',
  trigger: { type: 'http' },
};

const fn = await cloud.functions.deploy(spec);
# Deploy a function
from winixx_cloud import WinixxCloud

cloud = WinixxCloud(api_key=os.environ["WINIXX_API_KEY"])

fn = cloud.functions.deploy(
    name="send-welcome-email",
    runtime="python3.12",
    entry="handler.py",
    trigger={"type": "http"},
)
// Deploy a function
use Winixx\Cloud\WinixxCloud;

$cloud = new WinixxCloud(apiKey: getenv('WINIXX_API_KEY'));

$fn = $cloud->functions->deploy([
    'name' => 'send-welcome-email',
    'runtime' => 'php8.3',
    'entry' => 'handler.php',
    'trigger' => ['type' => 'http'],
]);
// Deploy a function
import net.winixx.cloud.WinixxCloud;
import net.winixx.cloud.model.FunctionSpec;

WinixxCloud cloud = new WinixxCloud(System.getenv("WINIXX_API_KEY"));

FunctionHandle fn = cloud.functions().deploy(
    FunctionSpec.builder()
        .name("send-welcome-email")
        .runtime("java21")
        .entry("Handler.java")
        .trigger("http")
        .build()
);
// Deploy a function
#include <winixx/cloud.hpp>

winixx::Cloud cloud(std::getenv("WINIXX_API_KEY"));

winixx::FunctionSpec spec;
spec.name = "send-welcome-email";
spec.runtime = "custom";
spec.entry = "handler.bin";
spec.trigger = "http";

auto fn = cloud.functions().deploy(spec);
// Deploy a function
using Winixx.Cloud;

var cloud = new WinixxCloud(Environment.GetEnvironmentVariable("WINIXX_API_KEY"));

var fn = await cloud.Functions.DeployAsync(new FunctionSpec {
    Name = "send-welcome-email",
    Runtime = "dotnet8",
    Entry = "Handler.cs",
    Trigger = "http"
});
Pricing

Start small, pay for what you use

See full pricing →
Starter
$0/mo

For side projects and light traffic — most small apps never leave this tier.

  • 100K invocations / mo included
  • 128 MB memory per invocation
  • HTTP & scheduled triggers
  • Community support
Get started
Enterprise
Custom

For teams with compliance needs, dedicated concurrency, or scale.

  • Dedicated concurrency limits
  • VPC / private network access
  • SLA-backed uptime
  • Premium support & SSO
Talk to sales
Feature Starter Growth Enterprise
Included invocations100K / mo2M / moCustom
Max memory128 MB1 GBCustom
Max execution time10 sec60 secConfigurable
Concurrent executions10200Custom
Event triggers—✓✓
Custom domains—✓✓
SLA——✓
SupportCommunityStandardPremium
"We moved our staging and prod databases over in an afternoon. Having compute, database, and functions under one identity layer removed a whole category of glue code."
AMAlex Meyer Alex Meyer
Platform Engineer, logistics startup
FAQ

Common questions

Which runtimes do you support?+−

Node.js, Python, PHP, Java, and more, with new runtimes added over time. All of them deploy and bill the same way, so switching languages between functions doesn't mean learning a new console.

How does billing work?+−

You're billed per invocation and for the compute time each invocation uses, not for idle capacity. A function that never runs costs nothing beyond your plan's base.

What's the cold start time?+−

Typically under 200ms for warm runtimes. Functions are kept warm automatically based on traffic patterns, so latency-sensitive endpoints stay fast without any configuration from you.

Can I trigger a function from a database change?+−

Yes — event triggers on the Growth and Enterprise plans let a function fire in response to changes elsewhere in your Winixx Cloud resources, like a new row in a database or a file landing in storage.

What if my job needs to run longer than the execution limit?+−

For genuinely long-running work, Compute is usually the better fit. Talk to sales and we'll help you figure out whether your workload belongs in Functions or on a dedicated instance.

Ready to deploy your first function?

Spin it up in under a minute — no credit card required to start.