Installation
AgentCanvas is not one environment — it is one orchestrator hub (the agentcanvas conda env) surrounded by a fleet of satellite envs, one per simulator or model. Part 1 is the mental model: what envs exist and how they relate. Part 2 is the mechanics: how to install each one and the flow they share.
Part 1. Mental Model
Everything runs through the agentcanvas env: it hosts the backend, the frontend, the graph executor, every method / reasoning nodeset (NavGPT, MapGPT, AO-Planner, …), and all LLM calls. It deliberately never imports a simulator. Each heavy dependency that can't coexist with that stack — Habitat-Sim 0.1.7 (pinned to Python 3.8), MatterSim (its own C++ build), the VLA policy stacks (their own torch/JAX), DetAny3D (CUDA 11.8) — lives in its own satellite env and is reached over server mode (the backend auto-hosts it as a subprocess and talks to it over HTTP). So the picture is hub-and-spoke:
The same picture as a list. One hub + eleven satellite envs. Two installers create no env at all: fetch_ckpt_rt1.sh just downloads RT-1-X checkpoints (used from the VLA envs) and fetch_dataset_openeqa.sh just stages the OpenEQA dataset (the EM-EQA reasoner runs inside agentcanvas with gpt-4o). agentcanvas-test is a throwaway clone of the hub for CI.
| Env | Python | What runs there | Reached via |
|---|---|---|---|
agentcanvas | 3.10 | Hub — backend, frontend, method nodesets, LLM calls | you run it (the canvas) |
ac-vlnce | 3.8 | Habitat-Sim 0.1.7 — VLN-CE continuous navigation | server mode |
ac-smartway | 3.8 | SmartWay navigation stack (on Habitat 0.1.7) | server mode |
ac-mp3d | 3.x | MatterSim — discrete panoramic nav (R2R, R4R) | server mode (MP3D_PYTHON) |
ac-vla-policy | 3.10 | policy_adapter_vla VLA framework (openpi / lerobot / LIBERO) | server mode |
ac-simpler | 3.10 | SIMPLER manipulation evaluation | server mode |
ac-octo | 3.10 | Octo VLA baseline (JAX/Flax) | server mode |
ac-libero | 3.10 | LIBERO manipulation suite | server mode |
ac-fm | 3.11 | Shared FM server — BLIP-2, DINOv2, InstructBLIP, Qwen2.5-VL, Grounding-DINO (hf), SAM | server mode |
ac-detany3d | 3.9 | DetAny3D 3D-detection model server (CUDA 11.8) | server mode |
ac-ram | 3.10 | RAM / RAM++ tagging + SpatialBot VLM (DiscussNav, SmartWay perception) | server mode |
ac-vggt | 3.11 | VGGT feed-forward 3D reconstruction — camera poses + dense depth + world points + point tracking (torch 2.8 / cu126, numpy<2) | server mode |
ac-cotracker | 3.11 | CoTracker3 point tracking — dense point tracking through a video / frame sequence (torch 2.8 / cu126; git-pinned, numpy-2-compatible) | server mode |
ac-hmeqa | 3.x | HM-EQA (Habitat) + Prismatic VLM server | server mode |
Why so many. Two forces: (1) the framework import boundary — the backend in agentcanvas/backend/app/ may never import habitat, habitat_sim, vlnce_baselines, or habitat_baselines; and (2) mutually incompatible pins — Habitat-Sim 0.1.7 needs Python 3.8, DetAny3D needs CUDA 11.8, the VLA stacks need their own torch/JAX, and the frozen FM research stacks (Prismatic, RAM, SpatialBot) pin old transformers that the shared ac-fm env's 5.13 can't host, and VGGT pins numpy<2 against ac-fm's numpy 2.x. Server mode (ADR-server-001) is what lets one hub drive all of them; the env split is ADR-platform-004.
Part 2. Installing the Environments
2.1 Prerequisites & clone
- Linux (tested on Ubuntu 20.04+) with an NVIDIA GPU + recent driver — each env brings its own CUDA runtime, so no system CUDA toolkit is needed.
- Conda or Mamba (Miniforge recommended; the satellite installers use
mambawhen present). - Git — a plain clone is enough. The per-env installers clone the simulators / policies into
third_party/at pinned commits for you (there are no git submodules to initialize).
git clone <repo-url> AgentCanvas cd AgentCanvas
No git submodule step: each install_ac_*.sh clones and pins the third_party/ sources it needs via scripts/install/lib/thirdparty.sh (the single place the upstream commit IDs live). Node.js is not a system prerequisite either — nodejs>=20 ships inside the agentcanvas env.
2.2 The common flow
Every env follows the same shape: one idempotent script per env under scripts/install/ that creates-or-updates a conda env from a project-owned spec. The order is always the same — build the hub first, then add only the satellites you need:
# 1. build the hub first — required by everything else bash scripts/install/install_core.sh # 2. add only the satellite env(s) you need (one script per env, idempotent) bash scripts/install/install_ac_vlnce.sh # e.g. Habitat bash scripts/install/install_ac_mp3d.sh # e.g. MatterSim
Each script: checks prerequisites → creates (or --prune-updates) the env → installs deps, including editable installs from third_party/ → wires up any activation hooks. Re-running a script updates the env in place. The hub script additionally installs the frontend and launches the canvas.
2.3 Per-env specifics
Run the command for each env you need. The Needs column lists what must be present beyond conda + GPU driver; Notes flags anything non-standard.
| Env | Command | Needs | Notes |
|---|---|---|---|
agentcanvas |
install_core.sh (or install_agentcanvas.sh) |
conda/mamba, GPU driver | Built from agentcanvas/environment.yaml (py3.10, PyTorch 2.5/cu12.1, nodejs>=20). Also runs npm install + generates launch.sh. |
ac-vlnce |
install_ac_vlnce.sh |
third_party/{VLN-CE, habitat-lab}, EGL driver |
Python 3.8, PyTorch 1.9/cu111, headless Habitat-Sim 0.1.7; habitat-lab + VLN-CE editable. |
ac-mp3d |
install_ac_mp3d.sh [--osmesa] |
CMake, OpenCV, GLM, third_party/Matterport3DSimulator |
Builds MatterSim from source (EGL/GPU default; --osmesa for CPU). Override path with MP3D_PYTHON. |
ac-smartway |
install_ac_smartway.sh |
Habitat 0.1.7 deps | SmartWay nodeset stack on the same Habitat base as ac-vlnce. |
ac-vla-policy |
install_ac_vla_policy.sh |
third_party/{lerobot, libero} (auto-cloned) |
Single-shot mamba env create; editable lerobot / libero (public upstreams) + openpi-client (vendored in the policy_adapter_vla nodeset). |
ac-simpler |
install_ac_simpler.sh |
third_party/{SimplerEnv, ManiSkill2_real2sim} |
SIMPLER eval; editable simpler_env + mani_skill2_real2sim. |
ac-octo |
install_ac_octo.sh |
third_party/octo |
JAX/Flax stack; JAX is CPU-only on this box. Install is fragile — see install notes. |
ac-libero |
install_ac_libero.sh |
— | LIBERO suite (py3.10). Env name overridable via LIBERO_ENV_NAME. |
ac-fm |
install_ac_fm.sh |
— | Shared FM env (py3.11, torch 2.8/cu126, transformers 5.13); serves BLIP-2, DINOv2, InstructBLIP, Qwen2.5-VL, Grounding-DINO (hf), SAM. |
ac-vggt |
install_ac_vggt.sh |
— | Python 3.11 server for VGGT feed-forward 3D reconstruction (torch 2.8/cu126, numpy<2); weights facebook/VGGT-1B fetched lazily (cc-by-nc-4.0). |
ac-cotracker |
install_ac_cotracker.sh |
— | Python 3.11 server for CoTracker3 point tracking (torch 2.8/cu126; cotracker git-pinned); weights facebook/cotracker3 fetched lazily. |
ac-detany3d |
install_ac_detany3d.sh |
CUDA 11.8 | Python 3.9 model server for 3D detection. |
ac-hmeqa |
install_ac_hmeqa.sh |
Habitat, HM-EQA scenes + questions | HM-EQA evaluation env. |
ac-ram |
install_ac_ram.sh |
torch 2.4.1, RAM Swin-L checkpoint | Python 3.10 server for RAM / RAM++ tagging (DiscussNav / smartway perception) + SpatialBot. |
No env: fetch_ckpt_rt1.sh downloads RT-1-X checkpoints (used from the VLA envs); fetch_dataset_openeqa.sh stages the OpenEQA dataset (reasoner runs in agentcanvas).
2.4 Download data
Simulator evaluations need datasets, scenes, and checkpoints. scripts/data/fetch_data_vlnce.sh fetches them into data/habitat/:
bash scripts/data/fetch_data_vlnce.sh --status # what you already have bash scripts/data/fetch_data_vlnce.sh --r2r --mp3d --ddppo # minimum for VLN-CE (~16GB) bash scripts/data/fetch_data_vlnce.sh --all # everything (ToS prompt for MP3D)
Lands as data/habitat/{datasets, scene_datasets/mp3d, ddppo-models, checkpoints}. Skip entirely for canvas-only / LLM-agent work.
2.5 Run & verify
# 1. launch the canvas (backend :8000 + frontend :5173) conda activate agentcanvas && bash agentcanvas/launch.sh # 2. confirm the framework never pulls in a simulator dependency cd agentcanvas/backend && python -m pytest app/test_import_boundary.py -v
- Backend: http://localhost:8000 (Swagger at
/docs) · Frontend: http://localhost:5173 - For auto-reload during development, use
bash agentcanvas/run_dev.shinstead oflaunch.sh. - LLM keys: copy
agentcanvas/.env.example→.envand setAGENTCANVAS_API_KEY/AGENTCANVAS_MODEL/AGENTCANVAS_BASE_URL.