Apache 2.0 licensed.
IOpipe is a toolkit for building and orchestrating event-driven and serverless applications. These apps may run locally or in the cloud via AWS Lambda, Google Cloud Functions, or Azure Functions.
This repository contains a CLI and Go SDK.
Use the CLI to create and export npm modules, share code via a code registry, and provide runtime of magnetic kernels.
Download the latest binary release and chmod 755 the file.
Building from source? See Build & Install from source.
Alternatively, download & alias our Docker image:
$ docker pull iopipe/iopipe:trunk
$ docker run --name iopipe-data iopipe/iopipe:trunk
$ eval $(echo "alias iopipe='docker run --rm --volumes-from iopipe-data iopipe/iopipe:trunk'" | tee -a ~/.bashrc)
$ iopipe --help
OS-specific packages are forthcoming.
# Import a kernel and name it com.example.SomeScript
$ iopipe import --name com.example.SomeScript - <<<'input'
# List kernels
$ iopipe list
# Fetch response and process it with com.example.SomeScript
$ iopipe --debug exec http://localhost/some-request com.example.SomeScript
# Fetch response and convert it with SomeScript, sending the result to otherhost
$ iopipe --debug exec http://localhost/some-request com.example.SomeScript \
http://otherhost/request
# Fetch response and convert it with SomeScript, send that result to otherhost,
# & converting the response with the script ResponseScript
$ iopipe --debug exec http://localhost/some-request com.example.SomeScript \
http://otherhost/request some.example.ResponseScript
# Export an NPM module:
$ iopipe export --name my-module-name http://localhost/some-request com.example.SomeScript
With a functioning golang 1.5 development environment:
$ go build
$ ./iopipe --help
Alternatively use Docker to build & deploy:
$ docker build -t iopipe-dev .
$ docker run --name iopipe-data iopipe-dev
$ eval $(echo "alias iopipe='docker run --rm --volumes-from iopipe-data iopipe-dev'" | tee -a ~/.bashrc)
$ iopipe --help
Kernels are executed in individual virtual machines whenever allowed by the executing environment. The definition of a virtual machine here is lax, such that it may describe a Javascript VM, a Linux container, or a hardware-assisted x86 virtual machine. Users should exercise caution when running community created kernels.
It is a project priority to make fetching, publishing, and execution of kernels secure for a production-ready 1.0.0 release.
Modules are fetched and stored using sha256 hashes, providing an advantage over module-hosting mechanisms which are based simply on a name and version. Future versions of IOpipe will likely implement TUF for state-of-the-art software assurance.
Contact security@iopipe.com for questions.
Apache 2.0