File operations, API calls, and device control translated into a text-based interface for agents. All actions are policy-checked before execution.
Part of the Plato ecosystem.
- FileHand —
ls,cat,write,mkdir,rmwith path-based access control - ApiHand —
get,post,put,deletewith domain allowlists - DeviceHand —
on,off,status,configurefor IoT and hardware - YAML policy — configure allowed/denied paths, domains, and devices
- ActionResult — structured results that agents can parse
use plato_manus::{Manus, HandPolicy, DeviceState};
let policy = HandPolicy::permissive();
let mut manus = Manus::new(policy);
// File operations
manus.write("/tmp/hello.txt", "world")?;
let content = manus.read("/tmp/hello.txt")?;
let listing = manus.ls("/tmp")?;
// Device control
manus.register_device("light", DeviceState::Off);
manus.device_on("light");
let status = manus.device_status("light")?;
// Generic command
let result = manus.execute("read /tmp/hello.txt");allowed_paths:
- /tmp
- /home/agent/workspace
denied_paths:
- /etc
- /root
allowed_domains:
- api.example.com
allowed_devices:
- light
- thermostatThe "hands" of plato-shell. When an agent needs to interact with the real world — read a file, call an API, turn on a light — manus handles it with policy guardrails. Used alongside plato-policy for access control.
[dependencies]
plato-manus = "0.1"MIT