Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
991f22b
fix(assets): change debug to warning for missing download module (C9)
cagataycali Apr 3, 2026
ff2327b
fix(simulation): log cleanup errors in __del__ instead of silencing (…
cagataycali Apr 3, 2026
60c7d58
refactor(simulation): optional methods raise NotImplementedError (C19)
cagataycali Apr 3, 2026
625ee6b
fix(model-registry): log asset manager availability state (C26)
cagataycali Apr 3, 2026
2c69f2b
refactor(model-registry): move lazy imports to top-level try/except (…
cagataycali Apr 3, 2026
539b529
fix(factory): add overwrite protection to register_backend (C22, C23,…
cagataycali Apr 3, 2026
1f949f1
refactor(simulation): rename SimulationBackend to SimEngine (C15)
cagataycali Apr 3, 2026
095c2b9
fix(simulation): remove mujoco references not in this PR (C13, C14)
cagataycali Apr 3, 2026
09697e0
fix(model-registry): reorder resolution — local assets before default…
cagataycali Apr 3, 2026
48c31a8
refactor(assets): thin __init__.py, move logic to manager.py (C3, C4,…
cagataycali Apr 3, 2026
a4613b1
refactor(assets): consolidate to STRANDS_ASSETS_DIR, deprecate STRAND…
cagataycali Apr 3, 2026
d32752a
feat(simulation): add models dataclasses and download_assets tool
cagataycali Apr 3, 2026
3924898
refactor(model-registry): simplify and document search paths (C25)
cagataycali Apr 3, 2026
3fe5f86
docs(simulation): document required vs optional methods, improve rend…
cagataycali Apr 3, 2026
e988551
docs: add environment variables and cache directory sections to READM…
cagataycali Apr 3, 2026
92949e0
docs(simulation): clarify get_observation/send_action/run_policy as f…
cagataycali Apr 3, 2026
c2de353
style: apply ruff formatting to all PR files
cagataycali Apr 3, 2026
ca79130
refactor: drop STRANDS_URDF_DIR entirely — no deprecation, just remove
cagataycali Apr 3, 2026
b8ff712
style: fix ruff formatting in model_registry.py (missing blank line)
cagataycali Apr 4, 2026
6bb2a08
fix: resolve 25 mypy errors, remove SimulationBackend alias, fix log …
strands-agent Apr 4, 2026
5d8b516
fix: resolve mypy errors in assets/manager.py and tools/download_asse…
cagataycali Apr 4, 2026
e8f6923
fix: resolve 2 mypy errors — correct type-ignore code, add robot_desc…
cagataycali Apr 5, 2026
3108005
feat: expand robot registry to 68 robots, add user registration API, …
cagataycali Apr 6, 2026
749a3fd
fix: add [sim] extra with robot_descriptions dependency
cagataycali Apr 6, 2026
04b7343
fix: add orientation, mesh_path to SimEngine.add_object + simplify ra…
cagataycali Apr 6, 2026
0e194f5
fix: address awsarron review — 9 mechanical fixes
cagataycali Apr 11, 2026
5acd9f9
fix: resolve 4 ruff lint errors (F401, I001)
Apr 11, 2026
638f5ea
style: fix trailing newline in download_assets.py (ruff format)
Apr 11, 2026
3096920
fix: remove stale main() import from assets/download.py
strands-agent Apr 11, 2026
5e4ba36
refactor: move download logic from tools/ to assets/download.py
strands-agent Apr 11, 2026
2ef00a2
test: remove 10 superfluous tests from test_simulation_foundation
strands-agent Apr 11, 2026
26702af
fix: address @awsarron review — lint, redundant env check, MuJoCo ref…
strands-agent Apr 12, 2026
5510dce
fix: resolve mypy no-any-return in download.py
strands-agent Apr 12, 2026
e6b5838
refactor: remove MuJoCo-specific fields from SimWorld base class
cagataycali Apr 13, 2026
0fda2a9
fix: add path-traversal protection in asset resolution + URL validati…
cagataycali Apr 13, 2026
aebaffc
docs: add security warning to register_robot() docstring
cagataycali Apr 13, 2026
94fef39
feat(newton): stub NewtonSimulation(SimEngine) skeleton with config, …
cagataycali Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,31 @@ while True:
agent.tool.gr00t_inference(action="stop", port=8000)
```

## Configuration

### Environment Variables

| Variable | Description | Default |
|----------|-------------|---------|
| `STRANDS_ASSETS_DIR` | Custom directory for robot model assets (MJCF, meshes) | `~/.strands_robots/assets/` |
| `GROOT_API_TOKEN` | API token for GR00T inference service | — |

### Cache Directory

Robot model assets (MJCF XML files and meshes) are cached in:

```
~/.strands_robots/
└── assets/ # Downloaded robot models (from robot_descriptions / MuJoCo Menagerie)
├── trs_so_arm100/
├── franka_emika_panda/
└── ...
```

To clear the cache: `rm -rf ~/.strands_robots/assets/`

To change the cache location: `export STRANDS_ASSETS_DIR=/path/to/custom/dir`

## Contributing

We welcome contributions! Please see:
Expand Down
6 changes: 5 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,13 @@ groot-service = [
lerobot = [
"lerobot>=0.5.0,<0.6.0",
]
sim = [
"robot_descriptions>=1.11.0,<2.0.0",
]
all = [
"strands-robots[groot-service]",
"strands-robots[lerobot]",
"strands-robots[sim]",
]
dev = [
"pytest>=6.0,<9.0.0",
Expand Down Expand Up @@ -124,7 +128,7 @@ ignore_missing_imports = false

# Third-party libs without type stubs
[[tool.mypy.overrides]]
module = ["lerobot.*", "gr00t.*", "draccus.*", "msgpack.*", "zmq.*", "huggingface_hub.*", "serial.*", "psutil.*", "torch.*", "torchvision.*", "transformers.*", "einops.*"]
module = ["lerobot.*", "gr00t.*", "draccus.*", "msgpack.*", "zmq.*", "huggingface_hub.*", "serial.*", "psutil.*", "torch.*", "torchvision.*", "transformers.*", "einops.*", "robot_descriptions.*"]
ignore_missing_imports = true

# @tool decorator injects runtime signatures mypy cannot check
Expand Down
42 changes: 42 additions & 0 deletions strands_robots/assets/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""Robot Asset Manager for Strands Robots Simulation.

Assets are resolved from ``robot_descriptions`` package or downloaded from
MuJoCo Menagerie GitHub, cached in ``~/.strands_robots/assets/``.
Override with ``STRANDS_ASSETS_DIR`` env var.

Implementation lives in ``assets/manager.py`` — this file is thin exports only.
"""

from strands_robots.assets.manager import (
get_assets_dir,
get_robot_info,
get_search_paths,
list_available_robots,
resolve_model_dir,
resolve_model_path,
)
from strands_robots.registry import (
format_robot_table,
get_robot,
list_aliases,
list_robots,
list_robots_by_category,
)
from strands_robots.registry import (
resolve_name as resolve_robot_name,
)

__all__ = [
"resolve_model_path",
"resolve_model_dir",
"resolve_robot_name",
"get_robot_info",
"list_available_robots",
"list_robots_by_category",
"list_aliases",
"format_robot_table",
"get_assets_dir",
"get_search_paths",
"get_robot",
"list_robots",
]
Loading
Loading