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.
If it's triggered by something — a request, a schedule, an event — rather than running all the time, it probably belongs in a function.
Handle incoming webhooks from Stripe, GitHub, or your own services without keeping a server running just to listen.
Cron-style jobs for nightly reports, cleanup tasks, or syncing data — no separate scheduler to run and babysit.
React to a database change or a file landing in storage — chain functions together without wiring up a queue yourself.
Resize images, send transactional email, or run any job that's too slow to hold up a request-response cycle.
No add-ons to configure and no extra invoices — this is what every function comes with.
Node.js, Python, PHP, Java, and more — write each function in whatever language fits the job.
From zero to thousands of concurrent invocations without any configuration on your end.
See invocations, errors, and execution time from the console — nothing extra to install or wire up.
Store API keys and config separately from your code, scoped per function and per environment.
Expose a function as an HTTP endpoint, or wire it to fire on a schedule or an event — same deploy either way.
Runtimes are kept warm intelligently based on traffic, so latency-sensitive endpoints stay fast.
No infrastructure to configure first. Write your function, deploy it, and we handle provisioning, scaling, and routing in the background.
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"
});
For side projects and light traffic — most small apps never leave this tier.
For live products with real traffic and background jobs to run.
For teams with compliance needs, dedicated concurrency, or scale.
| Feature | Starter | Growth | Enterprise |
|---|---|---|---|
| Included invocations | 100K / mo | 2M / mo | Custom |
| Max memory | 128 MB | 1 GB | Custom |
| Max execution time | 10 sec | 60 sec | Configurable |
| Concurrent executions | 10 | 200 | Custom |
| Event triggers | — | ✓ | ✓ |
| Custom domains | — | ✓ | ✓ |
| SLA | — | — | ✓ |
| Support | Community | Standard | Premium |
"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."
Alex MeyerNode.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.
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.
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.
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.
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.