OPEN ROBOT MANIPULATION

See.
Act.
Observe again.

Connect model decisions to a physical feedback loop. Run GPT and local VLA policies in MuJoCo, inspect each action, and replay the complete episode.

Explore the recorded run interactively in your browser. Live simulation runs locally.

Python 3.12MuJoCoLIBEROGPT + VLA
RECORDED POLICY LOOPGPT · LIBERO · PANDA
A recorded LIBERO scene with the Panda arm, bowls and a plate
RECORDED · EXTERNAL CAMERA
0.00 / — s
Simulation time · Model waits omittedFull episode
∥

The policy sees images and robot state.
The evaluator stays separate.

01 / THE FRAMEWORK

Close the loop. Inspect every step.

A shared interface for model inference, simulator control and recorded feedback. See what the policy asked for and what the robot actually did.

01

Observe

Dual-camera RGB Robot proprioception

SENSOR INPUT
02

Decide

Structured GPT actions or a local VLA policy

POLICY
03

Act

Validate and track targets MuJoCo / LIBERO

LOCAL CONTROL
04

Check

New images and motion Execution status and error

FEEDBACK
Fresh sensor evidence for the next decision
Independent evaluationObject ground truth, rewards and success signals go to the viewer and result records only.EVALUATOR ≠ POLICY INPUT
A / INTERFACES

One framework, multiple policies

Use GPT vision and structured output, or run SmolVLA, Diffusion Policy and ACT in an isolated inference environment. Each adapter preserves its observation and action protocol.

Explore the architecture
B / CONTROL

Debug a single action

Step once, pause after an action, or continue. Inspect the requested TCP target, actual displacement and controller error before allowing the next decision.

Use the control interface
C / RECORDING

Replay the complete episode

Record the initial scene and every native control step. Review both cameras, action notes and the independent result, or export a continuous MP4.

Record and export

02 / THE EPISODE

One task. Every step recorded.

Actual simulator footage with an independent task result. This page plays saved media; it does not call a model or run a simulator.

RECORDED DEMO

Loading the task record

Model and settings are loaded from the episode

—

Selected decision frames

Observation points from the same episode, paired with action notes. These are not continuous video.

01 / EXTERNALRGB 512
Recorded external camera frame
02 / WRISTRGB 512
Recorded wrist camera frame

Selected decision frames · Original order · Not continuous video

—model decisions
—native control steps
—ssimulation time
PendingIndependent task result

Loading run conditions
Task completion is determined by the independent simulator evaluator. One episode does not establish a benchmark success rate.

Read the results

03 / MODEL EXAMPLES

What each model actually did.

Recorded examples on an official LIBERO task. Each row describes one run, with its own controller and inference setup.

Actual model runs with independently scored task results
ModelOfficial resultPolicy callsInference callsControl stepsConfiguration and scope
Loading recorded model examples

These are individual examples, not success-rate estimates. Budgets, action chunks and control methods differ; step counts and timings do not form a speed ranking.

Check configurations and results

04 / GET STARTED

Run the loop on your machine.

Start with simulation and manual control, then connect a model. The main application, LIBERO and VLA inference use separate environments.

01

Set up the main environment

macOS / Linux · Python 3.12

git clone https://github.com/Daniel-rmc/ManiLoop.git
cd ManiLoop
python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python -m maniloop demo

Open 127.0.0.1:8765 for the default tabletop demo. Starting the simulator and using manual controls requires no model key. Use another terminal, or stop the demo with Ctrl+C, before installing LIBERO.

Full setup and Windows instructions
02

Add LIBERO

A separate Python 3.10 simulation environment

.venv/bin/python -m pip install uv
.venv/bin/python scripts/setup_libero.py \
  --uv .venv/bin/uv
.venv/bin/python -m maniloop demo \
  --backend libero --port 8767

Open 127.0.0.1:8767 on your machine. Git, network access and a supported graphics setup are required. VLA weights are optional.

Requirements and headless setup
CONNECT A MODEL

Give the policy a turn.

Connect an API service with image and structured-output support, or use the ChatGPT login channel of a recent official Codex CLI. Run diagnostics, then try a small movement. Model requests use your provider or account quota.

Connect your model. Inspect its actions.

Questions and contributions