gate.computer

Host gate.computer should be an operational Gate.

Live demo

Running greet function of webassembly module /ipfs/QmUihSZckeeMvjhUe464adXf75STXpYYuPsfg3x1MpcnNK.

The server call is made anonymously.

Anonymous usage with cURL

Upload and execute:

$ curl -o hello.wasm https://gate.computer/hello.wasm $ curl -X PUT -H "Content-Type: application/wasm" --data-binary @hello.wasm -L "https://gate.computer/gate-0/module/sha256/e1e6fa2ea2a2a5f9ad32ca9fb78cb6e50cdf12876c4b75ae1a48d20a4a769f5e?action=call&function=greet" hello, world

SHA-256 hash of the uploaded module contents must be included in the URL.

Executing the same module via IPFS:

$ curl -X POST -L "https://gate.computer/gate-0/module/ipfs/QmUihSZckeeMvjhUe464adXf75STXpYYuPsfg3x1MpcnNK?action=call&function=greet" hello, world

Anonymous usage with browser

Execute by IPFS hash via browser:

https://gate.computer/ipfs/QmUihSZckeeMvjhUe464adXf75STXpYYuPsfg3x1MpcnNK?function=twice

Command line client with authentication support

Install a Go compiler if needed, and build the Gate client:

$ go get -u gate.computer/cmd/gate $ PATH=$(go env GOPATH)/bin:$PATH # In case you haven't set it up already.

If necessary, create an Ed25519 private key using OpenSSH authentication key utility:

$ ssh-keygen -t ed25519 # Defaults to ~/.ssh/id_ed25519. $ ssh-keygen -t ed25519 -f filename # If you want to use a Gate-specific key (see below).

Manage resources bound to your public key:

$ gate gate.computer launch ./hello.wasm greet 01234567-89ab-odef-0123-456789abcdef $ gate gate.computer io 01234567-89ab-cdef-0123-456789abcdef hello, world $ gate gate.computer instances 01234567-89ab-odef-0123-456789abcdef HALTED with result 0 $ gate gate.computer modules e1e6fa2ea2a2a5f9ad32ca9fb78cb6e50cdf12876c4b75ae1a48d20a4a769f5e

The private key location can be overridden on the command line or in a configuration file:

$ gate -o identityfile=filename gate.computer call e1e6fa2ea2a2a5f9ad32ca9fb78cb6e50cdf12876c4b75ae1a48d20a4a769f5e greet hello, world $ mkdir -p ~/.config/gate $ echo 'identityfile = "filename"' >> ~/.config/gate/client.toml

Discover the service catalog:

$ gate gate.computer call -s listener /ipfs/QmR6jphXSJGGsZFPqQZ3msb6PzbNuFRwgGxdcFWEgYCiLf { "services": [ { "name": "catalog", "revision": "0" }, { "name": "gate.computer/localhost", "revision": "0" }, { "name": "gateservice.net/listener", "revision": "0" }, { "name": "identity", "revision": "0" }, { "name": "origin", "revision": "0" } ] }

Service availability may vary based on authorization and scope. Discover the services currently available for anonymous use.

An entry function name wasn't specified for the catalog program because it has implicit main function.

@tsavola