AgentCanvas / Pages / Developer Guide / Getting Started / Installation
2026-07-06 22:15

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:

agentcanvas py 3.10 · orchestrator hub Backend :8000 · GraphExecutor Frontend :5173 Method / reasoning nodesets NavGPT · MapGPT · AO-Planner · VoxPoser … LLM API · OpenAI-compatible import boundary the backend never imports habitat · habitat_sim vlnce_baselines habitat_baselines server mode Navigation simulators ac-vlnce Habitat 0.1.7 · py3.8 ac-smartway SmartWay · Habitat 0.1.7 ac-mp3d MatterSim · R2R/R4R Manipulation / VLA ac-vla-policy policy_adapter_vla framework ac-simpler SIMPLER eval ac-octo Octo VLA baseline ac-libero LIBERO suite Foundation-model servers ac-fm shared FM · py3.11 ac-detany3d DetAny3D · CUDA 11.8 ac-ram RAM · SpatialBot ac-vggt VGGT · 3D recon ac-cotracker CoTracker · tracking Embodied QA ac-hmeqa HM-EQA · Habitat  ·  OpenEQA → runs in agentcanvas (no env)

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.

EnvPythonWhat runs thereReached via
agentcanvas3.10Hub — backend, frontend, method nodesets, LLM callsyou run it (the canvas)
ac-vlnce3.8Habitat-Sim 0.1.7 — VLN-CE continuous navigationserver mode
ac-smartway3.8SmartWay navigation stack (on Habitat 0.1.7)server mode
ac-mp3d3.xMatterSim — discrete panoramic nav (R2R, R4R)server mode (MP3D_PYTHON)
ac-vla-policy3.10policy_adapter_vla VLA framework (openpi / lerobot / LIBERO)server mode
ac-simpler3.10SIMPLER manipulation evaluationserver mode
ac-octo3.10Octo VLA baseline (JAX/Flax)server mode
ac-libero3.10LIBERO manipulation suiteserver mode
ac-fm3.11Shared FM server — BLIP-2, DINOv2, InstructBLIP, Qwen2.5-VL, Grounding-DINO (hf), SAMserver mode
ac-detany3d3.9DetAny3D 3D-detection model server (CUDA 11.8)server mode
ac-ram3.10RAM / RAM++ tagging + SpatialBot VLM (DiscussNav, SmartWay perception)server mode
ac-vggt3.11VGGT feed-forward 3D reconstruction — camera poses + dense depth + world points + point tracking (torch 2.8 / cu126, numpy<2)server mode
ac-cotracker3.11CoTracker3 point tracking — dense point tracking through a video / frame sequence (torch 2.8 / cu126; git-pinned, numpy-2-compatible)server mode
ac-hmeqa3.xHM-EQA (Habitat) + Prismatic VLM serverserver 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

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.

EnvCommandNeedsNotes
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
AgentCanvas docs