{"id":24773473,"url":"https://github.com/slimplanet/slimfaas","last_synced_at":"2026-03-12T19:18:13.371Z","repository":{"id":176615299,"uuid":"610307777","full_name":"SlimPlanet/SlimFaas","owner":"SlimPlanet","description":"SlimFaas : The slimmest and simplest Function As A Service","archived":false,"fork":false,"pushed_at":"2025-04-21T19:12:59.000Z","size":8627,"stargazers_count":328,"open_issues_count":12,"forks_count":13,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-05-15T12:05:13.796Z","etag":null,"topics":["axa","faas","function","green","green-software","kubernetes","library"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SlimPlanet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-06T14:10:52.000Z","updated_at":"2025-05-13T08:10:14.000Z","dependencies_parsed_at":"2023-12-19T08:00:22.976Z","dependency_job_id":"2f757649-32f2-4721-bcd6-2f1a4bf7a67c","html_url":"https://github.com/SlimPlanet/SlimFaas","commit_stats":{"total_commits":31,"total_committers":3,"mean_commits":"10.333333333333334","dds":"0.16129032258064513","last_synced_commit":"589b2291cffe69cc05b96156b3d5db7128b37e3f"},"previous_names":["axafrance/slimfaas","slimplanet/slimfaas"],"tags_count":247,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimPlanet%2FSlimFaas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimPlanet%2FSlimFaas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimPlanet%2FSlimFaas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimPlanet%2FSlimFaas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SlimPlanet","download_url":"https://codeload.github.com/SlimPlanet/SlimFaas/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337613,"owners_count":22054253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axa","faas","function","green","green-software","kubernetes","library"],"created_at":"2025-01-29T05:00:30.232Z","updated_at":"2026-03-12T19:18:13.364Z","avatar_url":"https://github.com/SlimPlanet.png","language":"C#","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/SlimFaas.png?raw=true\" alt=\"SlimFaas\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\n    \u003ca href=\"https://slimfaas.dev\"\u003eGo to SlimFaas website\u003c/a\u003e\n  \u003c/h1\u003e\n\u003c/div\u003e\n\n# SlimFaas: The Slimmest, Simplest \u0026 Autoscaling-First Function-as-a-Service\n\n[![Continuous Integration](https://github.com/SlimPlanet/SlimFaas/actions/workflows/main.yml/badge.svg)](https://github.com/SlimPlanet/SlimFaas/actions/workflows/main.yml)\n[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=SlimPlanet_SlimFaas\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=SlimPlanet_SlimFaas)\n[![Reliability](https://sonarcloud.io/api/project_badges/measure?project=SlimPlanet_SlimFaas\u0026metric=reliability_rating)](https://sonarcloud.io/component_measures?id=SlimPlanet_SlimFaas\u0026metric=reliability_rating)\n[![Security](https://sonarcloud.io/api/project_badges/measure?project=SlimPlanet_SlimFaas\u0026metric=security_rating)](https://sonarcloud.io/component_measures?id=SlimPlanet_SlimFaas\u0026metric=security_rating)\n[![Code Coverage](https://sonarcloud.io/api/project_badges/measure?project=SlimPlanet_SlimFaas\u0026metric=coverage)](https://sonarcloud.io/component_measures?id=SlimPlanet_SlimFaas\u0026metric=Coverage)\n[![Docker SlimFaas](https://img.shields.io/docker/pulls/axaguildev/slimfaas.svg?label=docker+pull+slimfaas)](https://hub.docker.com/r/axaguildev/slimfaas/builds)\n[![Docker Image Size](https://img.shields.io/docker/image-size/axaguildev/slimfaas?label=image+size+slimfaas)](https://hub.docker.com/r/axaguildev/slimfaas/builds)\n[![Docker Image Version](https://img.shields.io/docker/v/axaguildev/slimfaas?sort=semver\u0026label=latest+version+slimfaas)](https://hub.docker.com/r/axaguildev/slimfaas/builds)\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/slimfaas)](https://artifacthub.io/packages/search?repo=slimfaas)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FSlimPlanet%2FSlimFaas.svg?type=shield\u0026issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2FSlimPlanet%2FSlimFaas?ref=badge_shield\u0026issueType=license)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FSlimPlanet%2FSlimFaas.svg?type=shield\u0026issueType=security)](https://app.fossa.com/projects/git%2Bgithub.com%2FSlimPlanet%2FSlimFaas?ref=badge_shield\u0026issueType=security)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/SlimPlanet/SlimFaas/badge)](https://scorecard.dev/viewer/?uri=github.com/SlimPlanet/SlimFaas)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10016/badge)](https://www.bestpractices.dev/projects/10016)\n\nSlimFaas is a lightweight, plug-and-play Function-as-a-Service (FaaS) platform for Kubernetes (and Docker-Compose / Podman-Compose).\nIt’s designed to be **fast**, **simple**, and **extremely slim** — with a very opinionated, **autoscaling-first** design:\n- `0 → N` wake-up from HTTP history \u0026 schedules,\n- `0 → N` wake-up from **Kafka lag** via the companion **SlimFaas Kafka** service,\n- `N → M` scaling powered by PromQL,\n- internal metrics store, debug endpoints, and scale-to-zero out of the box.\n- temporary **Data Files** endpoints to ingest and stage binaries (from tiny to very large) with TTL-friendly storage — perfect for caching \u0026 agentic workflows.\n- temporary **Data Sets** endpoints (`/data/sets`) to store small, Redis-like KV payloads (cache, JSON state, flags) with optional TTL — replicated through the cluster via a robust consensus layer.\n\n\u003e **Looking for MCP integration?**\n\u003e Check out **[SlimFaas MCP](https://slimfaas.dev/mcp)** — the companion runtime that converts *any* OpenAPI definition into MCP-ready tools on the fly.\n\n---\n\n## Why Use SlimFaas?\n\n### 🚀 Autoscaling that actually understands your traffic\n\n- **Scale-to-zero \u0026 wake-up**\n    - Scale down to `0` after inactivity with configurable timeouts.\n    - Wake up from `0 → N` based on real HTTP traffic and/or cron-like schedules.\n    - Wake up from `0 → N` based on **Kafka topic activity**, using **SlimFaas Kafka** to monitor consumer lag and call the SlimFaas wake-up API.\n    - Control initial capacity with `ReplicasAtStart` to reduce cold-start impact.\n\n- **Two-phase scaling model**\n    - **`0 → N`**: driven by HTTP history, schedules, **and Kafka lag (SlimFaas Kafka)** to bring functions online only when they’re needed.\n    - **`N → M`**: driven by a built-in PromQL mini-evaluator on top of an internal metrics store.\n    - Metrics-based autoscaling only runs when at least one pod exists — no reliance on non-existent metrics.\n\n- **PromQL-driven autoscaler**\n    - Express scaling rules with PromQL-style queries, for example:\n        - `sum(rate(http_server_requests_seconds_count{namespace=\"...\",job=\"...\"}[1m]))`\n        - `max_over_time(slimfaas_function_queue_ready_items{function=\"my-func\"}[30s])`\n        - `histogram_quantile(0.95, sum by (le) ( rate(http_server_requests_seconds_bucket{...}[1m]) ))`\n    - Choose whether thresholds are **per pod** (`AverageValue`) or **global** (`Value`).\n    - Configure scale-up/scale-down policies and stabilization windows inspired by HPA/KEDA.\n\n- **Integrated metrics scraping**\n    - SlimFaas scrapes only the Prometheus-style HTTP metrics endpoints of pods with `prometheus.io/scrape: \"true\"`.\n    - It stores only the **metric keys that are requested** in autoscaling triggers or debug queries.\n    - A single designated node scrapes and persists metrics; all other nodes read from the same store.\n\n- **Debug-friendly**\n    - `POST /debug/promql/eval` – evaluate a PromQL expression against the internal store and see the scalar result.\n    - `GET /debug/store` – inspect what metrics are being scraped, how many series exist, and retention size.\n    - Designed so you can easily answer: *“What does SlimFaas see when it decides to scale?”*\n\n- **FinOps-minded**\n    - 30-minute metrics retention window for predictable memory usage.\n    - Native scale-to-zero and schedules to keep non-critical workloads cold when they’re not needed.\n    - Slim control-plane footprint to avoid burning resources in your autoscaling logic itself.\n\n### 🧵 Synchronous and Asynchronous Functions\n\n- Simple HTTP endpoints for both **sync** and **async** calls.\n- Async mode:\n    - Limit the number of concurrent requests per function.\n    - Configure retry behaviors and backoff strategies.\n    - Drive autoscaling decisions from queue metrics.\n\n### ⏱ Jobs\n\n- Run **one-off**, **batch**, and **scheduled (cron)** jobs via HTTP calls.\n- Configure:\n    - concurrency,\n    - visibility (public/private),\n    - retry behavior.\n\n### 🔐 Private/Public Functions and Jobs\n\n- Mark functions as **public** or **private**:\n    - Private: only accessible from within the cluster or from trusted pods.\n    - Public: fronted by Ingress / API Gateways as usual.\n\n### 📣 Publish/Subscribe Internal Events\n\n- Synchronously send events to **every replica** of selected functions.\n- No additional event bus required — ideal for cluster-local fan-out, cache invalidation, configuration refresh, etc.\n\n### 🧰 Data Files \u0026 Data Sets (real-time ingestion + ephemeral caching + robust KV)\n\nSlimFaas includes two complementary “data” APIs:\n\n#### 📁 Data Files (temporary binary artifacts)\n\n**Data Files** endpoints are designed to **stream, store, and serve temporary files** — from tiny payloads to *very large* binaries.\nIdeal for **agentic workflows** and **real-time ingestion**: upload once, get an `id`, then let tools/functions consume it when they’re ready.\n\n- Stream-first uploads (without buffering in memory or disk)\n- **Agentic-ready** attachments \u0026 multi-step flows\n- **Ephemeral caching** for intermediate artifacts\n- **TTL-based** lifecycle (auto-expiration)\n\n#### 🧠 Data Sets (Redis-like KV for small state)\n\n**Data Sets** endpoints provide a **small, Redis-like KV store** (raw bytes) replicated across the SlimFaas cluster.\n\n- Stream-first uploads\n- Store **anything small**: JSON, strings, flags, lightweight cache entries\n- Optional `ttl` in **milliseconds** (auto-expiration)\n- Hard limit: **1 MiB per value**\n\n### 🧠 “Mind Changer” (Status \u0026 Wake-up API)\n\n- Built-in REST APIs to:\n    - monitor function and replica status,\n    - wake functions up on demand,\n    - integrate autoscaling state into your own tools/dashboards.\n\n### 🔌 Plug and Play\n\n- Deploy SlimFaas as a standard pod/StatefulSet with minimal configuration.\n- Onboard existing workloads simply by adding annotations:\n    - let SlimFaas manage their scaling without rewriting your applications.\n\n### ⚡ Slim \u0026 Fast\n\n- Written in .NET with:\n    - focus on performance and low memory footprint,\n    - AOT-friendly design,\n    - minimal dependency surface.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/slim-faas-ram-cpu.png?raw=true\" alt=\"SlimFaas CPU RAM\" /\u003e\n\u003c/div\u003e\n\n---\n\n## Ready to Get Started?\n\nCheck out:\n\n- [Get Started](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/get-started.md) – Learn how to deploy SlimFaas on Kubernetes or Docker Compose.\n- Scaling\n    - [Autoscaling](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/autoscaling.md) – Deep-dive into `0 → N` / `N → M` autoscaling, PromQL triggers, metrics scraping, and debug endpoints.\n    - [Kafka Connector](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/kafka.md) – Use Kafka topic lag to wake functions from `0 → N` and keep workers alive while messages are still flowing.\n    - [Planet Saver](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/planet-saver.md) – See how to start and monitor replicas from a JavaScript frontend.\n- Functions \u0026 Workloads\n    - [Functions](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/functions.md) – See how to call functions synchronously or asynchronously.\n    - [Events](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/events.md) – Explore how to use internal synchronous publish/subscribe events.\n    - [Jobs](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/jobs.md) – Learn how to define and run one-off jobs.\n    - [OpenTelemetry](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/opentelemetry.md) – Enable distributed tracing, metrics, and logs with OpenTelemetry integration.\n- Data \u0026 Files\n    - [Data Files](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/data-files.md) - Understand how to ingest, store, and serve temporary binary artifacts.\n    - [Data Sets](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/data-sets.md) - Store small, Redis-like KV payloads (cache, JSON state, flags) replicated across the cluster, with optional TTL.\n- [How It Works](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/how-it-works.md) – Dive into SlimFaas’s architecture and design.\n- [MCP](https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/mcp.md) – Discover how to convert *any* OpenAPI definition into MCP-ready tools on the fly.\n\nWe hope SlimFaas helps you **simplify autoscaling**, **reduce costs**, and **keep your serverless workloads slim**.\n\n---\n\n### Community \u0026 Governance\n\n- **CNCF Project**\n  SlimFaas is proud to be part of the [Cloud Native Computing Foundation (CNCF) landscape](https://landscape.cncf.io).\n\n  \u003cdiv align=\"center\"\u003e\n    \u003cimg alt=\"CNCF logo\" src=\"https://www.cncf.io/wp-content/uploads/2022/07/cncf-stacked-color-bg.svg\" width=\"200\"/\u003e\n  \u003c/div\u003e\n\n- **Community Meeting**\n  Join us through our [Community Meeting Calendar](https://calendar.google.com/calendar/embed?src=be1dd72d18650490580a7d5d96a45a6eebe0fc4c9fe8adce630754cbb6121cca%40group.calendar.google.com\u0026ctz=Europe%2FParis)\n    - [ICS file](https://calendar.google.com/calendar/ical/be1dd72d18650490580a7d5d96a45a6eebe0fc4c9fe8adce630754cbb6121cca%40group.calendar.google.com/public/basic.ics)\n\n- **Slack Channel**\n  Join our channel on the [CNCF Slack](https://cloud-native.slack.com/archives/C08CRC77VDE) to connect with other SlimFaas users.\n\n- **Code of Conduct**\n  SlimFaas follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).\n\nEnjoy SlimFaas!\n\n---\n\n## Adopters\n\nList of organizations using this project in production or at stages of testing.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/SlimPlanet/SlimFaas/blob/main/documentation/adopters_logo/AXA.png?raw=true\" alt=\"AXA\" /\u003e\n\u003c/div\u003e\n\n---\n\nAdd your logo via a pull request:\n\n- Logo must be at PNG format, `100 px width, and 100 px height`.\n- Add your logo to the `documentation/adopters` folder.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslimplanet%2Fslimfaas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslimplanet%2Fslimfaas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslimplanet%2Fslimfaas/lists"}