ARL Infrastructure - Python SDK for Kubernetes-based Agent Runtime Layer
Project description
ARL Wrapper
High-level Python wrapper for the ARL (Agent Runtime Layer) client providing simplified sandbox session management.
Features
- Context Manager Support: Automatic sandbox lifecycle management
- Type-Safe API: Full type hints with Pydantic models
- Kubernetes Integration: Direct CRD interaction
- Error Handling: Comprehensive error reporting and retry logic
Installation
uv add arl-wrapper
Quick Start
Prerequisites
Ensure you have a WarmPool created. You can create one programmatically:
from arl import WarmPoolManager
# Create WarmPool (one-time setup)
warmpool_mgr = WarmPoolManager(namespace="default")
warmpool_mgr.create_warmpool(
name="python-39-std",
image="python:3.9-slim",
replicas=2 # Number of pre-warmed pods
)
warmpool_mgr.wait_for_warmpool_ready("python-39-std")
print("✓ WarmPool ready!")
Basic Usage
from arl import SandboxSession
# Using context manager (recommended)
with SandboxSession(pool_ref="python-39-std", namespace="default") as session:
result = session.execute([
{
"name": "hello",
"type": "Command",
"command": ["echo", "Hello, World!"],
}
])
# Access results
status = result["status"]
print(f"Task State: {status.get('state')}")
print(f"Output: {status.get('stdout')}")
Manual Lifecycle Management
For long-running operations or sandbox reuse:
from arl import SandboxSession
session = SandboxSession(pool_ref="python-39-std", namespace="default", keep_alive=True)
try:
session.create_sandbox()
print("✓ Sandbox allocated")
# Task 1: Initialize workspace
result1 = session.execute([
{"name": "init", "type": "Command", "command": ["mkdir", "-p", "/workspace"]}
])
# Task 2: Reuses same sandbox (fast!)
result2 = session.execute([
{"name": "work", "type": "Command", "command": ["ls", "/workspace"]}
])
finally:
session.delete_sandbox()
print("✓ Sandbox cleaned up")
WarmPool Management
WarmPools pre-create pods to eliminate cold-start delays:
from arl import WarmPoolManager
warmpool_mgr = WarmPoolManager(namespace="default")
# Create a new pool
warmpool_mgr.create_warmpool(
name="python-39-std",
image="python:3.9-slim",
sidecar_image="your-registry/arl-sidecar:latest", # Optional
replicas=3,
resources={ # Optional
"requests": {"cpu": "500m", "memory": "512Mi"},
"limits": {"cpu": "1", "memory": "1Gi"}
}
)
# Wait for readiness
warmpool_mgr.wait_for_warmpool_ready("python-39-std", timeout=300)
# List all pools
pools = warmpool_mgr.list_warmpools()
for pool in pools:
print(f"Pool: {pool['metadata']['name']}, Status: {pool['status']['phase']}")
# Delete a pool
warmpool_mgr.delete_warmpool("python-39-std")
Task Step Types
Command Step
{
"name": "run_script",
"type": "Command",
"command": ["python", "script.py"],
"env": {"DEBUG": "1"}, # optional
"workDir": "/workspace", # optional
}
FilePatch Step
{
"name": "create_config",
"type": "FilePatch",
"path": "/workspace/config.yaml",
"content": "key: value",
}
Architecture
- SandboxSession: High-level API using Kubernetes CRDs for task execution
- Task CRD: Operator watches and executes tasks via sidecar
- Auto-generated client:
arl-clientpackage (CRD models)
Task execution flow:
- Client creates Task CRD via Kubernetes API
- Operator watches for new tasks
- Operator communicates with sidecar to execute steps
- Client polls Task status for results
This architecture ensures tasks can be executed from anywhere with cluster access.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arl_env-0.2.4.tar.gz.
File metadata
- Download URL: arl_env-0.2.4.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4f6b45c66ebc448ad1a458b24e9464557e93690615c297f5284c4f2628a7f40
|
|
| MD5 |
28641cc5d1b76ccf2620dcd24e5ca97a
|
|
| BLAKE2b-256 |
bb4b2d58f01678fdac5f2e3c71dce07b34ff752035959c5b2f7b3ed7c426c46f
|
File details
Details for the file arl_env-0.2.4-py3-none-any.whl.
File metadata
- Download URL: arl_env-0.2.4-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
966a8c9bbcff7e90d42c37caa98a47e0d1a2fb276f0ed80ef6c81b262c2c39a1
|
|
| MD5 |
ab01def67ea1f3273c15606dc128d9aa
|
|
| BLAKE2b-256 |
7e221572b1bd57ea29ea76fe8fc1f7516e652617d3a024fd4d68ef6cb152c46f
|