Lightweight self-hosted lambda/applications/cgi/serverless-functions engine.
Features:
P.S
There is minimal version of trusted-cgi: nano-run. Check it out - it DevOps friendly with configuration-first approach (ie easier to use for infrastructure-as-a-code).
Since 0.3.3
Linux, Darwin and even Windows OS supported: pre-built binaries could be found in releases
TL;DR;
apt.reddec.dev
(see docs)docker run --rm -p 3434:3434 reddec/trusted-cgi
)The process flow is quite straightforward: one light daemon in background listens for requests and launches scripts/apps on demand. An executable shall read standard input (stdin) for request data and write a response to standard output (stdout).
Technically any script/application that can parse STDIN and write something to STDOUT should be capable of the execution.
Trusted-cgi designed keeping in mind that input and output data is quite small and contains structured data (json/xml), however, there are no restrictions on the platform itself.
Key differences with classic CGI:
Due to changes, it's possible to make the simplest script with JSON input and output like this:
import sys
import json
request = json.load(sys.stdin) # read and parse request
response = ['hello', 'world'] # do some logic and make response
json.dump(response, sys.stdout) # send it to client
Keep in mind, the platform also adds a growing number of new features - see features.
target audience
It's best (but not limited) for
However, if your projects have overgrown the platform limitations, it should be quite easy to migrate to any other solutions, because most low-level details are hidden and could be replaced in a few days (basically - just wrap script to HTTP service)
Also, it is possible to scale the platform performance by just launching the same instances of the platform with a shared file system (or docker images) with a balancer in front of it.
The platform is quite simple Golang project with Vue + Quasar frontend and should be easy for newcomers. Caveats and tips for backend check here
For UI check sub-repo
Any PR (docs, code, styles, features, ...) will be very helpful!
Please note, that Linux (including WSL2) or Darwin is mainly used for developing, therefore most helper scripts designed for those OS.
Requirements:
go.mod
)For multiplatform build you may need bintools:
docker run --privileged --rm tonistiigi/binfmt --install all