├── .DEREK.yml ├── .github └── workflows │ └── validate.yml ├── LICENSE ├── README.md ├── ci └── check_store_functions.sh ├── functions.json └── templates.json /.DEREK.yml: -------------------------------------------------------------------------------- 1 | redirect: https://raw.githubusercontent.com/openfaas/faas/master/.DEREK.yml -------------------------------------------------------------------------------- /.github/workflows/validate.yml: -------------------------------------------------------------------------------- 1 | name: validate 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | validate: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@master 10 | with: 11 | fetch-depth: 1 12 | - name: Initial Setup 13 | run: | 14 | sudo apt-get -qy install jq 15 | - uses: alexellis/arkade-get@master 16 | with: 17 | crane: latest 18 | - name: Validate Images 19 | run: | 20 | jq empty functions.json 21 | jq empty templates.json 22 | - name: Validate functions in store 23 | run: | 24 | ./ci/check_store_functions.sh 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 OpenFaaS Author(s) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenFaaS Function Store 2 | 3 | [![ci-only](https://github.com/openfaas/store/actions/workflows/ci-only.yml/badge.svg)](https://github.com/openfaas/store/actions/workflows/ci-only.yml) 4 | 5 | The Function Store is a curated index of OpenFaaS functions which have been tested by the community and chosen for their experience. 6 | 7 | See the [announcement here](https://twitter.com/alexellisuk/status/936160369516654592) 8 | 9 | ![](https://pbs.twimg.com/media/DP3od15X4AEXoDI.jpg) 10 | 11 | ## Q&A 12 | 13 | * How much does this cost? 14 | 15 | It's free 16 | 17 | * What's happening conceptually? 18 | 19 | The concept is that we will keep a curated list of interesting functions that you can deploy in one-click to your existing OpenFaaS API Gateway using the UI. We do not need access to your API gateway. 20 | 21 | We may update the CLI to make use of the store future too. 22 | 23 | * Where are functions hosted? 24 | 25 | In any public Docker registry whether that be the Docker Hub, Quay or elsewhere. 26 | 27 | * Where is the list/definition kept? 28 | 29 | We are using a .json file in this repository and GitHub's raw download CDN. 30 | 31 | * Why is it called a store if I don't have to pay money? 32 | 33 | See also: Google Play Store/Apple App Store. 34 | 35 | ## Make a submission to the Function Store 36 | 37 | If you'd like to make a submission then raise an issue to propose it. This should follow the [CONTRIBUTION guide](https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md) for OpenFaaS. 38 | 39 | Here are two example function definitions. 40 | 41 | ### Version 0.1.0 (`store.json`) 42 | 43 | ```json 44 | [ 45 | { 46 | "title": "Inception", 47 | "description": "This is a forked version of the work by Magnus Erik Hvass Pedersen - it has been re-packaged as an OpenFaaS serverless function.", 48 | "image": "alexellis/inception", 49 | "name": "inception", 50 | "fprocess": "python3 index.py", 51 | "network": "func_functions", 52 | "repo_url": "https://github.com/faas-and-furious/inception-function", 53 | "labels": { 54 | "com.openfaas.ui.ext": "json" 55 | }, 56 | "environment": { 57 | "write_timeout": "30" 58 | } 59 | } 60 | ] 61 | ``` 62 | 63 | ### Version 0.2.0 (`functions.json`) 64 | 65 | ```json 66 | { 67 | "version": "0.2.0", 68 | "functions": [ 69 | { 70 | "title": "NodeInfo", 71 | "name": "nodeinfo", 72 | "description": "Get info about the machine that you're deployed on. Tells CPU count, hostname, OS, and Uptime", 73 | "images": { 74 | "arm64": "functions/nodeinfo:arm64", 75 | "armhf": "functions/nodeinfo:latest-armhf", 76 | "x86_64": "functions/nodeinfo:latest" 77 | }, 78 | "labels": { 79 | "com.openfaas.ui.ext": "json" 80 | }, 81 | "environment": { 82 | "write_timeout": "30" 83 | }, 84 | "fprocess": "node main.js", 85 | "network": "func_functions", 86 | "repo_url": "https://github.com/openfaas/faas/tree/master/sample-functions/NodeInfo" 87 | } 88 | ] 89 | } 90 | ``` 91 | 92 | ### See also: 93 | 94 | * `labels` 95 | 96 | You can set the file extension used by the UI to download a result from your function i.e. csv/mp3/txt 97 | 98 | * `environment` 99 | 100 | Set timeouts etc 101 | 102 | # OpenFaaS Template Store 103 | 104 | The Template Store contains all the templates from OpenFaaS and [OpenFaaS-Incubator](https://github.com/openfaas-incubator) organizations, along with user-defined templates which have been approved by the community. 105 | 106 | ## How to submit to the Template Store 107 | 108 | If you'd like to see your template in the official store follow these steps: 109 | 110 | 1. Open an issue to propose the template and include a link to your template repository. This should follow the [CONTRIBUTION guide](https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md) for OpenFaaS. 111 | 2. Await feedback on, and subsequent approval of, your proposal from the community. 112 | 3. Add your template to the `templates.json` file. Here is example of a template definition: 113 | ``` 114 | { 115 | "template": "go", 116 | "platform": "x86_64", 117 | "language": "Go", 118 | "source": "openfaas", 119 | "description": "Classic Golang template", 120 | "repo": "https://github.com/openfaas/templates", 121 | "official": "true" 122 | }, 123 | ``` 124 | 4. Open PR for your template to be merged in the Template Store 125 | 126 | Once merged you can see your template displayed by typing `faas-cli template store list` in the terminal. 127 | 128 | ## Templates created by the community: 129 | 130 | Those are the custom templates created by the community: 131 | 132 | * [Rust template](https://github.com/booyaa/openfaas-rust-template) by [booyaa](https://github.com/booyaa/) 133 | * [Crystal template](https://github.com/tpei/crystal_openfaas) by [tpei](https://github.com/tpei/) 134 | * [C# HTTP template](https://github.com/distantcam/csharp-httprequest-template) by [distantcam](https://github.com/distantcam/) 135 | -------------------------------------------------------------------------------- /ci/check_store_functions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Running function image check..." 4 | 5 | images=($(cat functions.json | jq '.functions[].images[]')) 6 | 7 | uniq_images=($(echo "${images[@]}" |xargs -n1 | sort |uniq)) 8 | 9 | for i in "${uniq_images[@]}"; do 10 | image=$(echo $i | tr -d '"') 11 | 12 | echo "Checking image: ${image}" 13 | crane manifest $image || { echo "Failure: Check of ${image} failed, exiting..."; exit 1; } 14 | done; 15 | 16 | echo "All function images were found" 17 | -------------------------------------------------------------------------------- /functions.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.1", 3 | "functions": [ 4 | { 5 | "title": "NodeInfo", 6 | "name": "nodeinfo", 7 | "author":"openfaas", 8 | "description": "Get info about the container i.e. CPU count, hostname, OS, and uptime", 9 | "images": { 10 | "arm64": "ghcr.io/openfaas/nodeinfo:latest", 11 | "armhf": "ghcr.io/openfaas/nodeinfo:latest", 12 | "x86_64": "ghcr.io/openfaas/nodeinfo:latest" 13 | }, 14 | "repo_url": "https://github.com/openfaas/store-functions" 15 | }, 16 | { 17 | "title": "env", 18 | "name": "env", 19 | "description": "Print the environment variables present in the function and HTTP request", 20 | "author":"openfaas", 21 | "images": { 22 | "arm64": "ghcr.io/openfaas/alpine:latest", 23 | "armhf": "ghcr.io/openfaas/alpine:latest", 24 | "x86_64": "ghcr.io/openfaas/alpine:latest" 25 | }, 26 | "fprocess": "env", 27 | "repo_url": "https://github.com/openfaas/store-functions" 28 | }, 29 | { 30 | "title": "sleep", 31 | "name": "sleep", 32 | "author":"openfaas", 33 | "description": "Simulate a 2s duration or pass an X-Sleep header and a valid Golang duration", 34 | "images": { 35 | "arm64": "ghcr.io/openfaas/sleep:latest", 36 | "armhf": "ghcr.io/openfaas/sleep:latest", 37 | "x86_64": "ghcr.io/openfaas/sleep:latest" 38 | }, 39 | "readOnlyRootFilesystem": true, 40 | "environment": { 41 | "write_timeout": "60s" 42 | }, 43 | "repo_url": "https://github.com/openfaas/store-functions" 44 | }, 45 | { 46 | "title": "shasum", 47 | "name": "shasum", 48 | "author":"openfaas", 49 | "description": "Generate a shasum for the given input", 50 | "images": { 51 | "arm64": "ghcr.io/openfaas/alpine:latest", 52 | "armhf": "ghcr.io/openfaas/alpine:latest", 53 | "x86_64": "ghcr.io/openfaas/alpine:latest" 54 | }, 55 | "fprocess": "sha512sum", 56 | "repo_url": "https://github.com/openfaas/store-functions" 57 | }, 58 | { 59 | "title": "figlet", 60 | "name": "figlet", 61 | "author":"openfaas", 62 | "description": "Generate ASCII logos with the figlet CLI", 63 | "images": { 64 | "arm64": "ghcr.io/openfaas/figlet:latest", 65 | "armhf": "ghcr.io/openfaas/figlet:latest", 66 | "x86_64": "ghcr.io/openfaas/figlet:latest" 67 | 68 | }, 69 | "fprocess": "figlet", 70 | "repo_url": "https://github.com/openfaas/store-functions" 71 | }, 72 | { 73 | "title": "printer", 74 | "name": "printer", 75 | "author":"openfaas", 76 | "description": "Print out the HTTP headers and body of any invocation", 77 | "images": { 78 | "x86_64": "ghcr.io/openfaas/printer:latest", 79 | "arm64": "ghcr.io/openfaas/printer:latest", 80 | "armhf": "ghcr.io/openfaas/printer:latest" 81 | }, 82 | "readOnlyRootFilesystem": true, 83 | "repo_url": "https://github.com/openfaas/store-functions" 84 | }, 85 | { 86 | "title": "curl", 87 | "name": "curl", 88 | "author":"openfaas", 89 | "description": "Use curl for network diagnostics, pass the full command-line to the function", 90 | "images": { 91 | "x86_64": "ghcr.io/openfaas/curl:latest", 92 | "arm64": "ghcr.io/openfaas/curl:latest", 93 | "armhf": "ghcr.io/openfaas/curl:latest" 94 | }, 95 | "readOnlyRootFilesystem": true, 96 | "environment": { 97 | "write_timeout": "60s" 98 | }, 99 | "repo_url": "https://github.com/openfaas/store-functions" 100 | }, 101 | { 102 | "title": "external-ip", 103 | "name": "external-ip", 104 | "author":"openfaas", 105 | "description": "Find the egress IP used by a function", 106 | "images": { 107 | "x86_64": "ghcr.io/openfaas/external-ip-fn:latest", 108 | "arm64": "ghcr.io/openfaas/external-ip-fn:latest", 109 | "armhf": "ghcr.io/openfaas/external-ip-fn:latest" 110 | }, 111 | "readOnlyRootFilesystem": true, 112 | "environment": { 113 | "write_timeout": "60s" 114 | }, 115 | "repo_url": "https://github.com/openfaas/store-functions" 116 | }, 117 | { 118 | "title": "markdown", 119 | "name": "markdown", 120 | "author":"openfaas", 121 | "description": "Convert markdown to HTML", 122 | "images": { 123 | "x86_64": "ghcr.io/openfaas/markdown-fn:latest", 124 | "arm64": "ghcr.io/openfaas/markdown-fn:latest", 125 | "armhf": "ghcr.io/openfaas/markdown-fn:latest" 126 | }, 127 | "readOnlyRootFilesystem": true, 128 | "repo_url": "https://github.com/openfaas/store-functions" 129 | }, 130 | { 131 | "title": "youtube-dl", 132 | "name": "youtube-dl", 133 | "author":"openfaas", 134 | "description": "Download a video from YouTube using youtube-dl", 135 | "images": { 136 | "x86_64": "ghcr.io/openfaas/youtube-dl:latest", 137 | "arm64": "ghcr.io/openfaas/youtube-dl:latest", 138 | "armhf": "ghcr.io/openfaas/youtube-dl:latest" 139 | }, 140 | "readOnlyRootFilesystem": true, 141 | "repo_url": "https://github.com/openfaas/store-functions", 142 | "labels": { 143 | "com.openfaas.ui.ext": "mp4" 144 | }, 145 | "environment": { 146 | "read_timeout": "5m5s", 147 | "write_timeout": "5m5s", 148 | "exec_timeout": "5m" 149 | } 150 | }, 151 | { 152 | "title": "SentimentAnalysis", 153 | "author":"openfaas", 154 | "description": "Python function provides a rating on sentiment positive/negative (polarity -1.0-1.0) and subjectivity to provided to each of the sentences sent.", 155 | "images": { 156 | "x86_64": "ghcr.io/openfaas/sentimentanalysis:latest", 157 | "arm64": "ghcr.io/openfaas/sentimentanalysis:latest", 158 | "armhf": "ghcr.io/openfaas/sentimentanalysis:latest" 159 | }, 160 | "name": "sentimentanalysis", 161 | "repo_url": "https://github.com/openfaas/store-functions" 162 | }, 163 | { 164 | "title": "hey", 165 | "name": "hey", 166 | "author":"openfaas", 167 | "description": "HTTP load generator, ApacheBench (ab) replacement", 168 | "images": { 169 | "x86_64": "ghcr.io/openfaas/hey:latest", 170 | "arm64": "ghcr.io/openfaas/hey:latest", 171 | "armhf": "ghcr.io/openfaas/hey:latest" 172 | }, 173 | "repo_url": "https://github.com/openfaas/store-functions", 174 | "readOnlyRootFilesystem": true, 175 | "environment": { 176 | "write_timeout": "60s" 177 | } 178 | }, 179 | { 180 | "title": "nslookup", 181 | "author":"openfaas", 182 | "description": "Query the nameserver for the IP address of the given HOST optionally using a specified DNS server", 183 | "images": { 184 | "x86_64": "ghcr.io/openfaas/nslookup:latest", 185 | "armhf": "ghcr.io/openfaas/nslookup:latest", 186 | "arm64": "ghcr.io/openfaas/nslookup:latest" 187 | }, 188 | "name": "nslookup", 189 | "repo_url": "https://github.com/openfaas/store-functions" 190 | }, 191 | { 192 | "title": "SSL/TLS cert info", 193 | "name": "certinfo", 194 | "author":"stefanprodan", 195 | "description": "Returns SSL/TLS certificate information for a given URL", 196 | "icon": "https://raw.githubusercontent.com/stefanprodan/openfaas-certinfo/master/logo.png", 197 | "images": { 198 | "x86_64": "ghcr.io/openfaas/certinfo-fn:latest", 199 | "armhf": "ghcr.io/openfaas/certinfo-fn:latest", 200 | "arm64": "ghcr.io/openfaas/certinfo-fn:latest" 201 | }, 202 | "repo_url": "https://github.com/openfaas/store-functions" 203 | }, 204 | { 205 | "title": "Colorization", 206 | "name": "colorise", 207 | "author":"alexellis", 208 | "description": "Turn black and white photos to color using a URL as the request. The colorization function was popularised by @colorisebot by Alex Ellis and Finnian Anderson.", 209 | "icon": "https://pbs.twimg.com/profile_images/927538119901175814/4uhYwTyC_400x400.jpg", 210 | "images": { 211 | "x86_64": "alexellis2/openfaas-colorization:0.4.1" 212 | }, 213 | "fprocess": "python -u index.py", 214 | "repo_url": "https://github.com/alexellis/repaint-the-past", 215 | "labels": { 216 | "com.openfaas.ui.ext": "jpg" 217 | }, 218 | "environment": { 219 | "url_mode": "true", 220 | "read_timeout": "60s", 221 | "write_timeout": "60s", 222 | "write_debug": "false" 223 | } 224 | }, 225 | { 226 | "title": "Inception", 227 | "name": "inception", 228 | "author":"alexellis", 229 | "description": "This is a forked version of the work by Magnus Erik Hvass Pedersen - it has been re-packaged as an OpenFaaS serverless function.", 230 | "images": { 231 | "x86_64": "alexellis/inception:2019-02-17" 232 | }, 233 | "fprocess": "python3 index.py", 234 | "repo_url": "https://github.com/faas-and-furious/inception-function", 235 | "environment": { 236 | "read_timeout": "60s", 237 | "write_timeout": "60s" 238 | } 239 | }, 240 | { 241 | "title": "nvidia-smi", 242 | "name": "nvidia-smi", 243 | "description": "Print output from nvidia-smi, requires a custom Profile with a request for an Nvidia GPU", 244 | "author":"openfaas", 245 | "images": { 246 | "arm64": "ghcr.io/openfaas/nvidia-smi:latest", 247 | "x86_64": "ghcr.io/openfaas/nvidia-smi:latest" 248 | }, 249 | "fprocess": "nvidia-smi", 250 | "repo_url": "https://github.com/openfaas/store-functions" 251 | }, 252 | { 253 | "title": "alpine", 254 | "name": "alpine", 255 | "author":"openfaas", 256 | "description": "An Alpine Linux shell, set the \"fprocess\" to a bash built-in you want to run like \"env\" or \"cal\". By default alpine runs \"cat\" and can be used to echo the HTTP input.", 257 | "images": { 258 | "arm64": "ghcr.io/openfaas/alpine:latest", 259 | "armhf": "ghcr.io/openfaas/alpine:latest", 260 | "x86_64": "ghcr.io/openfaas/alpine:latest" 261 | }, 262 | "fprocess": "cat", 263 | "repo_url": "https://github.com/openfaas/store-functions" 264 | }, 265 | { 266 | "title": "Face Detection with Pigo", 267 | "author":"esimov", 268 | "description": "Detect faces in images using the Pigo face detection library. You provide an image URI and the function draws boxes around the detected faces.", 269 | "images": { 270 | "x86_64": "esimov/pigo-openfaas:0.1" 271 | }, 272 | "name": "face-detect-pigo", 273 | "repo_url": "https://github.com/esimov/pigo-openfaas", 274 | "readOnlyRootFilesystem": true, 275 | "environment": { 276 | "output_mode": "image", 277 | "input_mode": "url" 278 | }, 279 | "labels": { 280 | "com.openfaas.ui.ext": "jpg" 281 | } 282 | }, 283 | { 284 | "icon": "https://raw.githubusercontent.com/viveksyngh/openfaas-ocr/master/logo/ocr.png", 285 | "title": "Tesseract OCR", 286 | "author":"viveksyngh", 287 | "description": "This function brings OCR - Optical Character Recognition through the tesseract engine. Just pass in a URL or base64 string of an image in .jpg or .png format.", 288 | "images": { 289 | "x86_64": "viveksyngh/openfaas-ocr:0.3.0" 290 | }, 291 | "name": "ocr", 292 | "repo_url": "https://github.com/viveksyngh/openfaas-ocr" 293 | }, 294 | { 295 | "icon": "https://raw.githubusercontent.com/faas-and-furious/qrcode/master/images/qrcode.png", 296 | "title": "QR Code Generator - Go", 297 | "author":"alexellis", 298 | "description": "QR Code generator using Go", 299 | "images": { 300 | "x86_64": "alexellis/qrcode:0.1" 301 | }, 302 | "name": "qrcode-go", 303 | "repo_url": "https://github.com/faas-and-furious/qrcode", 304 | "labels": { 305 | "com.openfaas.ui.ext": "png" 306 | } 307 | }, 308 | { 309 | "icon": "https://nmap.org/images/nmap-logo-256x256.png", 310 | "title": "Nmap Security Scanner", 311 | "author": "openfaas", 312 | "description": "Tool for network discovery and security auditing.", 313 | "images": { 314 | "x86_64": "ghcr.io/openfaas/nmap:latest" 315 | }, 316 | "name": "nmap", 317 | "repo_url": "https://github.com/openfaas/store-function", 318 | "environment": { 319 | "read_timeout": "300s", 320 | "write_timeout": "300s" 321 | } 322 | }, 323 | { 324 | "title": "ASCII Cows", 325 | "description": "Generate a random ASCII cow", 326 | "author": "openfaas", 327 | "images": { 328 | "arm64": "ghcr.io/openfaas/cows:latest", 329 | "armhf": "ghcr.io/openfaas/cows:latest", 330 | "x86_64": "ghcr.io/openfaas/cows:latest" 331 | }, 332 | "name": "cows", 333 | "repo_url": "https://github.com/openfaas/store-functions", 334 | "readOnlyRootFilesystem": true 335 | }, 336 | { 337 | "icon": "https://ssl.gstatic.com/translate/community/backgrounds/globe.png", 338 | "title": "OpenFaaS Text-to-Speech", 339 | "author": "rorpage", 340 | "description": "Generate an MP3 of text using Google's Text-to-Speech", 341 | "images": { 342 | "x86_64": "rorpage/text-to-speech:latest", 343 | "armhf": "rgee0/text-to-speech:armhf-latest" 344 | }, 345 | "name": "text-to-speech", 346 | "repo_url": "https://github.com/rorpage/openfaas-text-to-speech", 347 | "labels": { 348 | "com.openfaas.ui.ext": "mp3" 349 | }, 350 | "environment": { 351 | "read_timeout": "60s", 352 | "write_timeout": "60s" 353 | } 354 | }, 355 | { 356 | "title": "Docker Image Manifest Query", 357 | "description": "Query an image on the Docker Hub for supported architectures - by Phil Estes", 358 | "author": "rgee0", 359 | "images": { 360 | "x86_64": "rgee0/of-mquery:1.2", 361 | "armhf": "rgee0/of-mquery:1.2" 362 | }, 363 | "fprocess": "./mquery", 364 | "name": "mquery", 365 | "repo_url": "https://github.com/rgee0/mquery/tree/openfaaschanges" 366 | }, 367 | { 368 | "title": "face-detect with OpenCV", 369 | "author": "alexellis", 370 | "description": "Detect faces in images. Send a URL as input and download a file with boxes drawn around detected faces. From our friend Nic Jackson", 371 | "images": { 372 | "x86_64": "alexellis2/facedetect:0.1" 373 | }, 374 | "name": "face-detect-opencv", 375 | "repo_url": "https://github.com/alexellis/facedetect-openfaas", 376 | "readOnlyRootFilesystem": true, 377 | "environment": { 378 | "output_mode": "image", 379 | "input_mode": "url" 380 | }, 381 | "labels": { 382 | "com.openfaas.ui.ext": "jpg" 383 | } 384 | }, 385 | { 386 | "title": "Face blur by Endre Simo", 387 | "description": "Blur out faces detected in JPEGs. Invoke with the URL to the image.", 388 | "author": "esimov", 389 | "images": { 390 | "x86_64": "esimov/pigo-openfaas-faceblur:0.1" 391 | }, 392 | "name": "face-blur", 393 | "repo_url": "https://github.com/esimov/pigo-openfaas-faceblur", 394 | "readOnlyRootFilesystem": true, 395 | "environment": { 396 | "output_mode": "image", 397 | "input_mode": "url", 398 | "content_type": "image/jpeg" 399 | }, 400 | "labels": { 401 | "com.openfaas.ui.ext": "jpg" 402 | } 403 | }, 404 | { 405 | "title": "normalisecolor", 406 | "author": "alexellis", 407 | "description": "Automatically fix white-balance in photos through imagemagick.", 408 | "images": { 409 | "x86_64": "alexellis2/normalisecolor:0.2.1" 410 | }, 411 | "icon": "https://github.com/alexellis/repaint-the-past/raw/master/normalise-color-icon.png", 412 | "name": "normalisecolor", 413 | "repo_url": "https://github.com/alexellis/repaint-the-past", 414 | "readOnlyRootFilesystem": false 415 | }, 416 | { 417 | "title": "Line Drawing Generator from a photograph", 418 | "description": "Automatically generates a sketch like image art based on the provided image", 419 | "author": "esimov", 420 | "images": { 421 | "x86_64": "esimov/colidr-openfaas:0.1" 422 | }, 423 | "name": "coherent-line-drawing", 424 | "repo_url": "https://github.com/esimov/openfaas-coherent-line-drawing", 425 | "readOnlyRootFilesystem": true, 426 | "environment": { 427 | "input_mode": "url", 428 | "output_mode": "image", 429 | "content_type": "image/jpeg", 430 | "write_timeout": "300s" 431 | }, 432 | "labels": { 433 | "com.openfaas.ui.ext": "jpg" 434 | } 435 | }, 436 | { 437 | "title": "Image EXIF Reader", 438 | "author": "servernull", 439 | "description": "Reads EXIF information from an URL or base64 encoded image and returns JSON", 440 | "images": { 441 | "x86_64": "servernull/openfaas-exif:0.1.0" 442 | }, 443 | "name": "openfaas-exif", 444 | "repo_url": "https://github.com/servernull/openfaas-exif" 445 | }, 446 | { 447 | "title": "Open NSFW Model", 448 | "author": "servernull", 449 | "description": "Score images for NSFW (nudity) content.", 450 | "images": { 451 | "x86_64": "servernull/openfaas-opennsfw:0.1.0" 452 | }, 453 | "name": "openfaas-opennsfw", 454 | "repo_url": "https://github.com/servernull/openfaas-opennsfw" 455 | }, 456 | { 457 | "title": "Identicon Generator", 458 | "author": "rgee0", 459 | "description": "Create an identicon from a provided string value", 460 | "images": { 461 | "x86_64": "rgee0/identicon:1.0", 462 | "armhf": "rgee0/identicon:1.0" 463 | }, 464 | "icon": "https://raw.githubusercontent.com/rgee0/openfaas-identicon/master/sample/openfaas.png", 465 | "name": "identicon", 466 | "repo_url": "https://github.com/rgee0/openfaas-identicon", 467 | "readOnlyRootFilesystem": true, 468 | "environment": { 469 | "content_type": "image/png", 470 | "write_timeout": "10s" 471 | }, 472 | "labels": { 473 | "com.openfaas.ui.ext": "png" 474 | } 475 | }, 476 | { 477 | "title": "chaos", 478 | "name": "chaos", 479 | "author": "alexellis", 480 | "description": "A function for chaos testing with OpenFaaS", 481 | "images": { 482 | "x86_64": "alexellis2/chaos-fn:0.1.1" 483 | }, 484 | "environment": { 485 | "write_timeout": "5m31s", 486 | "read_timeout": "5m31s", 487 | "exec_timeout": "5m30s" 488 | }, 489 | "labels": { 490 | "com.openfaas.min.scale": "1", 491 | "com.openfaas.max.scale": "1" 492 | }, 493 | "repo_url": "https://github.com/alexellis/chaos-fn", 494 | "readOnlyRootFilesystem": true 495 | } 496 | ] 497 | } 498 | -------------------------------------------------------------------------------- /templates.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "template": "dockerfile", 4 | "platform": "x86_64", 5 | "language": "Dockerfile", 6 | "source": "openfaas", 7 | "description": "Classic Dockerfile template", 8 | "repo": "https://github.com/openfaas/templates", 9 | "official": "true", 10 | "recommended": true 11 | }, 12 | { 13 | "template": "golang-middleware", 14 | "platform": "x86_64", 15 | "language": "Go", 16 | "source": "openfaas", 17 | "description": "HTTP middleware interface in Go", 18 | "repo": "https://github.com/openfaas/golang-http-template", 19 | "official": "true", 20 | "recommended": true 21 | }, 22 | { 23 | "template": "golang-http", 24 | "platform": "x86_64", 25 | "language": "Go", 26 | "source": "openfaas", 27 | "description": "Request/response style HTTP template", 28 | "repo": "https://github.com/openfaas/golang-http-template", 29 | "official": "true" 30 | }, 31 | { 32 | "template": "dotnet8-csharp", 33 | "platform": "x86_64", 34 | "language": "C#", 35 | "source": "openfaas", 36 | "description": "C# template using WebApplication", 37 | "repo": "https://github.com/openfaas/dotnet-templates", 38 | "official": "true", 39 | "recommended": true 40 | }, 41 | { 42 | "template": "node20", 43 | "platform": "x86_64", 44 | "language": "NodeJS", 45 | "source": "openfaas", 46 | "description": "HTTP-based Node 20 template", 47 | "repo": "https://github.com/openfaas/templates", 48 | "official": "true", 49 | "recommended": true 50 | }, 51 | { 52 | "template": "node18", 53 | "platform": "x86_64", 54 | "language": "NodeJS", 55 | "source": "openfaas", 56 | "description": "HTTP-based Node 18 template", 57 | "repo": "https://github.com/openfaas/templates", 58 | "official": "true", 59 | "recommended": false 60 | }, 61 | { 62 | "template": "bun-express", 63 | "platform": "x86_64", 64 | "language": "NodeJS", 65 | "source": "openfaas", 66 | "description": "HTTP-based template using bun", 67 | "repo": "https://github.com/openfaas/templates", 68 | "official": "true", 69 | "recommended": false 70 | }, 71 | { 72 | "template": "php7", 73 | "platform": "x86_64", 74 | "language": "PHP", 75 | "source": "openfaas", 76 | "description": "Classic PHP 7 template", 77 | "repo": "https://github.com/openfaas/templates", 78 | "official": "true" 79 | }, 80 | { 81 | "template": "php8", 82 | "platform": "x86_64", 83 | "language": "PHP", 84 | "source": "openfaas", 85 | "description": "Classic PHP 8 template", 86 | "repo": "https://github.com/openfaas/templates", 87 | "official": "true", 88 | "recommended": true 89 | }, 90 | { 91 | "template": "python3-flask", 92 | "platform": "x86_64", 93 | "language": "Python", 94 | "source": "openfaas", 95 | "description": "Python 3 Flask template", 96 | "repo": "https://github.com/openfaas/python-flask-template", 97 | "official": "true" 98 | }, 99 | { 100 | "template": "python3-flask-debian", 101 | "platform": "x86_64", 102 | "language": "Python", 103 | "source": "openfaas", 104 | "description": "Python 3 Flask template based on Debian", 105 | "repo": "https://github.com/openfaas/python-flask-template", 106 | "official": "true" 107 | }, 108 | { 109 | "template": "python3-http", 110 | "platform": "x86_64", 111 | "language": "Python", 112 | "source": "openfaas", 113 | "description": "Python 3 with Flask and HTTP", 114 | "repo": "https://github.com/openfaas/python-flask-template", 115 | "official": "true", 116 | "recommended": true 117 | }, 118 | { 119 | "template": "python3-http-debian", 120 | "platform": "x86_64", 121 | "language": "Python", 122 | "source": "openfaas", 123 | "description": "Python 3 with Flask and HTTP based on Debian", 124 | "repo": "https://github.com/openfaas/python-flask-template", 125 | "official": "true", 126 | "recommended": true 127 | }, 128 | { 129 | "template": "bash-streaming", 130 | "platform": "x86_64", 131 | "language": "Bash", 132 | "source": "openfaas-incubator", 133 | "description": "Bash Streaming template", 134 | "repo": "https://github.com/alexellis/openfaas-streaming-templates", 135 | "official": "true", 136 | "recommended": true 137 | }, 138 | { 139 | "template": "java11", 140 | "platform": "x86_64", 141 | "language": "Java", 142 | "source": "openfaas", 143 | "description": "Java 11 template", 144 | "repo": "https://github.com/openfaas/templates", 145 | "official": "true" 146 | }, 147 | { 148 | "template": "java17", 149 | "platform": "x86_64", 150 | "language": "Java", 151 | "source": "openfaas", 152 | "description": "Java 17 template", 153 | "repo": "https://github.com/openfaas/templates", 154 | "official": "true" 155 | }, 156 | { 157 | "template": "java11-vert-x", 158 | "platform": "x86_64", 159 | "language": "Java", 160 | "source": "openfaas", 161 | "description": "Java 11 Vert.x template", 162 | "repo": "https://github.com/openfaas/templates", 163 | "official": "true", 164 | "recommended": true 165 | }, 166 | { 167 | "template": "ruby-http", 168 | "platform": "x86_64", 169 | "language": "Ruby", 170 | "source": "openfaas", 171 | "description": "Ruby 3.3.6 HTTP template", 172 | "repo": "https://github.com/openfaas/ruby-http", 173 | "official": "true", 174 | "recommended": true 175 | }, 176 | { 177 | "template": "rust", 178 | "platform": "x86_64", 179 | "language": "Rust", 180 | "source": "openfaas-incubator", 181 | "description": "Community Rust template", 182 | "repo": "https://github.com/openfaas-incubator/openfaas-rust-template", 183 | "official": "false" 184 | }, 185 | { 186 | "template": "puppeteer-nodelts", 187 | "platform": "x86_64", 188 | "language": "NodeJS", 189 | "source": "alexellis", 190 | "description": "A puppeteer template for headless Chrome", 191 | "repo": "https://github.com/alexellis/openfaas-puppeteer-template", 192 | "official": "true" 193 | }, 194 | { 195 | "template": "rust-http", 196 | "platform": "x86_64", 197 | "language": "Rust", 198 | "source": "openfaas-incubator", 199 | "description": "Community Rust template with HTTP bindings", 200 | "repo": "https://github.com/openfaas-incubator/openfaas-rust-template", 201 | "official": "false" 202 | }, 203 | { 204 | "template": "powershell-http-template", 205 | "platform": "x86_64", 206 | "language": "Python", 207 | "source": "openfaas-incubator", 208 | "description": "Powershell Core HTTP Ubuntu:16.04 template", 209 | "repo": "https://github.com/openfaas-incubator/powershell-http-template", 210 | "official": "false" 211 | }, 212 | { 213 | "template": "powershell-template", 214 | "platform": "x86_64", 215 | "language": "Python", 216 | "source": "openfaas-incubator", 217 | "description": "Powershell Core Ubuntu:16.04 template", 218 | "repo": "https://github.com/openfaas-incubator/powershell-template", 219 | "official": "false" 220 | }, 221 | { 222 | "template": "quarkus-native", 223 | "platform": "x86_64", 224 | "language": "Java", 225 | "source": "pmlopes", 226 | "description": "Quarkus.io native image template", 227 | "repo": "https://github.com/pmlopes/openfaas-quarkus-native-template", 228 | "official": "false" 229 | }, 230 | { 231 | "template": "perl-alpine", 232 | "platform": "x86_64", 233 | "language": "Perl", 234 | "source": "tmiklas", 235 | "description": "Perl language template based on Alpine image", 236 | "repo": "https://github.com/tmiklas/openfaas-perl-templates", 237 | "official": "false" 238 | }, 239 | { 240 | "template": "cobol", 241 | "platform": "x86_64", 242 | "language": "COBOL", 243 | "source": "devries", 244 | "description": "COBOL Template", 245 | "repo": "https://github.com/devries/openfaas-cobol-template", 246 | "official": "false" 247 | } 248 | ] --------------------------------------------------------------------------------