explaingit

fnproject/fn

5,935GoAudience · ops devopsComplexity · 4/5Setup · moderate

TLDR

Fn is an open-source Functions-as-a-Service platform that runs code in Docker containers on your own server or any cloud, supporting Go, Node.js, Python, Java, and AWS Lambda imports with no server management.

Mindmap

mindmap
  root((Fn FaaS))
    Core concept
      Docker containers
      Any language
      Self-hostable
    Supported languages
      Go
      Node.js
      Python
      Java
    Features
      Lambda import
      Flow chaining
      Web UI
      Load balancer
    Audience
      DevOps engineers
      Backend developers
      Self-hosters
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Deploy serverless functions on your own server instead of a cloud provider, using any programming language Docker supports.

USE CASE 2

Import and run existing AWS Lambda functions on Fn without rewriting them using Fn's Lambda compatibility layer.

USE CASE 3

Build a workflow that chains multiple Fn functions together using the Fn Flow companion project.

Tech stack

GoDocker

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Docker installed and running locally or on your server before any functions can be deployed.

In plain English

Fn is an open-source platform that lets you run small, self-contained pieces of code called functions without managing the underlying servers yourself. This concept is called Functions-as-a-Service (FaaS): instead of running a full application server around the clock, you write a function that does one specific thing, deploy it, and the platform handles running it when needed. The platform is built around Docker containers, which are a standard way of packaging software so it runs consistently across different machines. Because every function runs inside a container, you can write your function in any programming language that Docker supports, including Go, Node.js, Java, Python, and others. Fn can run on your own computer, on a private server, or on any cloud provider, and it can also import functions written for Amazon's Lambda service and run them without changes. Getting started involves installing a small command-line tool, starting an Fn server locally, and then creating a function with one command that generates the project scaffold in your chosen language. From there, you create an app (which groups related functions together), deploy the function to that app, and invoke it. The whole cycle from setup to running a first function takes only a few minutes according to the quickstart guide. Fn is written in Go and is designed to be extensible. It ships with an embedded database and message queue for simple setups, with configuration options available for more complex deployments. Companion projects include a web UI, a flow system for chaining functions together, and a load balancer component. The project has a Slack community, a YouTube channel with tutorials, and documentation covering both developer and operator workflows.

Copy-paste prompts

Prompt 1
Walk me through setting up Fn locally, creating a Node.js function, deploying it to a local Fn server, and invoking it from the command line.
Prompt 2
How do I import an existing AWS Lambda function into Fn and run it on my own server without changing the function code?
Prompt 3
Show me how to create an Fn app that groups three related Python functions together and configure Fn to use an external database instead of the embedded one.
Prompt 4
Set up Fn with Docker on a Linux VPS to run a Go function and show me how to check the logs after it executes.
Open on GitHub → Explain another repo

← fnproject on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.