NeevAI(...) |
tier-1, agent_patterns/*, workflow_examples/*, sandbox_lifecycle_controller.py |
with NeevAI() as client: |
AsyncNeevAI(...) |
async_sandbox.py |
async with AsyncNeevAI() as client: |
client.sandboxes.create |
tier-1, agent_patterns/*, workflow_examples/*, sandbox_lifecycle_controller.py, snapshot_fork_restore.py |
sandbox = client.sandboxes.create({...}) |
client.sandboxes.create (restore) |
snapshot_fork_restore.py |
restored = client.sandboxes.create({..., "restore": snapshot_id}) |
client.sandboxes.create (lifecycle) |
sandbox_lifecycle_windows.py |
client.sandboxes.create({..., "lifecycle": {"idle_timeout_seconds": 60}}) |
client.sandboxes.create (BYOI image/command) |
byoi_create.py |
client.sandboxes.create({"image": "docker.io/library/python:3.12", "command": [...]}) |
client.sandboxes.create (labels) |
sandbox_labels.py |
client.sandboxes.create({...}, labels={"team": "payments"}) |
client.sandboxes.list |
sandbox_lifecycle_controller.py |
page = client.sandboxes.list(page=1, limit=20) |
client.sandboxes.list (labels) |
sandbox_labels.py |
page = client.sandboxes.list(labels={"team": "payments"}) |
client.sandboxes.get |
sandbox_lifecycle_controller.py |
sandbox = client.sandboxes.get(sandbox_id) |
client.sandboxes.update |
sandbox_update.py |
client.sandboxes.update(id, {"resources": {"cpu": 2}}) |
client.sandboxes.pause |
sandbox_lifecycle_controller.py |
sandbox = client.sandboxes.pause(sandbox_id) |
client.sandboxes.resume |
sandbox_lifecycle_controller.py |
sandbox = client.sandboxes.resume(sandbox_id) |
client.sandboxes.keepalive / sandbox.keepalive |
sandbox_lifecycle_windows.py |
sandbox.keepalive() |
client.sandboxes.update_timeout / sandbox.update_timeout |
sandbox_lifecycle_windows.py |
sandbox.update_timeout({"idle_timeout_seconds": 300, "max_lifetime_seconds": 0}) |
client.sandboxes.delete |
sandbox_lifecycle_controller.py |
client.sandboxes.delete(sandbox_id) |
client.sandboxes.metrics |
sandbox_lifecycle_controller.py |
metrics = client.sandboxes.metrics(sandbox_id) |
client.sandboxes.audit / sandbox.audit |
audit_trail.py |
trail = sandbox.audit(limit=200) — calls, programs and connections |
sandbox.execution_trace |
— |
sandbox.update({"execution_trace": False}) |
client.sandboxes.update (egress_add / egress_remove) |
update_resize_egress.py |
sandbox.update({"egress_add": {"allow": [{"host": "pypi.org"}]}}) |
sandbox.expose_port / .list_ports / .revoke_port / .get_url |
preview_ports.py |
url = sandbox.get_url(3000); sandbox.expose_port(3000, slug=new_slug) rotates it |
sandbox.labels |
sandbox_labels.py |
sandbox.labels — {} when it has none |
sandbox.addressable |
— |
sandbox.addressable — wait_until_ready() waits for it |
client.sandboxes.create_snapshot |
snapshot_fork_restore.py (via sandbox.snapshot) |
pending = sandbox.snapshot({"name": "demo-snap"}) |
client.sandboxes.get_snapshot |
snapshot_fork_restore.py |
snap = client.sandboxes.get_snapshot(snapshot_id) |
client.sandboxes.delete_snapshot |
snapshot_fork_restore.py |
client.sandboxes.delete_snapshot(snapshot_id) |
sandbox.last_crash / agent.last_crash |
last_crash.py |
crash = sandbox.last_crash — None, or reason / at / storage_reset |
sandbox.update |
sandbox_update.py |
sandbox.update({"resources": {"cpu": 2}}, allow_egress=["api.github.com"]) |
sandbox.snapshot |
snapshot_fork_restore.py |
pending = sandbox.snapshot({"name": "demo-snap"}) |
sandbox.fork |
snapshot_fork_restore.py |
fork = restored.fork("snapshot-fork") |
client.templates.list |
templates_list.py |
page = client.templates.list(limit=10) |
client.templates.get |
templates_list.py |
tpl = client.templates.get(template_id) |
client.agents.create |
create_agent.py |
agent = client.agents.create({"name": "...", "agent_template": "claude-code"}) |
client.agents.list |
— |
page = client.agents.list(page=1, limit=20) |
client.agents.get |
— |
agent = client.agents.get(agent_id) |
client.agents.update |
create_agent.py |
agent = client.agents.update(agent.id, {"resources": {...}}) |
client.agents.pause / .resume |
— |
agent = client.agents.pause(agent_id) / client.agents.resume(agent_id) |
client.agents.delete |
create_agent.py |
client.agents.delete(agent_id) |
client.agents.keepalive / agent.keepalive |
agent_ports_audit.py |
agent.keepalive() |
client.agents.rollback / agent.rollback |
agent_snapshot_fork_rollback.py |
agent.rollback(snapshot_id) |
client.agents.create_snapshot / agent.snapshot |
agent_snapshot_fork_rollback.py |
snap = agent.snapshot({"name": "before-change"}, wait_until_ready=True) |
client.agents.list_snapshots / agent.snapshots |
agent_snapshot_fork_rollback.py |
snaps = agent.snapshots() |
client.agents.fork / agent.fork |
agent_snapshot_fork_rollback.py |
fork = agent.fork("web-fork"); fork.wait_until_ready() |
agent.expose_port / .list_ports / .revoke_port / .get_url |
agent_ports_audit.py |
port = agent.expose_port(3000, slug=random_slug()) |
client.agents.audit / agent.audit |
agent_ports_audit.py |
trail = agent.audit(limit=20) |
agent.idle_timeout_seconds |
agent_ports_audit.py |
print(agent.idle_timeout_seconds) |
client.agent_templates.list |
create_agent.py |
page = client.agent_templates.list() |
client.agent_templates.get |
— |
tpl = client.agent_templates.get(template_id) |
agent.wait_until_ready |
create_agent.py |
agent.wait_until_ready(timeout_ms=120_000) |
agent.refresh |
agent_auto_resume.py |
agent.refresh() |
agent.sandbox |
create_agent.py |
sandbox = agent.sandbox() |
agent.update |
create_agent.py |
agent.update({"resources": {"cpu": 2, "memory_gb": 4}}) |
agent.pause / agent.delete |
create_agent.py |
agent.pause(); agent.delete() |
agent.resume |
agent_auto_resume.py |
agent.resume() — then wait_until_ready() |
agent.to_json |
— |
agent.to_json() |
client.raw.request |
raw_request.py |
data = client.raw.request("GET", path, query={...}) |
sandbox.wait_until_ready |
tier-1 (except raw_request.py), processes.py, process_pool.py, agent_patterns/*, workflow_examples/* |
sandbox.wait_until_ready(timeout_ms=120_000) — after connect_url is set in process examples |
sandbox.refresh |
processes.py, process_pool.py |
sandbox.refresh() — poll until connect_url is set |
sandbox.exec |
parallel_fanout.py, async_sandbox.py, sandbox_metrics.py, agent_patterns/*, workflow_examples/* |
result = sandbox.exec(["echo", "hi"]) / await sandbox.exec(...) |
sandbox.exec_stream |
streaming_exec.py, agent_patterns/minimal_agent.py, agent_patterns/utils/agent_loop.py |
for event in sandbox.exec_stream(cmd): |
sandbox.processes.start |
processes.py, process_pool.py |
proc = sandbox.processes.start(["sleep", "30"]) — after connect_url → Ready → runtime probe |
sandbox.processes.follow |
processes.py |
for event in proc.follow(): |
sandbox.processes.logs |
processes.py |
page = proc.logs() |
sandbox.processes.list |
processes.py, process_pool.py |
sandbox.processes.list() — runtime probe before start; list running processes after |
sandbox.processes.kill |
processes.py |
proc.kill(signal=Signal.TERM) |
SandboxTools / DESCRIPTIONS / PARAMETERS |
agent_patterns/agent_tools_loop.py |
tools = SandboxTools(sandbox, allow_processes=True) |
SandboxTools.call |
agent_patterns/agent_tools_loop.py |
result = tools.call(name, args) |
AsyncSandboxTools |
— |
result = await AsyncSandboxTools(sandbox).call(name, args) |
sandbox.processes.get |
— |
sandbox.processes.get(proc.id) — no dedicated example; proc.wait() uses get(wait=True) |
Process.status |
— |
proc.status() — no dedicated example |
sandbox.processes.kill_all |
process_pool.py |
count = sandbox.processes.kill_all(signal=Signal.TERM) |
Signal |
processes.py, process_pool.py |
proc.kill(signal=Signal.TERM) |
Process.wait |
processes.py, process_pool.py |
final = proc.wait() |
sandbox.files.write |
files_api.py, snapshot_fork_restore.py, agent_patterns/utils/sandbox_tool.py, workflow_examples/repo_analyzer.py |
sandbox.files.write("demo/message.txt", "original state") |
sandbox.files.read |
agent_patterns/utils/agent_loop.py |
data = sandbox.files.read("path.txt") |
sandbox.files.read_text |
files_api.py, snapshot_fork_restore.py |
text = sandbox.files.read_text("demo/message.txt") |
sandbox.files.list |
files_api.py |
entries = sandbox.files.list("demo", recursive=True) |
sandbox.files.upload_file |
upload_download.py |
sandbox.files.upload_file(source, "payload.bin", on_progress=show_progress) |
sandbox.files.upload |
— |
sandbox.files.upload("big.bin", data, chunk_size=512 << 10) — write() uses it above 1 MiB |
sandbox.files.download_file |
upload_download.py |
sandbox.files.download_file("payload.bin", copy) → {"bytes_written": n} |
sandbox.metrics |
sandbox_lifecycle.py, sandbox_metrics.py |
metrics = sandbox.metrics() |
sandbox.pause |
sandbox_lifecycle.py, auto_resume.py |
sandbox.pause() |
sandbox.resume |
auto_resume.py |
sandbox.resume() — then wait_until_ready() |
sandbox.delete |
all examples that create sandboxes |
sandbox.delete() / await sandbox.delete() |
sandbox.to_json |
sandbox_lifecycle_controller.py |
sandbox.to_json() |
sandbox.id / .phase / .connect_url |
tier-1, processes.py, process_pool.py, sandbox_lifecycle_controller.py, agent_patterns/utils/sandbox_tool.py, workflow_examples/* |
print(sandbox.phase, sandbox.connect_url) — polled until connect_url in process examples |
client.close() |
agent_patterns/utils/sandbox_tool.py |
client.close() |