Kernel Evolution
Share a smaller GPU pool across agents. Exclusive access and optional workspace isolation help evaluations stay reliable.
Shared GPU capacity. Reliable evaluation.
Independent scaling.
Share a smaller GPU pool across agents. Exclusive access and optional workspace isolation help evaluations stay reliable.
Scale evaluations across GPUs and nodes through a unified entry point. Grow agent workloads and compute capacity independently.
Agents generate and revise code in their own workspaces. KCoral runs the evaluation and returns feedback.
Schedule & execute
Each request is a self-contained program over HTTP. Compose the operations below and select the results to return.
uploadSend source code, tensors, bytes, compiled libraries, or files.
get_functionSelect a named function or object from a module or library.
runCall a function with arguments and keep its returned value.
returnChoose values, files, or folders for the response.
The execution backend for the protocol, from a single GPU host to a pool of compute nodes.
SupervisorMonitor & restart server
SupervisorMonitor & restart server
GPU stages run exclusively. Functions marked cpu_only=True release GPU access while they run.
With bubblewrap enabled, each request gets a private writable workspace and read-only runtime dependencies.
Content-addressed caches avoid sending the same code, data, and compiled libraries repeatedly.
Start the GPU host first, then install the client and run a program.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install 'kcoral[server]'kcoral server --device gpu --gpus 0 \
--host 0.0.0.0 --port 8000python3 -m venv .venv-client
source .venv-client/bin/activate
python -m pip install kcoralSave as example.py.
Run a calculation on the GPU host and return the result.
To connect from another machine, replace localhost with the GPU host's address.
from kcoral import Client, Program
program = Program()
module = program.upload(kind="module", source="""
def add_one():
import torch
return torch.arange(4, device="cuda") + 1
""")
fn = program.get_function(module=module, name="add_one")
output = program.run(fn=fn, args=[])
program.return_(key="output", value=output)
with Client("http://localhost:8000") as client:
result = client.execute(program)
print(result["output"]) # [1 2 3 4]