Repository navigation
Releases: ToolsEnabled/toolsenabled-sim
Release list
ToolsEnabled Sim 0.1.13 (prerelease)
ToolsEnabled Sim 0.1.13 adds native Windows CLI/MCP support and a self-distributed Codex plugin. Git checkouts and the ZIP include identical pinned runtime dependencies; installation and startup run no npm resolver or browser download. Linux ownership checks, the panes and the exact typed-action refusal remain enforced.
Use a normal, non-elevated Windows terminal. Tested environment: Windows 10 Pro 22H2 x64 build 19045, Node 22.14.0 and Windows PowerShell 5.1.19041.6456. The calibrated medium-token producer passed all 10 steps: private/path tests 8/8, stdio/protocol 6/6, both physics engines 12/12, Unicode installation and all 165 file hashes/private inherited ACLs/current-user owners, eight actual ancestor refusals, four inert pane lifetime/environment/EOF cases and the bounded history checks. The history fixture contains one real run and 255 explicitly synthetic copies; three native pane reads completed in about 9.8 seconds under the 12-second wrapper budget, and entry 257 was refused.
A different worker followed public docs from a fresh folder and passed all 12 normal-user checks on the final ZIP: installation/no-overwrite, both engines delivering three crates with zero collisions and score 300, four real MCP clients per demo with no model calls, 602-record chains and replay, tamper refusal and help. All extracted and installed files matched the final archive. Every temporary task was deleted and all owned Jobs ended at zero.
Elevated engineering is explicitly partial. Producer private-read tests demonstrate refusal of administrator-owned private files. The independent elevated run installed and verified all files but its demo stopped with “MCP exited”; surviving run metadata included six administrator-owned files and two directories. That wrapper did not expose the direct cause, so this is not reported as a passing elevated workflow. Do not repair owners or ACLs to bypass refusal; use the documented normal-user route.
Linux: 145 tests pass, zero fail, one native-only skip; strict plugin validation, 17 packaging tests and dependency/source inventories pass. Two final ZIP builds are identical. Final source is 283751d4f3f2fd686a3c1860d721b4ca0578fa82; the final documentation and derived doc hashes changed after native producer testing, with every runtime/test/dependency/launcher/policy byte verified identical and the final ZIP independently installed and exercised.
Windows 11, native browser capture, real Windows Claude Code/Codex or Claude Desktop host sessions and console GUI remain unqualified/owner-pending. Desktop bundle compatibility remains macOS-only; no signed Windows bundle is claimed. Actual Codex marketplace/model-task evidence covers Linux; its plugin does not implement Claude's pane hooks or origin guarantee. This is self-distribution, with no OpenAI or Anthropic directory approval claim.
The last measured Anthropic portal result remains 0.1.12: five warnings and eight holds. Root npm auto-install and send-side credential-command patterns were addressed, but scanner clearance is unmeasured. Three pane holds and the typed-action refusal remain owner decisions; product/publisher names require reviewer judgment. The three listing metadata warnings remain, and two test warnings were addressed without weakening assertions. Seven large upstream files and standalone MuJoCo WASM may add inspection holds. Publication triggers the accepted main-branch rescan; the release lead reconciles it and opens the form, and the owner submits.
Download the ZIP and SHA256 sidecar, verify before extraction, and follow docs/WINDOWS.md or the Linux README. Private Windows state requires fixed local NTFS and current-user ownership. Native installer recovery is a deliberate new-folder retry; existing destinations and permissions are never repaired. This remains a prerelease, matching 0.1.12.
ToolsEnabled Sim 0.1.12 (prerelease)
ToolsEnabled Sim 0.1.12 (prerelease) fixes what a fresh user hit in the 2026-10-14 re-test of 0.1.11 and removes what the Claude plugin directory's review could flag without removing a feature or weakening a check: the Claude Code mod now starts its reader with a command written as fixed text and reads no environment variable, capture refuses a wrapper script in place of the browser, and replay, the MCP shim, the plugin option and robot.goto explain themselves in plain words. Physics, recording and replay are unchanged; recorded trajectory bytes are identical to 0.1.11. MIT licensed.
What changed
- The mod's reader command is fixed text. The
/simpane and the action preflight start the plugin's reader with/usr/bin/env -i -S 'PATH=${PATH}:/usr/local/bin:/usr/bin:/bin' LANG=C.UTF-8 node tools/sim-view.mjs --panein the plugin folder, and, only whereenvhas no-S(BusyBox, as on Alpine Linux), with the same command andPATH=/usr/local/bin:/usr/bin:/bin. The view, yourconnection_fileandrun_rootpaths, the pane's options and an action's arguments reach the reader as one JSON request on standard input, whichtools/sim-view.mjs --panechecks as strictly as its flags. The mod reads no environment variable;envhands the reader yourPATH. The reader still starts with onlyPATHandLANG, so API keys, tokens andNODE_OPTIONSnever reach it, and every view and action preflight answers byte for byte as before (30 of 30 identical against one live hub at the reader change, before the version bump; in the release only the connection view's "Plugin:" line reads 0.1.12). The README section "What this plugin runs, sends and reads" prints both commands and answers each remaining directory review hold in one sentence. - Capture and wrapper scripts. Capture follows a link in
SIM_CHROMIUM_EXECUTABLEto the file it names and refuses a script such as/usr/bin/google-chromebefore launching: the capture receipt'schromiumSha256, part of frame identity, had hashed the wrapper script instead of the browser. Set it to the real binary, for example/opt/google/chrome/chrome. - Replay.
node tools/replay.mjson a file says the path is not a directory instead of a raw ENOTDIR;--helpand-hprint the usage. - Plugin option.
connection_fileis titled "Connection file (robot or coordinator)", matching the README's Try it, which installs the coordinator's file. - MCP shim after a hub stop. The message says that restarting the hub with the same
--rootwrites the same connection file again, so nothing needs reconfiguring; only a new root needs the new file. robot.goto. Its description says the robot stops at the coordinate, a held crate rides 0.75 m ahead of it, and a delivery goes todeliveryAreas[].robotStops.- Hooks and tests.
/simand the pane's close hook have a.catch. Two process-running tests move unchanged into files that make no HTTP request, andtools/generate-release.py's two release downloads move totools/release_download.py, which only reads bytes. - Unchanged: physics, recording and replay code, the MCP tool names, schemas and hints, the
/simpane, its views and its eight action commands (an action still starts only from your own prompt), dependency versions and vendored bytes (Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0, playwright-core 1.62.0), the Codex manifest.
Get started
- Download
toolsenabled-sim-0.1.12.zipandtoolsenabled-sim-0.1.12.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.12.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.12.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To try the Claude Code plugin, follow the README's "Try it" section. To connect your own agents, see docs/LIVE.md and docs/CLAUDE-INSTALL.md (marketplace commands, one
CLAUDE_CONFIG_DIRper robot agent, per-agent private connection options).
Tested on this exact release (source commit b7b0b481c3d51bcae906f0179c6d6e7d0c17c89c, tag v0.1.12; ZIP SHA-256 8e142b90afa3a9f82b78d7001224fd945383c7e5b29d8fcce4b6e84c2631ae20; Linux, Node.js 22.19.0, Claude Code 2.1.300)
- 138 of 138 Node tests pass headless on source and on the extracted ZIP (132 in 0.1.11), including actual Chromium rendering and the printed capture command run exactly as printed in a POSIX shell. New: both reader commands run for real (only
PATHandLANGreach the reader; aPATHentry with a space; an empty or unsetPATH; BusyBox env's refusal and the second command),--paneanswers exactly as the flags against a live hub and refuses malformed requests, the mod holds exactly the two fixed commands and no environment read, capture refuses a script and resolves a link, replay on a file and--help, and the shim's advice checked against a real restart on the same root. All 15 packaging/scanner tests and the DeepSeek configuration test pass on source and on the extracted ZIP. The 49 plugin hook tests and strict Claude validation pass on source and on the extracted ZIP; strict validation also passes on plugin.json and the marketplace catalog, and lists no environment read for the mod. - The ZIP rebuilds byte for byte three times from this clean commit, twice in the release clone and once in a fresh clone with dependencies from the lockfile's offline cache: 5,462,033 bytes, 145 files under one
sim/wrapper. - From the extracted ZIP, the scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6, the same as 0.1.11. - A local Claude Code marketplace add and install of the extracted ZIP with the coordinator's connection file lists
toolsenabled-sim0.1.12, andclaude mcp listshows its server Connected. - Codex was not run for this release. Real model-driven sessions, native Desktop installation and installation from Codex's /plugins browser remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- A Sim action starts only from your own prompt, at the terminal or through Remote Control. A headless
claude -prun, a scheduled or relayed message, another session or another plugin cannot start one. - A Git-backed install takes the repository's default branch at its current commit. Use the verified extracted ZIP for this exact release and offline dependencies. Catalog registration alone does not establish pane or MCP readiness.
- After a storage failure, the stopped run's recording can end in a partial record; replay cannot verify that run. Start a new hub, with a new run root or once the storage is fixed, to continue.
- The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.11 (beta)
ToolsEnabled Sim 0.1.11 (beta) fixes what a fresh user hit in the 2026-10-13 re-test of 0.1.10: the delivery rule now names the robot's stop point instead of the zone center (a held crate rides 0.75 m ahead of the robot, so a robot sent to the center released its crate outside the zone), and replay, the MCP shim and the live launcher explain a wrong path, a stopped hub and a missing driver label in plain words. Code paths for physics, recording and replay are unchanged; recorded trajectory bytes are identical to 0.1.10. MIT licensed.
What changed
- Delivery rule and
deliveryAreas.deliveryRule, returned bysim.statusandsim.observeand carried by thesim.observe,sim.statusandrobot.releasetool descriptions, used to say "Aim for the zone center".robot.gotomoves the robot, and a held crate rides 0.75 m ahead of it, so a coordinator who sent amber to zone A's center (5, -3.5) released the crate at x=5.72, outside the delivery area (max x 5.70), and delivered nothing. The rule now says to stop the robot 0.75 m short of the zone center, and everydeliveryAreasentry gainscarryOffset(0.75) androbotStops: the robot waypoint for a robot arriving facing east, west, south or north (zone A, arriving facing east: x 4.25, y -3.5). The/sim mappane lists each zone's facing-east stop. README "Try it" prompt 2, docs/MCP.md, docs/LIVE.md, the skill and the deliver command say the same. Tool names, schemas and hints are unchanged; the golden tool-list fixtures carry the new description. - Replay on a wrong path.
node tools/replay.mjson a path that is not a run directory now says what it needs (a run directory containingtrajectory.jsonlandactions.jsonl, such as./runs/demoor a hub'srun-NNNNfolder) and which file is missing, instead of a raw ENOENT. - Chromium for capture and the render tests. README "Render offline" says to set
SIM_CHROMIUM_EXECUTABLEto the real browser binary, for example/opt/google/chrome/chromeor achrome-headless-shellbinary, not a wrapper script such as/usr/bin/google-chrome: the replay test runs the printed capture command with only Node's directory onPATH, where a wrapper script fails before the browser starts. - Live launcher without
driverLabel. The refusal says to adddriverLabelto each assignment and points at the example in docs/LIVE.md. README says the demo'swork-record.jsonhas none, so it needs the field beforetools/live.mjsaccepts it. - MCP shim after the hub stopped. Pointed at a connection file that no longer exists, the shim names the file and says that a stopped hub removes its connection files, so start the hub again and configure the plugin with the new file. Every other refusal keeps its one-line "Invalid SIM_CONNECTION file." message.
- Unchanged: physics, recording and replay code, the MCP tool list's names, schemas and hints, the Claude Code plugin and its
/simmod, dependency versions and vendored bytes (Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0, playwright-core 1.62.0), the Codex manifest from 0.1.10.
Get started
- Download
toolsenabled-sim-0.1.11.zipandtoolsenabled-sim-0.1.11.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.11.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.11.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To try the Claude Code plugin, follow the README's "Try it" section. To connect your own agents, see docs/LIVE.md and docs/CLAUDE-INSTALL.md (marketplace commands, one
CLAUDE_CONFIG_DIRper robot agent, per-agent private connection options).
Tested on this exact release (source commit 5fb932e9f9958e50a12f5b4529eac372673a6e0d, tag v0.1.11; ZIP SHA-256 0667bfe157d1564d9da4c0afb30a98544cbbc8cabf462fc2cc43c81cb1cc9d3c; Linux, Node.js 22.19.0, Claude Code 2.1.296)
- 132 of 132 Node tests pass headless on source and on the extracted ZIP (129 in 0.1.10), including actual Chromium rendering and the printed capture command run exactly as printed in a POSIX shell. New: the advertised robot stop delivers cargo-a to zone A and the zone center does not (checked in the simulation, not only in the text), the shim's message after a hub shutdown, and the launcher's refusal; the replay path test and the delivery-rule tests check the new messages. All 14 packaging/scanner tests and the DeepSeek configuration test pass on source and on the extracted ZIP. The 44 plugin hook tests and strict Claude validation pass on source and on the extracted ZIP; strict validation also passes on plugin.json and the marketplace catalog.
- The ZIP rebuilds byte for byte three times from this clean commit, twice in the release clone and once in a fresh clone with dependencies from the lockfile's offline cache: 5,451,485 bytes, 142 files under one
sim/wrapper. - From the extracted ZIP, the scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6, the same as 0.1.10. - Over the coordinator's MCP connection, the fresh-user defect reproduces on the old guidance and is fixed by the new one:
robot.gototo zone A's center (5, -3.5) releases cargo-a at x=5.72492 (0 of 3 delivered, score 0);robot.gototo the advertised stop (4.25, -3.5) releases it at x=4.974931 (1 of 3 delivered, score 100, 0 collisions). - A local Claude Code marketplace add and install of the extracted ZIP with the coordinator's connection file lists
toolsenabled-sim0.1.11, andclaude mcp listshows its server Connected. - Codex was not run for this release. Real model-driven sessions, native Desktop installation and installation from Codex's /plugins browser remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- A Sim action starts only from your own prompt, at the terminal or through Remote Control. A headless
claude -prun, a scheduled or relayed message, another session or another plugin cannot start one. - A Git-backed install takes the repository's default branch at its current commit. Use the verified extracted ZIP for this exact release and offline dependencies. Catalog registration alone does not establish pane or MCP readiness.
- After a storage failure, the stopped run's recording can end in a partial record; replay cannot verify that run. Start a new hub, with a new run root or once the storage is fixed, to continue.
- The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.10 (beta)
ToolsEnabled Sim 0.1.10 (beta) tidies the Codex plugin manifest for installs from this repository's own marketplace: Codex no longer tries to read the Claude Code /sim mod as a Codex hook file, and the Codex listing gets its website, support and privacy links, the full publisher name, a shorter description and a brand color with enough contrast. Code, physics and recorded trajectory bytes are unchanged from 0.1.9. MIT licensed.
What changed
- No Claude mod read as a Codex hook file.
.codex-plugin/plugin.jsondeclares"hooks": {}. Without ahooksfield Codex readshooks/hooks.json, which here is the Claude Code/simmod and not a Codex hook file. An explicithooksvalue replaces that default discovery, and an empty one adds no hooks. Claude Code is unaffected. - Codex listing details.
interface.websiteURLhttps://toolsenabled.ai/sim/,supportURLhttps://toolsenabled.ai/support/ andprivacyPolicyURLhttps://toolsenabled.ai/privacy/;developerName"ToolsEnabled, Inc.";shortDescription"Coordinate warehouse robots" (27 characters; the limit is 30);brandColor#2fb8a4 (2.47:1 against white) withbrandColorDark#4ddbc6. - Wording. README and docs/CLAUDE-INSTALL.md say to install Sim from the toolsenabled-sim marketplace in Codex's /plugins browser. They used to say "the Plugins Directory", which is the name of OpenAI's public directory; Sim is not listed there.
- Unchanged: runtime code, the MCP tool list, titles and hints, the Claude Code plugin and its
/simmod, dependency versions and vendored bytes (Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0, playwright-core 1.62.0).
Get started
- Download
toolsenabled-sim-0.1.10.zipandtoolsenabled-sim-0.1.10.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.10.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.10.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To try the Claude Code plugin, follow the README's "Try it" section. To connect your own agents, see docs/LIVE.md and docs/CLAUDE-INSTALL.md (marketplace commands, one
CLAUDE_CONFIG_DIRper robot agent, per-agent private connection options).
Tested on this exact release (source commit 54529a1e99536ea8ced380d553bf7bb5ca2052ba, tag v0.1.10; ZIP SHA-256 4336819a72e6752981f0a386a1451b601fc2d94c2b1470523eb2e0c1d68cb02c; Linux, Node.js 22.19.0, Claude Code 2.1.296)
- 129 of 129 Node tests pass headless on source and on the extracted ZIP, the same 129 tests as 0.1.9, including actual Chromium rendering and the printed capture command run exactly as printed in a POSIX shell. The package test now also checks the Codex manifest's empty
hooksobject, publisher, description length and listing links. All 14 packaging/scanner tests and the DeepSeek configuration test pass on source and on the extracted ZIP. The 44 plugin hook tests and strict Claude validation pass on source and on the extracted ZIP; strict validation also passes on plugin.json and the marketplace catalog. - The ZIP rebuilds byte for byte three times from this clean commit, twice in the release clone and once in a fresh clone with dependencies from the lockfile's offline cache: 5,447,079 bytes, 142 files under one
sim/wrapper. - From the extracted ZIP, the scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6, the same as 0.1.9. - A local Claude Code marketplace add and install of the extracted ZIP with the coordinator's connection file lists
toolsenabled-sim0.1.10, andclaude mcp listshows its server Connected. - Codex was not run for this release. The Codex changes follow OpenAI's published plugin documentation and were checked against the public openai/codex source: its hooks loader reads
hooks/hooks.jsononly when the manifest has nohooksvalue. Real model-driven sessions, native Desktop installation and installation from Codex's /plugins browser remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- A Sim action starts only from your own prompt, at the terminal or through Remote Control. A headless
claude -prun, a scheduled or relayed message, another session or another plugin cannot start one. - A Git-backed install takes the repository's default branch at its current commit. Use the verified extracted ZIP for this exact release and offline dependencies. Catalog registration alone does not establish pane or MCP readiness.
- After a storage failure, the stopped run's recording can end in a partial record; replay cannot verify that run. Start a new hub, with a new run root or once the storage is fixed, to continue.
- The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.9 (beta)
ToolsEnabled Sim 0.1.9 (beta) adds a reviewer's "Try it" path to the README, makes SECURITY.md cite this repository's LICENSE for "as is", and moves the one test that runs a printed command in a shell into a file of its own. Code, physics and recorded trajectory bytes are unchanged from 0.1.8. MIT licensed.
What changed
- Try it. README has a "Try it" section with the shortest path from nothing to a working result: start a hub, install the plugin with the coordinator's connection file, then three prompts, each with the result it shows:
/sim statusopens the Sim pane (Tick 0 · 0/3 delivered · 0 collisions · score 0), a plain request to deliver amber's crate ends with 1 of 3 delivered, 0 collisions and score 100, and/toolsenabled-sim:step 60advances one simulated second. No account or API key is needed. - "As is" cites the LICENSE. SECURITY.md says Sim is provided "as is", without warranty of any kind, as this repository's LICENSE (MIT) says. It used to cite https://toolsenabled.ai/terms/, which covers only Fleet and the website.
- Shell-run test in its own file. The replay test that runs the printed capture command in a POSIX shell moved unchanged from
test/audit-views.test.mjstotest/replay-capture.test.mjs, a file that makes no HTTP request of its own. Both files now record ticks through the plugin's MCP server (tools/mcp-client.mjs) instead of a direct HTTP call to the hub. The suite runs the same 129 tests as 0.1.8. - Unchanged: runtime code, the MCP tool list, titles and hints, dependency versions and vendored bytes (Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0, playwright-core 1.62.0).
Get started
- Download
toolsenabled-sim-0.1.9.zipandtoolsenabled-sim-0.1.9.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.9.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.9.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To try the Claude Code plugin, follow the README's "Try it" section. To connect your own agents, see docs/LIVE.md and docs/CLAUDE-INSTALL.md (marketplace commands, one
CLAUDE_CONFIG_DIRper robot agent, per-agent private connection options).
Tested on this exact release (source commit 7377545fce4ce19aa53b289ced00fb8d768af99d, tag v0.1.9; ZIP SHA-256 7c4271b45adcea75b25af27cf01e703ee7c714ab1347bbf436db0d1c5fbdc38f; Linux, Node.js 22.19.0, Claude Code 2.1.296)
- 129 of 129 Node tests pass headless on source and on the extracted ZIP, the same 129 tests as 0.1.8, including actual Chromium rendering and the printed capture command run exactly as printed in a POSIX shell. All 14 packaging/scanner tests and the DeepSeek configuration test pass on source and on the extracted ZIP. The 44 plugin hook tests and strict Claude validation pass on source and on the extracted ZIP; strict validation also passes on plugin.json and the marketplace catalog.
- The ZIP rebuilds byte for byte three times from this clean commit, twice in the release clone and once in a fresh clone with dependencies from the lockfile's offline cache: 5,446,297 bytes, 142 files under one
sim/wrapper. - From the extracted ZIP, the scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6, the same as 0.1.8. - The README "Try it" path, run from the extracted ZIP against a running hub: the
/sim statusreader, launched as the plugin launches it, showsTick 0 · 0/3 delivered · 0 collisions · score 0; the demo's goto, grab, release and step calls for amber through the plugin's MCP server end with 1 of 3 delivered, 0 collisions and score 100; the/toolsenabled-sim:step 60preflight allows the step, which advances 60 ticks. A local Claude Code marketplace add and install of the extracted ZIP with the coordinator's connection file liststoolsenabled-sim0.1.9, andclaude mcp listshows its server Connected. Real model-driven sessions, native Desktop installation and Codex's Plugins Directory installation remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- A Sim action starts only from your own prompt, at the terminal or through Remote Control. A headless
claude -prun, a scheduled or relayed message, another session or another plugin cannot start one. - A Git-backed install takes the repository's default branch at its current commit. Use the verified extracted ZIP for this exact release and offline dependencies. Catalog registration alone does not establish pane or MCP readiness.
- After a storage failure, the stopped run's recording can end in a partial record; replay cannot verify that run. Start a new hub, with a new run root or once the storage is fixed, to continue.
- The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.8 (beta)
ToolsEnabled Sim 0.1.8 (beta) stops the hub as soon as a recording write fails, prints a replay capture command that works for every run, and refuses a FIFO in place of a private file at once, while preserving the pinned physics engines and recorded trajectory bytes. MIT licensed.
What changed
- The hub stops on any failed recording write. Before, only EIO, ENOSPC and EBADF stopped it, and a write cut short by a file-size limit went unnoticed, so after EFBIG, EROFS or EDQUOT the hub kept accepting and journaling calls while the simulated world moved ahead of its record. Now a write to
trajectory.jsonl,actions.jsonlorlive.jsonlthat fails for any reason or writes only part of its record stops the hub: every later call gets "Hub stopped after storage failure", the live clock stops, and the hub's terminal shows one warning naming the error code. - History survives a cut-short run.
/sim runsandsim-view runslist a run whose recording ends in a partial record as unreadable and still show every other run, instead of failing the whole page with "Run recording is incomplete. Reload the view." - Exact capture command.
/sim replayprints atools/capture.mjscommand whose--secondsequals the run's recorded length, so it works for runs shorter than ten seconds and captures the whole of longer runs. A run with no recorded tick yet, such as a just-reset run, gets no capture command and says why. - FIFOs are refused at once. A FIFO given as the connection file, a run file or a scenario file is refused by the existing regular-file check instead of blocking forever: the MCP server prints "Invalid SIM_CONNECTION file.", and the pane and action preflight report the unusable file instead of waiting out their timeout.
- Physics unchanged. Dependency versions and vendored bytes are unchanged: Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0 and playwright-core 1.62.0. The MCP tool list, titles and hints are unchanged.
Get started
- Download
toolsenabled-sim-0.1.8.zipandtoolsenabled-sim-0.1.8.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.8.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.8.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To connect your own agents, see docs/LIVE.md:
node tools/live.mjs --root /absolute/run --work-record /absolute/work-record.json(add--engine mujocofor MuJoCo). See docs/CLAUDE-INSTALL.md for the marketplace commands, oneCLAUDE_CONFIG_DIRper robot agent, and per-agent private connection options.
Tested on this exact release (source commit cccb0fb7657f20ce99a8f48a20f0899c200d9a5d, tag v0.1.8; ZIP SHA-256 268f1e25f22b5a9ea9974caa0b41dd8d1764f89832af23a5fc09b47e5908c7c0; Linux, Node.js 22.19.0, Claude Code 2.1.296)
- 129 of 129 Node tests pass headless on source, including actual Chromium rendering, the printed capture command run exactly as printed, six injected journal failures (a short write and an EFBIG, EROFS or EDQUOT error on each journal) and five FIFO refusals. The 13 new tests fail on 0.1.7. All 14 packaging/scanner tests and the DeepSeek configuration test pass on source. The 44 plugin hook tests and strict Claude validation pass on source and on the extracted ZIP; strict validation also passes on plugin.json and the marketplace catalog.
- Under a real 32 KiB file-size limit (
ulimit -f), 0.1.7 accepted a cut-short tick without an error and kept accepting and journaling calls after EFBIG; 0.1.8 reported the cut-short write, then refused every later call and journaled nothing more. - The ZIP rebuilds byte for byte twice from this clean commit: 5,444,316 bytes, 141 files under one
sim/wrapper. - From the extracted ZIP, the scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6, the same as 0.1.7. - A local Claude Code marketplace add and install from this commit lists
toolsenabled-sim0.1.8, andclaude mcp listshows its server Connected to a running hub. Real model-driven sessions, native Desktop installation and Codex's Plugins Directory installation remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- A Sim action starts only from your own prompt, at the terminal or through Remote Control. A headless
claude -prun, a scheduled or relayed message, another session or another plugin cannot start one. - A Git-backed install takes the repository's default branch at its current commit. Use the verified extracted ZIP for this exact release and offline dependencies. Catalog registration alone does not establish pane or MCP readiness.
- After a storage failure, the stopped run's recording can end in a partial record; replay cannot verify that run. Start a new hub, with a new run root or once the storage is fixed, to continue.
- The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.7 (beta)
ToolsEnabled Sim 0.1.7 (beta) explains how to run several robots on one OS account with Claude Code, gives every MCP tool a top-level title, and makes a missing browser fail with the same clear message in every render test, while preserving the pinned physics engines and recorded trajectory bytes. MIT licensed.
What changed
- Several robots on one OS account. Claude Code stores the plugin's
connection_fileonce per user, insettings.jsonof its configuration directory, not per project: installing for a second robot from another project rebinds the first, andpluginConfigsin a project's settings files is ignored. Give each robot agent its ownCLAUDE_CONFIG_DIRand use it for everyclaudecommand of that agent (or pass a--settingsfile on every launch). README and docs/CLAUDE-INSTALL.md show the commands. - Expected install message. "1 userConfig option not yet set" refers to the optional
run_root; the install succeeded. Add--config run_root=/absolute/private-sim-runto set it as well. - Top-level tool titles. Every MCP tool now has a top-level
title(MCP 2025-06-18) equal to its annotation title. Hints are unchanged:sim.observe,sim.statusandsim.assignmentsare read-only; the nine tools that change the shared world are marked destructive; no tool reaches beyond your computer. - One browser check. All render tests use the same offline Chromium check as capture, so a missing browser always fails with "Offline Chromium missing. Set SIM_CHROMIUM_EXECUTABLE…" instead of a raw launcher error.
- Install details. For a Git-backed install, Claude Code runs
npm ci --ignore-scriptsin the installed plugin directory itself; run it by hand only ifnode_modulesis missing.claude plugin detailsshowsHooks (0)because it counts only event hooks inhooks/hooks.json; Sim loads its mod through that file'smoduleslist. - Physics unchanged. Dependency versions and vendored bytes are unchanged: Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0 and playwright-core 1.62.0.
Get started
- Download
toolsenabled-sim-0.1.7.zipandtoolsenabled-sim-0.1.7.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.7.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.7.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To connect your own agents, see docs/LIVE.md:
node tools/live.mjs --root /absolute/run --work-record /absolute/work-record.json(add--engine mujocofor MuJoCo). See docs/CLAUDE-INSTALL.md for the marketplace commands, oneCLAUDE_CONFIG_DIRper robot agent, and per-agent private connection options.
Tested on this exact release (source commit e382434101397d906b5f1f1350262c94f510f94a, tag v0.1.7; ZIP SHA-256 30aba253a98a7e00af7f98b81e23293877d23fe0e11024400ee422c9e1ce3150; Linux, Node.js 22.19.0, Claude Code 2.1.296)
- 116 of 116 Node tests pass headless on source, including actual Chromium rendering and a test that lists every tool through the real server and pins its top-level title, annotation title and hints. All 14 packaging/scanner tests and the DeepSeek configuration test pass on source. The 44 plugin hook tests and strict Claude validation pass on source and on the extracted ZIP; strict validation also passes on plugin.json and the marketplace catalog.
- The ZIP rebuilds byte for byte twice from this clean commit: 5,439,107 bytes, 141 files under one
sim/wrapper. - From the extracted ZIP, the scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6, the same as 0.1.6. - A local Claude Code marketplace add and install from this commit lists
toolsenabled-sim0.1.7. With oneCLAUDE_CONFIG_DIRper robot, two configurations bound to the amber and teal connection files each showed the server Connected inclaude mcp listand started it with its own robot's file. Real model-driven sessions, native Desktop installation and Codex's Plugins Directory installation remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- A Sim action starts only from your own prompt, at the terminal or through Remote Control. A headless
claude -prun, a scheduled or relayed message, another session or another plugin cannot start one. - A Git-backed install takes the repository's default branch at its current commit. Use the verified extracted ZIP for this exact release and offline dependencies. Catalog registration alone does not establish pane or MCP readiness.
- The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.6 (beta)
ToolsEnabled Sim 0.1.6 (beta) makes the action commands run exactly as typed, gives every MCP tool a title and its hints, and documents what the plugin runs, sends and reads, while preserving the pinned physics engines and recorded trajectory bytes. MIT licensed.
What changed
- Action commands run as typed. Before any model turn, the eight
/toolsenabled-sim:action commands still check that the arguments fit, that you typed the action yourself at the terminal or through Remote Control, and that this connection's role and mode allow it. They no longer replace your arguments with the check's data. If the check itself fails, the command is refused instead of running unchecked. A scenario path typed with repeated spaces is refused, and the model reads the checked scenario file with the normal Read approval. whoamiinsim.status. The status reply names the caller's own role, agent and robot, never the connection capability. The action commands read the robot ID from it.- Tool titles and hints. Every MCP tool has a plain-language title and declares
readOnlyHint,destructiveHint,idempotentHintandopenWorldHint.sim.observe,sim.statusandsim.assignmentsare read-only; the nine tools that change the shared world are marked destructive; no tool reaches beyond your computer. - What the plugin runs, sends and reads. A new README section lists each hook, the one program the plugin starts (its own reader, under a cleared environment), the files it reads, and that it talks only to your hub on 127.0.0.1 and sends nothing to ToolsEnabled.
- Listing details. The plugin manifest names its documentation, privacy (https://toolsenabled.ai/privacy/) and support (https://toolsenabled.ai/support/) pages, and its homepage is https://toolsenabled.ai/sim/. The repository carries the plugin directory's listing icon; the release ZIP leaves it out.
- Physics unchanged. Dependency versions and vendored bytes are unchanged: Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0 and playwright-core 1.62.0.
Get started
- Download
toolsenabled-sim-0.1.6.zipandtoolsenabled-sim-0.1.6.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.6.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.6.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To connect your own agents, see docs/LIVE.md:
node tools/live.mjs --root /absolute/run --work-record /absolute/work-record.json(add--engine mujocofor MuJoCo). See docs/CLAUDE-INSTALL.md for the marketplace commands and per-agent private connection options.
Tested on this exact release (source commit ed4ddf7f5c778db329c0d724267cb42be1c1c4c7, tag v0.1.6; ZIP SHA-256 654a6ae1fcc333c8a8eb745ce7d7ed350e75bb00c5ff24e3f9341d137290885a; Linux, Node.js 22.19.0)
- 116 of 116 Node tests pass headless on source, including actual Chromium rendering and a test that lists every tool through the real server and pins its title and hints. All 14 packaging/scanner tests and the DeepSeek configuration test pass on source. The 44 plugin hook tests and strict Claude validation pass on source and on the extracted ZIP; strict validation also passes on plugin.json and the marketplace catalog.
- The ZIP rebuilds byte for byte twice from this clean commit: 5,437,128 bytes, 141 files under one
sim/wrapper. - From the extracted ZIP, the scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6, the same as 0.1.5. - A local Claude Code marketplace add and install from this commit lists
toolsenabled-sim0.1.6. Configuration generation, stdio transport and plugin hooks are tested locally. Real model-driven sessions, native Desktop installation and Codex's Plugins Directory installation remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- A Sim action starts only from your own prompt, at the terminal or through Remote Control. A headless
claude -prun, a scheduled or relayed message, another session or another plugin cannot start one. - Git-backed catalogs contain source and need
npm ci --ignore-scripts --no-audit --no-fundin the installed plugin directory; use the verified extracted ZIP for offline dependencies. Catalog registration alone does not establish pane or MCP readiness. - The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.5 (beta)
ToolsEnabled Sim 0.1.5 (beta) fixes the public plugin-install route and fresh-user CLI diagnostics while preserving the pinned physics engines and recorded trajectory bytes. MIT licensed.
What changed
- Public plugin marketplaces. The repository and release ZIP include Claude Code and Codex marketplace catalogs for
toolsenabled-sim. AddToolsEnabled/toolsenabled-simwithclaude plugin marketplace addorcodex plugin marketplace add; Claude Code installstoolsenabled-sim@toolsenabled-sim. A Git-backed install needsnpm ci --ignore-scripts --no-audit --no-fundin its installed plugin directory. The verified ZIP includes dependencies and can be added as a local marketplace. - Connection configuration. All five client formats require an absolute existing connection file. The helper preserves that path without reading its private capability; client startup still checks ownership and connection contents.
- Empty events. An unbound offline observer gets an explicit visibility explanation instead of an unexplained blank pane. Private actions remain filtered; shared launcher commits remain visible.
- Capture and verification errors. Capture and artifact verification print one-line usage and errors. Capture refuses bare valued options and removes only output it freshly created when capture fails, including after writing frames; a pre-existing directory is retained.
- Honest prerequisites. No Claude Desktop bundle is attached. Capture uses
SIM_CHROMIUM_EXECUTABLEor an already installed Playwright-cache Chromium; it never downloads a browser. The README explains Rapier 0.17.3's upstream initialization notice beside the quick start. PyYAML 6.x is a test prerequisite only. - Physics unchanged. Dependency versions and vendored bytes are unchanged: Rapier 0.17.3, MuJoCo 3.14.0, Three.js 0.180.0 and playwright-core 1.62.0.
Get started
- Download
toolsenabled-sim-0.1.5.zipandtoolsenabled-sim-0.1.5.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.5.zip.sha256. - With Node.js 22 or later, run
unzip toolsenabled-sim-0.1.5.zip,cd sim,node tools/demo.mjs --output ./runs/demo, thennode tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco, thennode tools/replay.mjs ./runs/demo-mujoco. - To connect your own agents, see docs/LIVE.md:
node tools/live.mjs --root /absolute/run --work-record /absolute/work-record.json(add--engine mujocofor MuJoCo). See docs/CLAUDE-INSTALL.md for the marketplace commands and per-agent private connection options.
Tested on this exact release (source commit 2f47a39806a84b450d8b2eb8b46b0d4a56ec9a27, tag v0.1.5; ZIP SHA-256 87123dec2d4db33c3a1c46fa8a9839003fbc032b3dd7d90a32236540f0ce1800; Linux, Node.js 22.19.0)
- 114 of 114 Node tests pass headless on source and the extracted ZIP, including actual Chromium rendering and capture failure cleanup. The 42 plugin hook tests, DeepSeek configuration test and strict Claude marketplace validation also pass on both. All 14 packaging/scanner tests passed on source; 12 of 14 were rerun and passed from the ZIP. Two ZIP fixture tests were not rerun because they create Git commits in scratch repositories outside the permitted patch clone; no test was changed or weakened.
- The ZIP rebuilds byte for byte twice from this clean commit: 5,428,715 bytes, 141 files under one
sim/wrapper. - The scripted demo delivers three crates with no collisions and replays byte-identically over 600 ticks on both engines. Trajectory SHA-256: Rapier
453aa41446485c2865437652a7c4a6256fb395b8ccf52dc7ae6ec35f4c8e53a5; MuJoCo278254654043d0aa09299940eddb56eef083a0377fd0597868ba2cb10b7ea9d6. - Configuration generation, stdio transport, marketplace source resolution and plugin hooks are tested locally. Real model-driven sessions, native Desktop installation and Codex's Plugins Directory installation remain separate integration qualifications.
Known limits
- Linux was tested. Native Windows is unsupported because Sim relies on POSIX file ownership checks. Native Claude Desktop installation and production bundle signing need separate qualification; no MCPB is attached.
- Git-backed catalogs contain source and need the dependency install above; use the verified extracted ZIP for offline dependencies. Catalog registration alone does not establish pane or MCP readiness.
- The pinned Rapier compatibility initializer prints an upstream notice on stderr once per process. Passing an object to its zero-argument wrapper does not remove it. Recorded physics bytes and MCP stdout are unaffected.
- Seven dependency files exceed 256 KiB; THIRD-PARTY.md lists the shipped files and licenses. No browser binary ships. Identical rendered frames require the same Chromium build and renderer.
- The handoff scanner cannot inspect keys hidden in raw deflate data without a recognizable header.
- One-tick live runs at the default recording cap have a practical ceiling of about 30,000 ticks; larger scenes or heavier traffic can stop sooner. The planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Driver labels are supplied by the operator. Processes running as the same OS user can read private files and act as that user. See SECURITY.md. Security policy: https://toolsenabled.ai/security/; support: support@toolsenabled.ai.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.
ToolsEnabled Sim 0.1.4 (beta)
ToolsEnabled Sim 0.1.4 (beta) adds MuJoCo as an optional physics engine next to Rapier, ships the /sim read-only panes and native action commands prepared in the unpublished 0.1.3 handoff, and hardens the command-line tools. MIT licensed.
What changed
- MuJoCo engine option.
--engine mujocoon the hub CLI, the demo and the live launcher runs the same warehouse on the official MuJoCo WebAssembly build, pinned as@mujoco/mujoco3.14.0: gravity, floor friction and bounded motor forces are on, crates are free boxes that slide and stop under friction, a grabbed crate is welded 0.75 m in front of its robot, and go-to brakes early enough to stop on target. The scripted demo delivers 3/3 crates with no collisions on either engine and replays byte-identically. - Rapier stays the default. It sits behind the same engine interface and is called in exactly the order the earlier code used, so every existing recording replays byte-identically; the demo trajectory bytes are unchanged since 0.1.2.
- The engine is recorded. Every trajectory header names its engine, the demo receipt and
/sim runsshow it, and replay rebuilds the world on the recorded engine. Version-2 headers accept either engine; version-1 headers must name Rapier. A recording whose header namesmujoco@3.14.0needs Sim 0.1.4 or later to verify. The hub's engine is fixed for its lifetime: reset and scenario changes keep it, and no tool argument can change it. /simpanes and native commands (from the 0.1.3 handoff, first published here). Read-only panes for status, help, robots, map, runs, events, scenarios, replay guidance and connection diagnostics, with a separate view quota; eight native Claude Code action commands with before-turn role/mode checks and explicit bound robot IDs; matching namespaced Codex skill verbs and a read-only CLI. Pane readers and action preflights start with an explicit environment allowlist that excludes client credentials, and every reserved pane key is handled in every pane state.- Current-run pointer. An owner-only
current-run.jsonwith the live deadline and settings sits outside the deterministic recordings. Its write is best-effort: a failed sidecar write is reported once per error code on stderr, never fails the command that triggered it and never stops a live hub. - Handoff scanner.
tools/handoff.pyrefuses a hidden LZMA stream even when its header claims both an oversized dictionary and expanded size, keeps accepting ordinary Python bytecode, and fails closed on corrupt or memory-limited compressed input. - Command-line hardening.
--enginewith no value is refused on the hub CLI and the demo instead of silently running Rapier; the demo checks its engine before creating the output directory; a version-1 recording on MuJoCo and an unknown engine id in replay are refused; MuJoCo joint, actuator and weld names stay distinct for every valid scene id; the demo, replay and configuration helpers print one-line errors instead of stack traces; package.json declares the MIT license. - Install line. The ZIP needs no install. A Git checkout runs
npm ci --ignore-scripts --no-audit --no-fundfrom the lockfile's registry integrity pins.
Get started
- Download
toolsenabled-sim-0.1.4.zipandtoolsenabled-sim-0.1.4.zip.sha256, then runsha256sum -c toolsenabled-sim-0.1.4.zip.sha256. - With Node.js 22 or later, extract the ZIP and run
cd sim && node tools/demo.mjs --output ./runs/demo && node tools/replay.mjs ./runs/demo. For MuJoCo:node tools/demo.mjs --output ./runs/demo-mujoco --engine mujoco && node tools/replay.mjs ./runs/demo-mujoco. - To connect your own agents, see docs/LIVE.md:
node tools/live.mjs --root /absolute/run --work-record /absolute/work-record.json(add--engine mujocofor MuJoCo). To use the plugins, see docs/CLAUDE-INSTALL.md.
Tested on this exact release (source commit 651e899, tag v0.1.4; ZIP SHA-256 2bc044f0cc0dad843e077d90ad18271f55b7fde6265c512cb4fd215f7ed325ba; Linux, Node.js 22.19.0)
- 109 of 109 Node tests passed headless from the extracted ZIP, including the real headless-Chromium render tests. From the extracted ZIP, the 42 plugin hook tests pass and
claude plugin validate --strictpasses on Claude Code 2.1.296. From the same source tree, the 14 packaging and scanner tests and the DeepSeek configuration test pass. - The ZIP rebuilds byte for byte from this public source: twice from the reviewed tree and once from this commit.
- From the extracted ZIP, the scripted demo delivers all three crates with no collisions on both engines and replays byte for byte over 600 ticks (trajectory SHA-256
453aa414…on Rapier,27825465…on MuJoCo). The Rapier trajectory is identical to 0.1.2's. - Configuration generation and the stdio transport are covered by the suite. Real model-driven client sessions were not run on 0.1.4; they remain a separate integration qualification.
Known limits
- The download is 5.4 MB, up from 2.7 MB in 0.1.2, because the MuJoCo WebAssembly runtime ships alongside Rapier. Seven bundled dependency files are over 256 KB (Rapier's embedded WebAssembly,
mujoco.js,mujoco.wasm, three.js's and Playwright's bundles); THIRD-PARTY.md lists every shipped dependency file. - Claude Desktop needs separate testing before native install, and no Desktop bundle is attached to this release. Native Windows is not supported, because Sim relies on POSIX file ownership checks.
- The handoff scanner cannot inspect a key hidden in raw deflate data, which has no header to detect.
- For one-tick live runs at the default recording cap, the practical ceiling is about 30,000 ticks; bigger scenes or heavier traffic can stop sooner. The default live step of 60 ticks is not affected.
- The path planner does not predict other robots' future paths; the coordinator schedules crossing traffic.
- Identical frames need the same Chromium build and renderer. Only Linux was tested for this release.
- Driver labels in captions are supplied by the operator. A process running as the same user can act as you. See SECURITY.md.
ToolsEnabled is not affiliated with or endorsed by Anthropic, OpenAI, DeepSeek, Cursor, Google DeepMind or any other AI provider.