Functions, multi-file projects, containers and WebAssembly on Knative — on your own Kubernetes clusters, with a Sandbox API, durable workflows, GPUs and MCP built in. No per-request fees. No lock-in.
The RunR console: the projects of an organization, with type, runtime, region, status and last deployment.
One platform, three deployment models — all scaling to zero on Knative. Deploy from the web editor, with git push or from the CLI; trigger by HTTP, schedule, queue or workflow.
One file, one function. Write or paste code in the web editor and hit deploy.
Multi-file projects — in the web IDE or from your own git repository. Every save and every push is a version in the project's git repository; dependencies are built in-cluster.
Any container image: from a registry, from an uploaded docker save archive or as a GPU workload. Optional Kata micro-VM isolation.
Write a single-file function in the browser. Deploy ships that version to Knative; the history keeps every one, ready to roll back.
URL, status, the latest versions, requests and errors of the last hours, and the tabs for code, deployments, triggers, environments, logs and metrics.
Deploy, events, environments, data, networking, access control, supply chain, observability, multi-tenancy and billing calculation — all in the same open-source install. Not a single feature behind a paywall.
Every project has its own git remote: push, and it deploys. GitHub App, GitLab and Forgejo / Gitea connections come with commit statuses and a deploy history.
runr CLI: init · dev · deploy and commands for every featurebrf-tech/runr provider on the Terraform Registry, a GitHub Action and a GitLab CI/CD jobdocker save, OCI tars, .wasm — also for regions without internetEvery project has a list of triggers: HTTP, schedules in a time zone, queues, a webhook inbox, fan-out topics and platform events. The project's event gateway delivers each event as a CloudEvent, with retries and dead letters.
A project runs in several environments, each with its own URL, configuration overrides, secrets, bindings and region. Promotion moves the same image to the next environment after a preview of what changes; promotions into production wait for approval.
Projects of a region call each other by name on an internal network, admitted only by the callee's allow list. A project is public, public to an IP allow list, or internal only.
Bindings attached to projects: managed KV (Redis), object storage (Garage or an external S3) and Postgres (CloudNativePG). Credentials arrive as environment variables, with rotation, retention and restore.
runr-workflows) and TypeScript (@runr/workflows) SDKsOne permission catalog: built-in and custom roles, groups, per-project access and API tokens limited to a subset of their owner's permissions. SSO groups map to RunR groups and roles.
Every image RunR builds or receives gets an SBOM (SPDX, CycloneDX), a vulnerability scan (also with an offline database) and a cosign signature with the region's key.
An OpenTelemetry Collector and Grafana Tempo per region (or your existing backend), auto-instrumented functions and a Traces tab with search and waterfall; metrics and logs per project.
A PostgreSQL schema per tenant, quotas per region. The brand of the installation and of each tenant without a rebuild; self-service signup with e-mail verification.
Scenes from a RunR 0.6 installation. Each one is a feature of the same open-source install; the documentation page of every feature is linked.
Pick a strategy per function. Blue-green starts the new revision next to the serving one, with 0 % of the traffic and a test URL of its own, then moves all traffic at once: by hand, or by itself once the health check passes. Canary raises the new revision's share in steps (10 % → 50 % → 100 % by default); when its error rate or p95 latency crosses the threshold during a step, the rollout rolls back on its own.
A project runs in several environments, each with its own URL, configuration overrides, secret variables, bindings, custom domains, git branch and region. Promotion moves the same code version and image to the next environment, never built again, with the target's own configuration; a preview shows what will change, and promotions into production wait for an approver by default.
A global project runs in several regions behind one host name. In HA mode the primary region answers while it is healthy and the others take over when it is not; in proximity mode the healthy region closest to the client answers. When the primary fails, RunR fails over to the next healthy region: the Postgres replica there is promoted, and the triggers and the DNS follow.
HTTP, schedules in a time zone, queues, a webhook inbox with signature presets, fan-out topics, platform events, and brokers and external sources: Kafka, NATS JetStream, RabbitMQ, MQTT, Postgres change data capture, S3 buckets and e-mail over IMAP. The project's event gateway delivers each event as a CloudEvent with retries and a dead letter; a message is acknowledged only once it is delivered or dead-lettered.
A workflow is an ordinary function in a project, written step by step. Every step's result is recorded, so a run continues where it left off after a crash or a redeploy; a workflow can sleep for ten minutes or ten days, wait for an event, retry a failing step and call other workflows. The console shows every run with its steps and timings.
runr-workflows) and TypeScript (@runr/workflows) SDKs
Every image RunR builds or receives gets an SBOM (SPDX and CycloneDX, attached as OCI referrers), a vulnerability scan that also works with an offline database, and a cosign signature with the region's key. A policy gate decides before deploy, and the region admits only signed images. Secret variables never land in RunR's database: they live in the region's Kubernetes Secrets or in an OpenBao RunR runs there, or stay in your own HashiCorp Vault / OpenBao, AWS Secrets Manager, GCP Secret Manager or Azure Key Vault, read with the region's identity.
Build and rollout steps stream into the console as they happen; every change is a version you can roll back.
Live log lines next to request, latency and replica charts; traces with a waterfall in the Traces tab, request replay for failed calls.
One permission catalog, built-in and custom roles, groups, per-project access and API tokens scoped to a subset of their owner's permissions.
Paste a kubeconfig. RunR installs Knative Serving, Traefik, the Zot registry, Redis, Prometheus, Loki and its region agent on the cluster, and keeps them current.
Write the handler, not the Dockerfile. RunR takes your source — a single file or a whole project, from the web editor, git push or the CLI — installs its dependencies, compiles Go, builds the image inside your cluster with Kaniko and hands it to Knative.
Every change: build an image, push it, roll it out.
RunR installs dependencies, compiles Go, builds the image in-cluster with Kaniko and ships it to Knative.
git push — every change is a versionrunr deploy or let the push deployBehind the scenes: dependency install or Go compile → Kaniko build as a Kubernetes Job (linux/amd64) → push to the region's registry → Knative revision. Code without dependencies skips the build and goes live straight from a ConfigMap.
⚡ ~3 s (no dependencies) · ~23 s (with a build) / changeRunR measurement: v0.4.2, single-node k3s (8 vCPU, 16 GB); median from save until the new code answers (n=3). No dependencies 2.7 s (2.7–3.7 s); with a build 23.0 s (22.0–25.0 s; Kaniko, Node + 1 npm dependency, base images from the region registry cache). A project's first-ever build adds a one-time base-image fetch.
Runtime images track upstream: every version that hasn't reached end-of-life is available, and each project picks its own.
A runtime is a runtime.yaml manifest plus an image. The universal wrapper (runr-wrapper) turns HTTP requests, queue messages and schedule ticks into invocations over stdin / stdout, in http, exec or persistent mode. Platform administrators and organizations register their own runtimes; runr dev runs them locally on the same images.
Wasm functions run as Spin components on runwasi's Spin shim, installed per region in one click from its Isolation tab. wasm-exec runs any WASI command on Spin's WAGI executor.
RunR measurement: v0.5.0, 2026-10-15, single-node k3s v1.34.11 on a test VM (8 vCPU Broadwell, nested KVM, 15.6 GiB), Knative 1.21.3; Spin shim, 250m / 128 MiB, image on the node, RunR's default scale-to-zero; HTTPS from inside the VM through Traefik, a new connection per request; median (p90) from zero replicas to the first full HTTPS response, n=12 each: Rust 1.54 s (1.84), JavaScript 2.12 s (2.58); warm request median 9 / 11 ms (n=100).
RunR detects GPU nodes, serves Hugging Face models in one click, gives AI agents permission-scoped access over MCP and runs the code they write in isolated sandboxes.
Detects the NVIDIA GPU nodes of a region, installs the device plugin or the GPU Operator and schedules GPU functions and containers there — scaling to zero, metered by GPU time.
config.gpu: count · product · minimum GPU memory
One-click model services from a Hub browser — vLLM, TGI, TEI, RunR's hf-serve or your own image — online or fully offline.
RUNR_MODEL_<ALIAS>_* variables in any language
A built-in MCP server at /mcp: agents such as Claude Code operate RunR within their token's permissions, and every call is audited. MCP clients connect with an API token or one-click OAuth 2.1.
Isolated, short-lived sandboxes for the code AI agents write: under the region's strongest isolation (a Kata micro-VM on nodes with KVM, otherwise gVisor), without network access by default, with their own CPU, memory and disk limits.
runr sandbox exec -itrunr-sandbox) and TypeScript (@runr/sandbox) SDKs
Browse the Hub in the console and deploy a model service with vLLM, TGI, TEI or hf-serve, online or fully offline, then try it in the playground.
The built-in MCP server at /mcp for agents, and your own MCP servers hosted behind the gateway with public, token or OAuth access, a call log and an inspector.
Running sandboxes with their class (gVisor or Kata), warm pools and quotas; exec, files, background processes and a code interpreter over the API and the SDKs.
RunR measurement: v0.5.0, 2026-10-15, single-node k3s v1.34.11 on a test VM (8 vCPU Broadwell, nested KVM, 15.6 GiB), Knative 1.21.3, gVisor 20260921.0, Kata Containers 3.28.0; Sandbox API (POST /api/sandboxes, called from inside the VM), Python 3.14, 500m / 512 MiB, image on the node; timed until the first command returns, median (p90), n=10 per class — cold: gVisor 2.01 s (3.79), Kata Firecracker 2.99 s (4.00), Kata Cloud Hypervisor 4.01 s (4.07); from a warm pool of 2: Kata Firecracker 0.28 s (0.30), Kata Cloud Hypervisor 0.34 s (0.61), gVisor 0.36 s (0.40). A command in a running sandbox: 0.16–0.22 s.
Cloud-provider ergonomics, with the freedom of open source.
All code under the MIT license. Self-host, fork, modify. Nothing is locked behind a paywall.
MIT license · BRF TeknolojiKnative-powered: idle pods scale to zero. Replicas reach zero ~60 s after the last request and the pod is gone by ~93 s (RunR v0.4.2 measurement; Knative defaults: 60 s stable window + 30 s grace period). Idle functions hold no resources; the capacity is freed for other workloads.
A region admits scale-to-zero projects against an overcommit budget — by default 3× its CPU and 1.5× its memory, set per region — while always-on projects reserve their full size.
Schema-per-tenant isolation and quotas per region; built-in and custom roles, groups, SSO group mapping and scoped API tokens.
Chosen per project type in each region: gVisor for syscall-level isolation, Kata Containers micro-VMs (Cloud Hypervisor, QEMU, Dragonball, Firecracker; on nodes with hardware virtualization) or plain runc.
Standard Knative APIs, OCI images and MIT-licensed code. Your workloads move to any Kubernetes that runs Knative, and the platform itself is yours too.
Install the platform with its Helm chart or with Docker Compose on a single host (air-gapped too), then add as many Kubernetes clusters as you like as regions with their kubeconfig — in the console or with runr regions create.
Each region maps XaaS, FaaS, CaaS and build jobs to a container runtime of their own via RuntimeClass: runc by default, gVisor or Kata once installed. gVisor intercepts syscalls, Kata runs each pod in its own micro-VM, and Firecracker (the same Lambda uses) is the most minimal micro-VM of them. The same isolation protects the sandboxes of the Sandbox API.
Google · User-space kernel · runsc shim
Kata Containers · Cloud Hypervisor · kata-clh shim
AWS · Rust · firecracker-containerd
RunR measurement: v0.5.0, 2026-10-15, single-node k3s v1.34.11 on a test VM (8 vCPU Broadwell, nested KVM, 15.6 GiB), Knative 1.21.3, gVisor 20260921.0, Kata Containers 3.28.0; function 250m CPU / 256 MiB, image on the node, RunR's default scale-to-zero; HTTPS from inside the VM through Traefik, a new connection per request; median (p90) from zero replicas to the first full HTTPS response, n=12 each, Python — runc 1.50 s (2.14); gVisor 1.97 s (2.64); Kata Cloud Hypervisor 3.11 s (3.25), Firecracker 3.21 s (3.47; root filesystem on containerd's devmapper snapshotter), QEMU 3.89 s (4.45), Dragonball 3.95 s (4.04). Kata was measured with Python only. Warm request median 9–12 ms (n=100). Memory overhead was measured with earlier releases on the same test VM: ~130–150 MiB for Cloud Hypervisor (RunR v0.4.2) and ~145–155 MiB for Firecracker (RunR v0.4.3), the host PSS of shim + VMM (+ virtiofsd with Cloud Hypervisor) per idle Kata pod, minus the function's own memory in the guest.
Each region maps XaaS, FaaS, CaaS and build jobs to a runtime of their own — runc by default, gVisor or any Kata hypervisor as soon as it is installed. On deploy the Knative manifest gets the matching runtimeClassName (gvisor, kata-clh, kata-qemu, kata-dragonball, kata-fc) automatically; WebAssembly functions run on the Spin shim with wasmtime-spin-v2.
Sandbox pods can't reach ClusterIP services from the host-net namespace by default (Cilium upstream bug). RunR auto-applies bpf-lb-sock-hostns-only: true on the cluster — non-disruptively, on a running cluster.
The control plane — Vue SPA, Laravel API on Octane, queue workers, scheduler and WebSocket server, behind one gateway — ships as a Helm chart or a single-host Compose install. RunR then installs Knative Serving, Traefik, the Zot registry, sandboxes, the Spin shim, GPU support, data services and the observability stack on every region cluster for you.
Write code in the web editor, git push or start with runr init — pick a runtime, RunR handles the rest.
Every change is a version, built automatically when needed. One click, a push or runr deploy puts that version live on Knative.
Auto scale-to-zero and scale-out. Reacts to traffic in seconds.
Live logs, metrics, traces and cost tracking. Prometheus, Loki and OpenTelemetry built in.
Bare Knative, Knative Functions, OpenFaaS, AWS Lambda and Vercel, feature by feature, from their own documentation.
| FEATURE | RunR | Knative (bare) | Knative Functions | OpenFaaS | AWS Lambda | Vercel |
|---|---|---|---|---|---|---|
| License | MIT, every feature | Apache-2.0 (CNCF) | Apache-2.0 | CE: EULA, commercial use one installation per company for up to 60 days · Standard / Enterprise paid | Proprietary | Proprietary |
| Where it runs | Your Kubernetes clusters: bare metal, private or managed, air-gapped too | Your Kubernetes cluster | Your Knative cluster | Your Kubernetes cluster, or one host with faasd | AWS only | Vercel's cloud only |
| Console | Web console: editor, logs, metrics, traces, shell, every setting | kn CLI and YAML | func CLI | Dashboard in Standard / Enterprise | AWS Console | Dashboard |
| From source, no Dockerfile | Web editor, git push or CLI; built in-cluster with Kaniko | Container images only | func build: Node.js, Python, Go, Quarkus, Rust, Spring Boot, TypeScript templates | faas-cli build with templates (local Docker); builder API in Enterprise | Zip for managed runtimes, or a container image | Framework builds from git |
| Container images | Any OCI image (CaaS); uploads for air-gapped regions | Yes | Functions build to images | Yes (functions are images) | Yes, up to 10 GB | Container runtime for functions (beta); Daemons (beta) |
| WebAssembly | Spin shim: Rust, TinyGo, JS / TS, Python; wasm-exec for any WASI command | With a Wasm RuntimeClass you set up | — | — | — | Edge runtime: Wasm modules |
| Scale to zero | Yes (Knative) · measured cold start 1.5–1.7 s (runc), 2.0 s (gVisor), 3.1–4.0 s (Kata) | Yes | Yes (Knative) | Standard / Enterprise | Yes | Yes (Fluid compute) |
| Sandboxing | runc, gVisor or Kata (Cloud Hypervisor, QEMU, Dragonball, Firecracker) per project type, installed from the console | The cluster's RuntimeClass, set up by you | The cluster's RuntimeClass, set up by you | runtimeClassName through Profiles: Enterprise | Firecracker, managed by AWS | Managed; Sandbox runs Firecracker microVMs |
| Event sources | HTTP, schedules, queues, webhooks, topics, Kafka, NATS, RabbitMQ, MQTT, Postgres CDC, S3, IMAP; CloudEvents with retries and dead letters | Knative Eventing: Kafka, RabbitMQ, Redis, GitHub, GitLab, Ping, API server and more | CloudEvent functions behind Knative Eventing | Kafka, RabbitMQ, Pub/Sub, Postgres, SNS / SQS connectors in Standard | SQS, Kinesis, DynamoDB Streams, EventBridge, S3, MSK and self-managed Kafka, MQ | HTTP, Cron Jobs, Queues |
| Durable workflows | Built in: steps, retries, timers, events, child workflows; Python and TypeScript SDKs | — | — | — | Lambda durable functions; also AWS Step Functions | Vercel Workflows |
| Environments and promotion | dev, staging, production per project; promotion of the same image, with approval | Namespaces | Namespaces | Namespaces (several in Enterprise) | Versions and aliases | Preview and Production; custom environments on Pro / Enterprise |
| Blue-green / canary | Blue-green with a test URL; canary in steps with automatic rollback on error rate or p95 latency | Traffic split by revision; time-based gradual rollout; no metric-based rollback | Through Knative traffic splitting | — | Weighted aliases; canary / linear with alarm rollback through CodeDeploy | Rolling Releases (Pro / Enterprise): staged shares, you advance or abort; Instant Rollback |
| Multi-region projects | Global projects: one host name, HA or proximity mode, failover with Postgres replicas | — | — | — | Per region; multi-Region endpoints for Web Functions (latency routing, no health-based failover) | Edge network; function regions |
| Tenancy, RBAC, SSO | Organizations and tenants, roles, groups, scoped tokens; SSO with Google, GitHub, Microsoft, GitLab, OIDC, SAML | Kubernetes namespaces and RBAC | Kubernetes namespaces and RBAC | Multiple namespaces, IAM and SSO in Enterprise | AWS IAM | Teams and roles; SAML SSO on Enterprise |
| Supply chain | SBOM, scans (offline too), cosign signatures, policy gate, signed-image admission | — | — | — | Code signing (AWS Signer) | — |
| GPUs and models | GPU functions and containers; Hugging Face model services (vLLM, TGI, TEI); model bindings | Kubernetes GPU resources | — | GPU through Profiles (paid editions) | — | — |
| MCP | Built-in MCP server at /mcp; hosting for your own MCP servers | — | — | — | Your own, as a function | Vercel MCP; host your own with mcp-handler |
| Infrastructure as code | Terraform / OpenTofu provider brf-tech/runr, runr CLI, GitHub Action, GitLab CI job | Kubernetes manifests | func.yaml + func CLI | stack.yaml + faas-cli | AWS provider, SAM, CDK | Terraform provider vercel/vercel, CLI |
| Pricing | Free software; you pay only your own infrastructure | Free; your cluster | Free; your cluster | CE free within its limits (15 functions, 60-day commercial trial); Standard / Enterprise subscriptions | $0.20 / 1M requests + $0.0000166667 / GB-s (us-east-1, 2026-10-01) | Hobby free; Pro $20 / developer / month + usage (2026-10-01) |
One at a time, with sources: RunR vs Google Cloud Run · RunR vs AWS Lambda · RunR vs Vercel · RunR vs Knative · RunR vs OpenFaaS
Compiled from each project's public documentation on 2026-11-02 (links below); paid-edition notes follow the vendors' own edition pages, and “—” means the documentation describes no such feature. Knative is a CNCF project; OpenFaaS, AWS Lambda and Vercel are trademarks of their owners. RunR is not affiliated with or endorsed by any of them.
Sources, read on 2026-11-02: Knative rollouts · Knative Eventing sources · Knative Functions · OpenFaaS editions · OpenFaaS Profiles · OpenFaaS pricing · Lambda container images · Lambda alias routing · Lambda event sources · Lambda code signing · Lambda pricing · Vercel Rolling Releases · Vercel environments · Vercel Sandbox · Vercel Daemons · Vercel pricing · read on 2026-11-03: OpenFaaS CE EULA · Lambda durable functions · Lambda Web Functions endpoints · Vercel Container runtime · Vercel Workflows
RunR measurement: v0.5.0, 2026-10-15, single-node k3s v1.34.11 on a test VM (8 vCPU Broadwell, nested KVM, 15.6 GiB), Knative 1.21.3, gVisor 20260921.0, Kata Containers 3.28.0; function 250m CPU / 256 MiB (container 500m / 512 MiB, WebAssembly 250m / 128 MiB), image on the node, RunR's default scale-to-zero; HTTPS from inside the VM through Traefik, a new connection per request; median from zero replicas to the first full HTTPS response, n=12 each — runc: Python 1.50, Go 1.54, Node.js 1.62, PHP 1.65 s, container (CaaS) 1.57 s; gVisor: Python 1.97 s; Kata (Python only): Cloud Hypervisor 3.11, Firecracker 3.21, QEMU 3.89, Dragonball 3.95 s; WebAssembly: Rust 1.54, JavaScript 2.12 s; warm request median 9–12 ms (n=100). The pricing row: official pricing pages as of 2026-10-01 (USD, excluding tax and data transfer); regions and source links in the note below.
5M requests/month · 2 GB, 1 vCPU, 3 s each · per request 2 MB read + 1 MB written to object storage (kept 30 days) · 500 KB response · 1 KB log · list prices, USD, 2026-10-01
Software: $0
RunR is software, not a hosted service: no per-request, ms×memory, API gateway or log-ingestion fees. It runs on the infrastructure you already have (bare metal or your cloud installation), so you pay only that infrastructure, whatever it costs you. Data that stays in your own data center pays no hyperscaler egress or storage fees.
≈ $876 / mo
Lambda ms×GB $501 (30M GB-s + 5M requests) · egress $225 (2,500 GB × $0.09) · S3 storage + requests $142 · API Gateway $5 · CloudWatch logs $3 (us-east-1)
≈ $890 / mo
Cloud Run vCPU-s + GiB-s $437 (1 vCPU, 2 GiB, 15M s + 5M requests) · egress $285 (2,500 GiB × $0.12–0.11) · Cloud Storage + operations $127 · load balancer $38 · logs $3 (us-central1)
≈ $1,142 / mo
Flex Consumption ms×GB $782 (30M GB-s × $0.000026 + 5M runs) · egress $217.50 (2,500 GB × $0.087) · Blob storage + operations $131 · Log Analytics $11.50 (East US; Flex, as Consumption stops at 1.5 GB)
Light API (1M requests, 256 MB, 200 ms, 5 KB responses): $2.58–$2.75 a month in full on AWS, Azure or Cloud Run's default URL, and the free tiers cover nearly all of it — small APIs are nearly free on the hyperscalers. Heavy workload above: each request is 1 GET + 1 PUT, results kept 30 days (→ 5,000 GB stored), 500 KB out (→ 2,500 GB egress), one request per instance (CPU-bound) and the same duration everywhere; month = 730 h; free tiers not deducted (they would remove $18.52 on AWS, $8.78 on Google Cloud, $22.90 on Azure). HTTP entry: API Gateway HTTP API (AWS), the external Application Load Balancer Google recommends for production custom domains, the function app's own hostname with a free managed certificate (Azure); storage over a free private path (S3 gateway endpoint, Private Google Access, Storage service endpoint); GiB-priced lines use the GB figures. Excluded: tax, support plans, backups, WAF, KMS, cross-zone traffic. Regions: AWS us-east-1 (x86 / Linux), GCP us-central1, Azure East US.
Sources (official pricing pages and documentation, read on 2026-10-01): AWS Lambda · API Gateway · S3 · CloudWatch · AWS VPC · Google Cloud Run · GCP network · Cloud Load Balancing · Cloud Storage · Cloud Logging · Cloud Run custom domains · Azure Functions · Flex Consumption · Azure Functions limits · Azure bandwidth · Azure Blob Storage · Azure Monitor · Azure Retail Prices API · Vercel Functions · Vercel plans
See how much work it takes to migrate your existing workloads to RunR.
Handlers map 1:1 to XaaS. Remove AWS SDK, paste, deploy.
Small code changesCloud Run is Knative — RunR IS Knative. Containers work as-is.
No code changesStrip SDK bindings, convert to standard HTTP handlers.
Moderate code changesStandard Node.js handlers. Copy to FaaS, add package.json, deploy.
Small code changesContainerize, deploy as CaaS. Scale-to-zero included; idle capacity goes back to other workloads.
Add a DockerfileEach service becomes a CaaS project. Same image, same env. Now with auto-scale.
No code changesTask definitions are already container specs. Same image, point to CaaS.
No code changesStandard Docker works as-is. No fly.toml or render.yaml needed.
No code changesYour images are ready. Deploy from UI, skip the YAML.
No code changesRunR is software you install, not a hosted service: the control plane and every region run on infrastructure you operate — bare metal, a private cloud or managed Kubernetes, connected or air-gapped.
The control plane as one Helm chart: gateway, UI, API, workers, scheduler and Reverb, plus PostgreSQL and Redis unless you point it at your own.
The chart is in BRF's public Helm repository: no credentials needed, and domain is the only required value.
helm repo add brf-tech https://helm.brf.sh
helm repo update
helm upgrade --install runr brf-tech/runr \
-n runr --create-namespace \
--set domain=runr.example.com
Helm install guide →
A production install on one machine: compose/build.sh builds the images from the release tag; air-gapped hosts get them as runr-images.tar.
git clone -b v0.6.3 \
https://github.com/BRF-Tech/runr.git
cd runr && bash compose/build.sh
cd compose && cp .env.example .env
cp api.env.example api.env # + APP_KEY
docker compose up -d
docker compose run --rm migrator
Single-host install guide →
Scaffold, run locally on the runtime images and deploy. One command installs it; binaries and checksums are on runr.sh/dl.
curl -fsSL https://runr.sh/install.sh | sh
runr login https://runr.example.com
runr init hello --runtime python
cd hello
runr dev # localhost:8080
runr deploy
Download the CLI →
Projects, variables, domains, deployments, bindings, runtimes, workflow triggers, models, MCP servers, roles and branding — as code.
terraform {
required_providers {
runr = {
source = "brf-tech/runr"
version = "~> 0.6"
}
}
}
Terraform provider →
Deploy on every push and run preview environments for pull / merge requests: the ready-made Action on GitHub, a job that installs the CLI and runs runr deploy on GitLab CI/CD.
# GitHub Actions: secrets RUNR_API_URL, RUNR_TOKEN
- uses: brf-tech/runr/actions/deploy@v0.6.3
with:
api-url: ${{ secrets.RUNR_API_URL }}
token: ${{ secrets.RUNR_TOKEN }}
path: ./functions/orders
# GitLab CI/CD: variables RUNR_API_URL, RUNR_TOKEN
deploy:
image: alpine:3.21
script:
- apk add --no-cache curl tar
- curl -fsSL https://runr.sh/install.sh | sh
- runr deploy ./functions/orders
The architecture, a page for every feature, upgrade notes between releases and the changelog — at runr.sh/docs.
RunR is developed by BRF Teknoloji and open source under the MIT license; nothing sits behind a paywall. Run it on your own clusters, on your own terms — fork it, change it, contribute.
git push, from the CLI, Terraform or a GitHub Action — with sandboxes, durable workflows, bindings, GPUs and MCP built in. Think of it as your own AWS Lambda + ECS, on Kubernetes clusters you control.
helm repo add brf-tech https://helm.brf.sh, chart brf-tech/runr; Helm install), on a single host with Docker Compose (single-host guide). The runr CLI installs with curl -fsSL https://runr.sh/install.sh | sh or downloads from runr.sh/dl; the Terraform provider is brf-tech/runr on the Terraform Registry (runr.sh/brf-tech/runr for OpenTofu). Details in the install section above and in the documentation.
git push deploys, sandboxes, live logs and traces, roles, billing calculation, multi-tenancy — all included.
helm upgrade.
New RunR releases and important announcements in your inbox. No spam, just the important stuff.
Your email is only used for RunR updates. Unsubscribe anytime.
Capacity-based pricing, dedicated support, SLA guarantees, and custom deployment.
We'll get back to you within 48 hours.