# execution layer

Agent Runtime — how developers build on VAOS

Once an action passes validation, it leaves the runtime as a typed event — REST, WebSocket, MQTT, ROS, dashboard. The Agent Runtime is the developer surface where you wire VAOS into the rest of your system.

# what an agent is

Async, plugin-based, lifecycle-managed

⚙️

Async runtime

Event-driven core. Agents subscribe to scene + validated-action streams.

🔁

Lifecycle

Start · pause · resume · stop · restart. Health probes built in.

🧩

Plugin system

Drop-in extensions for new event handlers, new action sinks, new external integrations.

📡

Action APIs

REST, WebSocket, MQTT, ROS 2 nodes. Robot, controller, or dashboard — all uniform.

🛠️

Robotics integration

ROS 2 native publishers for scenes and validated actions. ros-vaos package shipping in v0.10.

🎯

Event handling

Pattern-based dispatching. Hot-swap handlers without restarting the runtime.

# minimal agent

Five lines is enough

from vaos import Runtime, Agent

runtime = Runtime(camera=0, hardware="rk3588")

async def on_scene(scene):
    if scene.event.type == "restricted_zone_entry":
        await runtime.action("notify", target="safety-team")

runtime.attach(Agent(on_scene=on_scene))
runtime.start()

Build agents, not pipelines.

VAOS handles perception, cognition, validation, and memory. You handle the action surface.

Quickstart Full SDK Examples