Compute on everything, everywhere, all at once.
Client-side distributed computing on the web stack
DCP - Distributive Compute Platform
A distributed computing framework built on modern web technology that creates scalable CPU and GPU compute marketplaces.
Frictionless compute APIs, simple worker deployment, buy and sell compute marketplace, and security grounded in proven web standards.
Distributive Compute Platform
Developer tools, orchestration, compute engines, metering
Try It
DCP Job Demo
Trivial example of a job consisting of an input set, a work function, and work function arguments, distributed to DCP Workers in the demo compute group. For more API specification and examples, please see the Compute API here.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="https://scheduler.distributed.computer/dcp-client/dcp-client.js"></script>
<script>
async function deploy() {
const consoleEl = document.querySelector('#jobConsole');
const log = (msg) => {
consoleEl.value += msg + '\n\n';
consoleEl.scrollTop = consoleEl.scrollHeight;
};
const id = await new dcp.wallet.Keystore( // web-worker-demo-id
"0x5356d59ec41a45672e4be75a8761e1721f7b48941226f2775722907238f805be",""
);
await dcp.identity.set(id);
const inputs = [1,2,3,4,5,6,7,8,9,10];
async function myFunction(x, a, b) {
progress();
return Math.sqrt(x * a) + b;
}
const job = dcp.compute.for(inputs, myFunction, [11, 42]);
job.on('accepted', () => log(`Job ID: ${job.id}\nAwaiting results...`));
job.on('error', (err) => log(`[error] ${JSON.stringify(err, null, 2)}`));
job.on('result', (ev) => log(`[result] ${JSON.stringify(ev, null, 2)}`));
const results = await job.exec(0.024, id);
log(results);
alert('Job complete!');
}
</script>
</head>
<body>
<button id="deploy-btn" onclick="deploy()">Deploy Job</button>
<br><br>
<textarea id="jobConsole" cols="120" rows="16"></textarea>
</body>
</html>
DCP Worker Demo
Trivial example of a DCP Web Worked embedded in a webpage, joining the demo compute group, leaving the public group, and depositing earned compute credits into a specified DCP bank account. Create your own account to collect credits at dcp.cloud. For more API specification and examples, please see the Worker API here.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="https://scheduler.distributed.computer/dcp-client/dcp-client.js"></script>
<script>
let worker = null;
async function toggleWorker() {
const consoleEl = document.querySelector('#workerConsole');
const log = (msg) => {
consoleEl.value += msg + '\n\n';
consoleEl.scrollTop = consoleEl.scrollHeight;
};
if (!worker) {
const id = await new dcp.wallet.Keystore( // web-worker-demo-id
"0x5356d59ec41a45672e4be75a8761e1721f7b48941226f2775722907238f805be",""
);
await dcp.identity.set(id);
worker = new dcp.worker.DistributiveWorker({
paymentAddress: new dcp.wallet.Address(
'0x08d9468dddc9238b08cd72e6b6fdbadf03ae466d'
),
});
worker.on('fetch', ev => log(`[fetch] ${JSON.stringify(ev, null, 2)}`));
worker.on('error', err => log(`[error] ${JSON.stringify(err, null, 2)}`));
worker.on('payment', ev => log(`[payment] ${ev} ⊇`));
await worker.start();
log('DCP Worker started');
document.querySelector('#work-btn').textContent = 'Stop!';
} else {
await worker.stop();
log('DCP Worker stopped');
worker = null;
document.querySelector('#work-btn').textContent = 'Done';
}
}
</script>
</head>
<body>
<button id="work-btn" onclick="toggleWorker()">Run Worker</button>
<br><br>
<textarea id="workerConsole" cols="100" rows="16"></textarea>
</body>
</html>
Workers
In addition to the Web Workers, you can also run Windows Screensaver Workers, Docker Workers, Linux Workers, Android Workers, and more as they become available. See the Workers page for more information.
Security
Security is foundational to the Distributive Compute Platform.
DCP is designed around least-privilege execution, strong isolation, and explicit trust boundaries, and is developed and operated using industry-standard security and governance practices.
Please review our security documentation here:
Deployment Models
FOR INDIVIDUALS
Leverage existing CPU and GPU compute capacity from your existing workstations, edge devices, and digital infrastructure. Keep data on-prem and cut down on cloud computing costs.
Want to learn more?
Contact Neil
FOR ENTERPRISE
Leverage existing CPU and GPU compute capacity from your existing workstations, edge devices, and digital infrastructure. Keep data on-prem and cut down on cloud computing costs.
Want to learn more?
Contact Ryan
FOR ACADEMIA
Create a free on-campus computing cluster for internal research compute capacity augmentation. Option to sell excess capacity to trusted external parties.
Want to learn more?
Contact Dan
FOR PARTNERS
Create a branded compute marketplace, match compute supply and demand and collect a percentage of the transactions.
Want to learn more?
Contact Shawn