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.
:notebook: For more information you can check our documentation (specs) draft:
Note The following tests have been conducted on Linux.
Before running the various tests, Make sure the following dependencies are installed and available in your PATH:
go install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest
go install github.com/ethereum/go-ethereum/cmd/abigen@latest
test/e2e/constellation
).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 theproto/
andcontracts/
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
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.
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.