# Fn Project — Container-Native Serverless Functions Platform > An open-source container-native serverless platform that runs functions as Docker containers on any cloud or on-prem. ## Install Save in your project root: # Fn Project — Container-Native Serverless Functions Platform ## Quick Use ```bash # Install Fn CLI curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh # Start Fn server fn start # Create and deploy a function fn init --runtime go myfunc && cd myfunc fn deploy --app myapp --local fn invoke myapp myfunc ``` ## Introduction Fn Project is an open-source, container-native serverless platform originally created at Oracle. Every function runs inside a standard Docker container, which means any language or binary that can be packaged in a container can be used as a serverless function. It runs on any infrastructure — cloud, on-premises, or a laptop. ## What Fn Project Does - Runs serverless functions packaged as Docker containers on any infrastructure - Supports any programming language via Docker-based function development kits (FDKs) - Provides hot function containers that stay warm to reduce cold start latency - Includes a built-in flow orchestration service for composing multi-step workflows - Exposes a REST API and CLI for function management, invocation, and monitoring ## Architecture Overview The Fn server is a single Go binary that manages function lifecycle. When a function is invoked via HTTP, the server pulls the corresponding container image, starts it, and routes the request via stdin/stdout. Hot containers remain running between invocations to eliminate cold starts. The server stores function metadata in a SQL database (SQLite by default, MySQL/Postgres for production) and uses an LRU cache for container scheduling. ## Self-Hosting & Configuration - Single binary or Docker-based deployment with `fn start` - Configure a production database backend (MySQL or PostgreSQL) via environment variables - Set up an external Docker registry for multi-node deployments - Use `fn deploy` to push function images to a registry and register routes - Scale horizontally by adding Fn server nodes behind a load balancer ## Key Features - Language agnostic: any runtime that fits in a Docker container works - Hot functions: containers stay warm across invocations to reduce latency - Fn Flow: built-in orchestration for composing functions into workflows with error handling - Standards-based: uses OCI container images, no proprietary packaging format - Multi-cloud portability: runs identically on AWS, GCP, Azure, or bare metal ## Comparison with Similar Tools - **AWS Lambda** — managed serverless locked to AWS; Fn Project is self-hosted and cloud-agnostic - **OpenFaaS** — similar goals but uses a different function packaging model; Fn uses raw Docker containers - **Knative** — Kubernetes-native serverless requiring a K8s cluster; Fn runs standalone with Docker only - **Fission** — Kubernetes-focused with environment pooling; Fn is container-native without requiring K8s ## FAQ **Q: Does Fn Project require Kubernetes?** A: No. Fn runs directly on Docker. However, it can optionally be deployed on Kubernetes for orchestration. **Q: How are cold starts handled?** A: Fn keeps hot containers alive between invocations. Frequently called functions avoid cold starts entirely. Idle containers are reclaimed after a configurable timeout. **Q: What languages are supported?** A: Fn provides official FDKs for Go, Java, Python, Ruby, Node.js, and C#. Any language that runs in a Docker container can be used without an FDK. **Q: Is Fn Project still maintained?** A: The project is available on GitHub with community contributions. It is used in production at Oracle Cloud Infrastructure as the basis for Oracle Functions. ## Sources - https://github.com/fnproject/fn - https://fnproject.io --- Source: https://tokrepo.com/en/workflows/asset-4ac5ae50 Author: AI Open Source