FnKit — Functions as a Service CLI
Scaffold, develop, and deploy serverless functions using Docker and Git push. No external platforms required.
Get Started
View on GitHub
Internet → Caddy (TLS/domains) → fnkit-gateway (auth/routing) → Function containers
↑
git push → docker build → deploy
(via remote hook, Forgejo, or GitHub Actions)
Dependencies: Docker + Git. That’s it.
Quick Start
# Install
curl -L https://github.com/functionkit/fnkit/releases/latest/download/fnkit-macos-arm64 -o fnkit
chmod +x fnkit && ./fnkit install
# Create a function
fnkit node my-api
cd my-api
# Run locally
fnkit dev
# Set up CI/CD and deploy
fnkit deploy setup
git add . && git commit -m "init" && git push
Features
| Feature |
Description |
| Multi-runtime scaffolding |
Create functions in 9 HTTP runtimes + 3 MQTT runtimes |
| Local development |
fnkit dev runs your function locally with hot reload |
| API Gateway |
Nginx-based auth gateway with token validation and routing |
| Orchestrator |
Multi-function pipelines — sequential chaining or parallel fan-out |
| Shared Cache |
Redis-compatible Valkey cache accessible by all functions |
| Reverse Proxy |
Automatic HTTPS via Caddy with Let’s Encrypt |
| Git-push Deploy |
Remote hook, Forgejo Actions, or GitHub Actions |
| MQTT Functions |
Event-driven functions that subscribe to MQTT topics |
| UNS Plugin |
Industrial IoT: MQTT monitor → cache → PostgreSQL logger |
| Container Management |
List, log, and stop deployed function containers |
Supported Runtimes
HTTP (Google Cloud Functions Framework)
| Runtime |
Command |
|
Runtime |
Command |
| Node.js |
fnkit node <name> |
|
Ruby |
fnkit ruby <name> |
| Python |
fnkit python <name> |
|
.NET |
fnkit dotnet <name> |
| Go |
fnkit go <name> |
|
PHP |
fnkit php <name> |
| Java |
fnkit java <name> |
|
Dart |
fnkit dart <name> |
| C++ |
fnkit cpp <name> |
|
|
|
MQTT (FnKit Function Framework)
| Runtime |
Command |
| Node.js |
fnkit node-mqtt <name> |
| Go |
fnkit go-mqtt <name> |
| .NET |
fnkit dotnet-mqtt <name> |
Commands
| Command |
Description |
fnkit <runtime> <name> |
Create a new function project |
fnkit init |
Initialize existing directory as a function |
fnkit dev |
Run function locally |
fnkit container ls\|logs\|stop |
Manage deployed containers |
fnkit gateway init\|build\|start\|stop |
Manage API gateway |
fnkit gateway orchestrate ... |
Manage multi-function pipelines |
fnkit cache init\|start\|stop |
Manage shared Valkey cache |
fnkit proxy init\|add\|remove\|ls |
Manage Caddy reverse proxy |
fnkit deploy remote\|setup\|init\|status |
Manage CI/CD pipelines |
fnkit mqtt uns\|cache\|log\|status |
MQTT / UNS plugin commands |
fnkit image build\|push |
Build & push Docker images |
fnkit doctor [runtime] |
Check runtime dependencies |
Documentation