{"repo":"numkem/msgscript","free":true,"listed":false,"github":"https://github.com/numkem/msgscript","clone":"git clone https://github.com/numkem/msgscript.git","description":"Self hosted, lambda-like application server","language":"Go","stars":27,"topics":["functions","golang","lua","nats","automation","lambda"],"license":"Apache-2.0","category":"workflow-automation","readme_excerpt":"Table of Contents - Features - How it works - Headers - The Function - In Normal mode - In HTTP mode - In HTTP+HTML mode - Return value - HTTP handler - Special HTTP Endpoints - Installation - Docker container - NixOS service - Building it - Clustering - Adding Scripts - Command line flags - Cli options - Commands - dev - devhttp - Command line options - Server options - Executors - Lua - Plugin system - Libraries - Web \"framework\" library - WASM - Podman - Contributing - Support TLDR: msgscript is what you could call a poor man's Lambda-like function/application server. It can run functions and even some small web based applications. Features - Single binary - Nearly no overheads - Good enough performances (RTT of around 10ms for the hello example) - Runs Lua functions, WASM binaries and Podman containers (no docker) - Can use reusable libraries in Lua - Can add Go based plugins in Lua - HTTP handler - Script storage either as flat files or in etcd - Can be scaled up with multiples instances through locking (requires etcd) How it works Let's start with an example script: For more technical details, a flow chart explains what happens when a message is sent and the server sees a match and than executes a script. Headers The headers are formed with the pattern of -- : . There are multiple possible headers: - subject : The subject the script is associated with - name : The name of the script. Multiple scripts can be associated with the same subject - http : Used to return HTML r","default_branch":null,"files":null,"tree":[],"storefront":"/r/numkem","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/numkem/msgscript/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}