comrade-coop / apocryph

A decentralized compute marketplace for running pods securely and confidentially
https://apocryph.network/
GNU General Public License v3.0
41 stars 8 forks source link

Apocryph

Apocryph is a decentralised three-sided compute marketplace, allowing end-users to deploy their own personal instance of "cloud" software and developers to train AI/ML models or deploy arbitrary software applications to pre-verified machines in the marketplace. All programs would run inside a secure computing enclave that no one else can access (using TEE technology) for a modest fee (however much the machine provider charges; it's a marketplace) and with regular uptime and data storage SLAs; "cloud" software developers are being rewarded for providing the software (essentially use cases) to the marketplace with a fraction of the fees generated by the instances of their software.

Discord

:notebook: For more information you can check our documentation (specs) draft:

Spinning up a local testing environment

Note The following tests have been conducted on Linux.

Dependencies

Before running the various tests, Make sure the following dependencies are installed and available in your PATH:

Clone and cd into the project:

git clone https://github.com/comrade-coop/apocryph
cd apocryph

Run the following commands to complete all necessary build steps and generate the required files for running the tests.

npm i && turbo sync 

Rerun turbo sync whenever you change files under the proto/ and contracts/ folders.

To start a local environment for e.g. integration-testing or evaluating the project, you can use tilt with Tiltfile in the test/e2e folder.

You can use it, for example, by running the following commands:

# Create a kind cluster:
ctlptl create cluster kind --registry=ctlptl-registry --kubernetes-version=v1.31.0
# Start tilt and run the nginx test:
tilt up -- --include ./test/e2e/nginx/Tiltfile

The first command will spin up a kind cluster with a local registry. Then, the second command will, after checking that any additional dependencies are met, then deploy all necessary prerequisites into local cluster, and finally deploying a pod from a manifest file into the cluster.

Once you are done playing around with the test, run the following commands to clean up:

# Clean up the local cluster:
tilt down -- --include ./test/e2e/nginx/Tiltfile
# Delete up the local cluster:
ctlptl create delete kind

Contributing

As it is, this project is still in its infancy, and most non-trivial contributions should be done only after discussing them with the team -- or else risk missing the point. So, if you fancy contributing to the project, please feel free to hop on our Discord server or just open/reply to an issue discussing your concrete ideas for contribution.

Also, see the PUBLISHING.md documentation for more details on the overall structure of the project.

License

SPDX-License-Identifier: GPL-3.0


NOTE: If you're looking for the code for the consensus-based approach used in Apocryph from 2020 to 2022, please see this issue for more details.