Install CoopHive
CoopHive
CoopHive is a two-sided marketplace for computational resources. It enables users to run computational workloads in a permissionless protocol, where anyone can get paid to connect their compute nodes to the network and run jobs.
It uses an EVM-compatible blockchain to manage agreed job state and payment and use bacalhau to manage the compute nodes.
Getting started
Halcyon Testnet
The testnet has a base curency of ETH and you will also get HIVE to pay for jobs (and nodes to stake).
Metamask:
Fund your Wallet with ETH and HIVE
To obtain funds, go to http://halcyon-faucet.co-ophive.network:8085
The faucet will give you both ETH (to pay for gas) and HIVE (to stake and pay for jobs).
Install CLI
Download the latest release of hive
for your platform. Both the amd64/x86_64 and arm64 variants of macOS and Linux are supported. (If you are on Apple Silicon, you'll want arm64).
Nb: to check your version use which hive
- if an old version run rm <path>
to remove that path then reinstall newest version
The commands below will automatically detect your OS and processor architecture and download the correct build for your machine.
Then Download & Install
You can also, at your option, choose to compile hive
using Go and install it that way on any machine that supports the Go toolchain.
Run a Job
(or arrange for the key to be in your environment in a more secure way that doesn't get written to your shell history)
Cows
SDXL
Not working? Try rm -rf /tmp/coophive/data/repos
uninstall hive path and reinstall from the start
Run a Node, Earn HIVE
systemd units & more details here
Available Modules
Check the github releases page for each module or just use the git hash as the tag.
More coming soon!
Write a Module
A module is just a git repo.
Module versions are just git tags.
In your repo, create a file called module.coophive
See cowsay for example
This is a json template with Go text/template style {{.Message}}
sections which will be replaced by hive with json encoded inputs to modules. You can also do fancy things with go templates like setting defaults, see cowsay for example. While developing a module, you can use the git hash to test it.
Pass inputs as:
Inputs are a map of strings to strings.
YOU MUST MAKE YOUR MODULE DETERMINISTIC
Tips:
Make the output reproducible, for example for the diffusers library, see here
Strip timestamps and time measurements out of the output, including to stdout/stderr
Don't read any sources of entropy (e.g. /dev/random)
When referencing docker images, you MUST specify their sha256 hashes, as shown in this example
If your module is not deterministic, compute providers will not adopt it and blacklist your module
Writing Advanced Modules
subt
: Thesubt
function allows for substitutions in your template.
This function is a workaround for the lack of direct substitution support in the module. It implements the printf function under the hood, which allows you to format strings with placeholders.
Last updated