Xeonr Developer Docs

Home

Push Node.js, Go or static source and get a URL. Your app starts on the first request and idles back to zero.

Xeonr Functions runs Node.js, Go and static sites without a Dockerfile. You give it source — from a repository, an uploaded archive, or the browser editor — and it gives you a URL. Container functions start when the first request arrives and idle back to zero when traffic stops; static sites never run a container at all.

Everything the console does is also in the public API. From TypeScript or CI, reach for the SDK and CLI rather than the protocol directly.

https://<name>.fns.xnr.app          production
https://<name>.stage.fns.xnr.app    stage
ConsoleFunction domain
Productionfunctions.xeonr.iofns.xnr.app
Stagefunctions.xeonr.devstage.fns.xnr.app

Guides

API Reference

Hostnames are assigned, not chosen

Every function gets a generated hostname label — wandering-otter-4f2a — and you cannot pick it. All functions share one registrable domain and run untrusted code, so a chosen name would be a phishing primitive: whoever claimed login-xeonr would serve a convincing credential page on a hostname that looks official.

What you do choose is a display name. It has no uniqueness rules, nothing routes on it, and it is what the console shows everywhere.

Custom domains are not available yet. Until they are, the assigned hostname is the only way to reach a function.

How it works

Functions is a product built on top of container-platform. It owns source, versions, buildpacks, git integration, routing and the console. The platform owns image builds, instance lifecycle, cold start, isolation and durable storage.

git push / archive upload / console edit


   Functions api ──── workspace + snapshot ────► durable file storage

        │           buildpack recipe ─────────► image build

        │           one App per function ─────► instance lifecycle

   *.fns.xnr.app

   Functions edge ── static?    serve from storage, no pod, no cold start
        └────────── container? hold the request through the cold start, then proxy

Two ideas carry most of the behaviour you will notice:

A function is durable; a version is immutable. Every change produces a new version rather than mutating an existing one. That is what makes a rollback instant — promoting an older version rebuilds nothing — and what makes the deploy list a usable history.

Static functions never run a container. No image, no pod, no cold start: the edge serves files straight from an immutable snapshot. This is why environment variables, ports and system packages are refused on a static function rather than quietly stored.

What you never write

There are no Dockerfiles. Build recipes come from fixed per-language templates, and the only build input you control is a list of Debian package names — no version pins, no apt options, no shell. If your app needs ffmpeg, you declare ffmpeg; you do not get to run a command inside the shared builder.

On this page