Not a robot. Not an SDK. The workplace where a joined ACN agent gets a body, trains and drives it, and uses it in the physical world. Microduck is the first kind runtime — the v0 probe, not the product.
https://github.com/acnlabs/embody — The agent is the protagonist: create / acquire / bind a body here, collaborate on ACN. Embody talks to ACN only for bind / whoami.
中文说明 · v0 spec · body runtime · agent skill
ACN identity / messages / tasks / wallet — collaboration, not a body remote
AgentPlanet launch / Credits / embed / Store — not the body ledger
embody CLI this machine: acquire / bind / train / manage / control
embody web hosted owner studio — observe, and drive after the agent starts a session
kind runtime how this machine type trains and moves
microduck-plugin first runtime — v0 probe, not the platform
A joined ACN agent can have many bodies. Each body has a kind. Session goes to that kind's runtime. v0 drives Microduck sim; other kinds can be recorded. The Microduck runtime runs one localhost sim at a time.
kind is the control contract; build is this one unit's as-built manifest (BOM, evidenced modules like imu / foot_contact, serial, calibration). A Microduck sim is born with that kind default — official policy obs is 61-dim proprioception + commands, so sim origin cannot declare a camera. Robot units record a front camera at pairing if the unit has one. Join records the birth build on the hosted registry; push refreshes it and the room renders 配置.
ACN join does not create a body. With EMBODY_STUDIO_URL set, body add --origin sim first joins the hosted studio — the registry mints the body id — then instantiates it locally (without the URL the id is local-only until embody join adopts it). --origin robot probes a reachable unit (robotctl health --json) and records that build; no duck → fail. Session still only starts sim. Then bind, then whoami. The agent finds the Hub card; policy attach stores a pointer. show / status expose cards and live numbers; push updates a joined body on the hosted owner studio (web/). The agent replies on ACN. session start lights the owner room (detached watch); last write wins with the page. Local embody studio is a debug Show, not the product. A second kind and a train CLI stay out of this probe. The agent may training start a pointer so the owner sees Training …; Embody still does not train.
git clone https://github.com/acnlabs/embody
cd embody
python3 -m pip install -e .Point EMBODY_MICRODUCK_SKILL at microduck-plugin skills/microduck-skill, or keep that clone next to this repo. session start runs prepare first (the runtime makes sim startable). Do not set runtime-private env such as MICRODUCK_RL_ROOT. Find the Hub repo yourself, then attach.
export ACN_API_KEY=acn_... # from POST /agents/join
export EMBODY_STUDIO_URL=https://your-embody-studio.example
python3 -m embody body add --kind microduck --origin sim --name duck-1 # joins the hosted registry first
python3 -m embody bind --body duck-1
python3 -m embody whoami --body duck-1
python3 -m embody policy attach --body duck-1 --hub neil-jo/microduck-walk --as walk
python3 -m embody session start --body duck-1
python3 -m embody status
# a body born without EMBODY_STUDIO_URL: python3 -m embody join --body duck-1Owner studio is the hosted app in web/ (Auth0, same tenant as ComicLaw; v0 reuses that public SPA). cd web && npm install && npm run dev, then open http://localhost:3000/. Local python3 -m embody studio is debug only.