Turn any Kubernetes cluster into a private serverless platform (Cloud Run / Functions / Tasks).
Project description
_____ _ _
| ____| |_ __ (_) ___
| _| | | '_ \| |/ _ \
| |___| | |_) | | (_) |
|_____|_| .__/|_|\___/
|_|
Turn any Kubernetes cluster into a private serverless platform.
Elpio is an installable, self-hosted Cloud Run / Cloud Functions / Cloud Tasks for your own Kubernetes — scale-to-zero, request-driven autoscaling, simplified cluster + node autoscaling, and a clean multi-tenant model. GKE-first, portable by design (EKS / AKS / k3s).
Elpio is an Altikva open-source product (MIT for code, CC-BY-4.0 for docs). The name is a coined mark rooted in Greek elpis ("hope") — part of the Altikva family lineage ha-tikva (Hebrew) → Spero (Latin) → Elpio.
Status: alpha (v0.1.0). All four reconcilers ship:
ElpioService(Knative/KEDA serving),ElpioFunction(Tekton + Buildpacks),ElpioTask(KEDA + broker), andElpioTenant(namespace, RBAC, quotas, network isolation). Alongside them: OIDC auth, an admission webhook, a multi-cluster management API, a Helm chart, and CI. CRs emitstatus.conditions, so the sibling agent Spero can supervise and heal them. The kind-based e2e harness is wired and gated behindELPIO_E2E=1.
Why
Elpio does not reimplement a serverless runtime. It's the opinionated, enterprise control plane that assembles proven CNCF primitives — Knative, KEDA, Tekton, cert-manager, Karpenter — behind a declarative CRD/operator model. Its value is the enterprise wrapper the public clouds don't give you: on-prem security integration, hard multi-tenancy, golden-path config, fleet management, and a one-command installer.
How it works
You declare an ElpioService; the operator reconciles it onto a serving engine. No SSH, no
imperative kubectl apply scripts — just Kubernetes-native reconciliation.
apiVersion: elpio.io/v1alpha1
kind: ElpioService
metadata:
name: hello
spec:
image: ghcr.io/knative/helloworld-go:latest
scaling: { minScale: 0, maxScale: 10, target: 100, metric: concurrency }
| CRD | Equivalent | Engine |
|---|---|---|
ElpioService |
Cloud Run | Knative Serving (default) or KEDA |
ElpioFunction |
Cloud Functions | Tekton + Buildpacks → ElpioService |
ElpioTask |
Cloud Tasks | KEDA + broker + dispatcher |
The serving engine is a strategy (ELPIO_ENGINE=knative|keda) behind one stable CRD —
Knative for the highest Cloud Run parity, KEDA for a lighter footprint.
Quickstart
pip install elpio # the elpio CLI
# point kubectl at any cluster (kind, minikube, GKE, EKS, ...) that has a
# serving engine installed — Knative Serving (default) or KEDA.
elpio install # applies the CRDs + operator
elpio deploy -f hello.yaml # the ElpioService shown above
elpio services
Working from a clone instead? task e2e-up provisions kind + Knative/KEDA, and
task operator-run runs the operator locally (kopf run -m elpio.operator.handlers).
Development
task dev # editable install + dev deps
task unit # unit tests (no cluster)
task lint # ruff
task e2e # end-to-end (needs a kind cluster + Knative/KEDA)
Layout
src/elpio/
models/ ElpioService spec (Pydantic mirror of the CRD)
engines/ serving-engine strategy: base + knative + keda
providers/ portability seams: StateStore, IdentityProvider
operator/ kopf reconciler
cli.py the `elpio` command
deploy/ CRDs + operator manifests (+ Helm)
docs/ architecture & guides
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elpio-0.1.0.tar.gz.
File metadata
- Download URL: elpio-0.1.0.tar.gz
- Upload date:
- Size: 161.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e896f63358f35377b35e2aed7125907c16f56dd2a71238d98c75486447a0649
|
|
| MD5 |
f547a262903148ffaec21fb1eded5ed0
|
|
| BLAKE2b-256 |
9b046b37336251ba48a41eb65e5111d9e14150304131a6a8b388e170f4345b97
|
Provenance
The following attestation bundles were made for elpio-0.1.0.tar.gz:
Publisher:
release.yml on altikva/elpio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elpio-0.1.0.tar.gz -
Subject digest:
6e896f63358f35377b35e2aed7125907c16f56dd2a71238d98c75486447a0649 - Sigstore transparency entry: 1739325294
- Sigstore integration time:
-
Permalink:
altikva/elpio@5b67112cafce2dafa88914a39a2e471b251a5acb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/altikva
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5b67112cafce2dafa88914a39a2e471b251a5acb -
Trigger Event:
push
-
Statement type:
File details
Details for the file elpio-0.1.0-py3-none-any.whl.
File metadata
- Download URL: elpio-0.1.0-py3-none-any.whl
- Upload date:
- Size: 52.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0deda63464795c0dbf974cfe6093006b6aea56f825c56093c5a35e0c532d5816
|
|
| MD5 |
5d392b0a5a2195e25ae3660ae5aae76e
|
|
| BLAKE2b-256 |
ff958e6e8185dda100ccd055ad00554d59b729828f21016c8d868d6109a140ca
|
Provenance
The following attestation bundles were made for elpio-0.1.0-py3-none-any.whl:
Publisher:
release.yml on altikva/elpio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elpio-0.1.0-py3-none-any.whl -
Subject digest:
0deda63464795c0dbf974cfe6093006b6aea56f825c56093c5a35e0c532d5816 - Sigstore transparency entry: 1739325298
- Sigstore integration time:
-
Permalink:
altikva/elpio@5b67112cafce2dafa88914a39a2e471b251a5acb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/altikva
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5b67112cafce2dafa88914a39a2e471b251a5acb -
Trigger Event:
push
-
Statement type: