| name | easyremote-remote-agent |
| description | Build low-boilerplate remote agent capabilities with EasyRemote using RemoteSkill, pipeline export/import, and streaming media/voice payloads. Use when an agent needs to register remote functions in a few lines, share them across devices, or consume remote stream outputs safely with gateway/node pressure controls. Use when this capability is needed. |
| metadata | {"author":"easyremote"} |
EasyRemote Remote Agent Skill
Use this skill to package remote capabilities for agent reuse with minimal config.
Build Capability Set
- Create one
RemoteSkill with gateway and namespace.
- Register capabilities with
@skill.remote, @skill.media, or @skill.voice.
- Keep function bodies minimal; real execution is delegated to remote functions.
from easyremote import RemoteSkill
skill = RemoteSkill(
name="voice-agent",
gateway_address="your-vps-ip:8080",
namespace="assistant",
)
@skill.voice(name="transcribe_live", timeout=30)
def transcribe_live(audio):
return audio
@skill.media(name="stream_frames", media_type="video/h264", stream=True, timeout=60)
def stream_frames(source):
return source
Share Across Devices
- Export pipeline JSON from source device.
- Transfer payload through queue/file/RPC.
- Rebuild callable pipeline on target device.
from easyremote import pipeline_function
pipeline_json = skill.export_pipeline(include_gateway=True)
remote_pipe = pipeline_function(pipeline_json)
print(remote_pipe.capabilities())
result = remote_pipe("transcribe_live", b"pcm16-bytes")
for chunk in remote_pipe("stream_frames", "camera://lobby"):
print(chunk)
User-Side Agent Service Install
Use RemoteAgentService when user software should install new skills at runtime.
from easyremote import RemoteAgentService
service = RemoteAgentService(
user_id="alice",
preferred_language="zh-CN",
gateway_address="your-vps-ip:8080",
)
service.install_skill(pipeline_json)
result = service.run_any("transcribe_live", b"pcm16-bytes")
Install Device Abilities at Runtime (Camera/Video)
Use UserDeviceCapabilityHost when remote agent needs to add local hardware abilities.
from easyremote import UserDeviceCapabilityHost
host = UserDeviceCapabilityHost(node)
host.register_action("camera.take_photo", take_photo)
host.register_action("camera.record_video", record_video)
host.install_skill(camera_skill_payload)
Voice and Media Framing
Use stream_audio_pcm to chunk PCM bytes for low-latency voice flows.
from easyremote import stream_audio_pcm
frames = list(stream_audio_pcm(pcm_bytes, frame_bytes=3200, sample_rate_hz=16000, channels=1))
Pass frames as regular function inputs when remote capability expects framed payload.
Pressure Controls (Required for Production)
Apply limits on gateway and node to avoid stream overload.
from easyremote import Server
from easyremote.core.nodes.compute_node import NodeConfiguration, ComputeNode
server = Server(
port=8080,
max_total_active_streams=512,
max_streams_per_node=32,
stream_response_queue_size=256,
)
config = NodeConfiguration(
gateway_address="your-vps-ip:8080",
node_id="node-a",
max_concurrent_executions=8,
queue_size_limit=512,
)
node = ComputeNode(gateway_address=config.gateway_address, node_id=config.node_id, config=config)
Converted and distributed by TomeVault — claim your Tome and manage your conversions.