Skip to content

Running Code

State persists between run() calls within the same sandbox:

cell.run("x = 42")
result = cell.run("print(x * 2)")
print(result.stdout) # "84"
print(result.exit_code) # 0
print(result.latency_ms) # 0.24

For long-running code, use callbacks to stream output in real-time:

result = cell.run(
"for i in range(10): print(f'Processing {i}')",
on_stdout=lambda line: print(f"[live] {line}"),
on_stderr=lambda line: print(f"[err] {line}"),
)

Run commands asynchronously and poll for results:

handle = cell.command("pip install pandas && python train.py", background=True)
# Poll status
while handle.is_running:
time.sleep(1)
print(handle.stdout)
print(handle.exit_code)

Every execution returns a cryptographic receipt:

result = cell.run("print(2 + 2)")
receipt = result.receipt
print(receipt.execution_id) # Unique ID
print(receipt.code_hash) # SHA-256 of input code
print(receipt.result_hash) # SHA-256 of output
print(receipt.timestamp) # Unix ms