Spaces:
Paused
Paused
Commit History
22 days ago
-
Deploy to HF Spaces
Chandrakiran-088501103
24 days ago
-
Free debugger on OpenCode Zen; separate code and scene model lists
Chandra KiranUnverified signatureThe first repair after a failed check now goes to a free DeepSeek V4 Flash through OpenCode Zen (DEBUG_MODEL), not OpenRouter: recorded as exempt, never billed. If that call fails (rate limit, offer withdrawn, OpenCode missing) the same repair falls back to the next paid tier, and later repairs keep climbing. Scenes use it through a tool-less OpenCode chat (api/zen.py); OpenCode code generation switches to it inside the same session. CODE_MAX_ATTEMPTS is now 3 so the free try never replaces the stronger paid repair. Routing keeps two registries of Chinese open-weight models on OpenRouter, chosen by benchmark and price: code DeepSeek V4 Flash -> V4 Pro -> GLM-5.2, scenes GLM-5.2 -> Kimi K2.6. SCENE_MODELS / CODE_MODELS override them.536e671 -
Raise the shared result-storage limit to 9 GB
Chandra KiranUnverified signatureSTORAGE_LIMIT_GB now defaults to 9 (all testers together), still under R2's free 10 GB.37dfe11 -
Brand the app, strict per-tester GPU shares, free prompt enhancement
Chandra KiranUnverified signatureWeb app, RosDiff by Orcanion: the logo on the splash (short for returning visitors, skippable), sign-in, header and favicon; a 10-step beginner tour with the LiDAR simulator example; the routing line on every result (tier, reason, Why?); the simulator RosDiff picked as the main button plus "Use another simulator" (MuJoCo, MuJoCo Warp, Isaac Sim; Gazebo, Webots and PyBullet listed as not available yet); an estimate card before costly tasks; Helpful / Not helpful with an optional note on scenes, packages and jobs; a usage dialog with the rupee budget, the GPU share and, for admins, the team. GPU budget: MONTHLY_CREDIT_LIMIT_USD (now 29.98) is split equally between COMPUTE_TESTERS (4), so $7.495 each. A job is admitted only if its worst case (run until timeout) fits in both the tester's share and the team limit, and running jobs count at their worst case, so parallel jobs cannot overshoot. Prompt enhancement: each scene and code request is first rewritten into a precise brief by OpenCod…52ba0e1 -
Fix scene generation for robots with an unnamed free joint
Chandra KiranUnverified signaturerobot_facts() joined joint names with ', '.join(), but the Go2 and H1 models have an unnamed free joint, so mj_id2name returned None and every Go2/H1 scene request failed with a TypeError before reaching the model. Unnamed joints are now listed as '(unnamed joint N)' and other unnamed elements are skipped.7f9f21f -
Route every task to a model automatically and budget AI usage in rupees
Chandra KiranUnverified signatureapi/routing.py rates each request's complexity and picks the cheapest capable tier from a model registry (DeepSeek V4 Flash, DeepSeek V4 Pro, GLM-5.3 on OpenRouter by default; MODEL_REGISTRY overrides). A draft that fails its checks is repaired one tier up, so hard tasks reach the strongest model on their own. Scenes also get a simulator choice among what can run them (MuJoCo, MuJoCo Warp, Isaac Sim), with the reason. api/budget.py keeps a ledger of every model call: OpenRouter's reported cost (else list prices), converted to rupees, per tester (125 each) and for the pool (500). OpenRouter-exempt calls are recorded but not deducted. Tasks are refused when the allocation or pool can't cover them and need confirmation above CONFIRM_ABOVE_INR. New: POST /feedback (helpful / not helpful + note, stored with routing and result context) and GET /me/usage (team view for ADMIN_TESTERS).5b063c2 -
Add a web app for testers
Chandra KiranUnverified signatureThe server's root page is now a simple workspace: sign in with your key, then describe a world on the left (pick a robot, press Enter, Run simulation, watch the video, stress test) or a ROS 2 node on the right (pick Humble/Jazzy and Python/C++, read the files, Build & run, download the zip). History, the month's budget and 👍/😐/👎 feedback are built in. Plain HTML/CSS/JS served from api/static/app, light and dark, keyboard and screen-reader friendly, and laid out for phones too. New API calls behind it: /me/history, /generations/{id}, /code/{id}/zip, and video links on /jobs/{id}.d686d47
25 days ago
-
Default the ROS 2 coding model to DeepSeek V4 Flash for the test phase
Chandra KiranUnverified signature79.0% on SWE-bench Verified (V4 Pro: 80.6%) at about a quarter of the price on OpenRouter. V4 Pro stays one CODE_LLM_MODEL line away.a4ef305 -
Default the ROS 2 coding model to DeepSeek V4 Pro
Chandra KiranUnverified signatureCODE_LLM_MODEL now defaults to deepseek/deepseek-v4-pro: the top open-weight SWE-bench Verified score (80.6%) at about $0.44/$0.87 per million tokens on OpenRouter. Scenes stay on GLM-5.3 (LLM_MODEL).8ec300d -
Let ROS 2 code use its own model (CODE_LLM_MODEL)
Chandra KiranUnverified signatureLLM_MODEL stays the scene model; CODE_LLM_MODEL (default: the same) is what OpenCode and the direct code backend use, through the same OpenRouter key. /health shows both.4508afe -
Refuse new jobs while the R2 bucket is near its free tier
Chandra KiranUnverified signatureSTORAGE_LIMIT_GB (default 8) caps what runs can store: the bucket is measured at most every 5 minutes and new jobs get HTTP 507 while it is over the limit. Old files keep expiring after 30 days, which frees space again. python -m api.storage usage shows the current size.115459a -
Keep the default Modal deploy free of stored data
Chandra KiranUnverified signatureCosmos Reason (its 16 GB model Volume, which Modal bills even under a $0 spend limit) is now opt-in with ENABLE_COSMOS=1 at deploy, and AUTO_REVIEW defaults to off. The Hugging Face secret is only attached when MODAL_HF_SECRET is set; without it dataset exports come back as a zip in R2. The basic deploy needs only the R2 secret. New: python -m api.storage expire --days 30 deletes old run files so the bucket stays inside R2's free tier.916d469
26 days ago
-
Add Isaac Sim RTX renders of finished runs
Chandra KiranUnverified signaturePOST /simulate/run/{id}/isaac replays a run in Isaac Sim: worker/usd_scene.py builds a USD stage from the MuJoCo model with every body's pose time-sampled from the run (and a camera that tracks the robot like the MuJoCo video), and Isaac Sim only renders it frame by frame with RTX - no second physics engine, so both videos show the same motion. Deployed as its own Modal app on an L4 (worker/modal_isaac.py) so its large image never slows the main deploy; limited to ISAAC_DAILY_LIMIT renders a day (default 10). The USD stage is tested against MuJoCo's geom positions frame by frame; the Isaac Sim step itself needs the NGC image and a GPU and has not been run yet.2fc178d -
Export runs as LeRobot datasets
Chandra KiranUnverified signaturePOST /datasets/export turns finished runs of one robot into a LeRobot dataset: observation.state and .velocity (the robot's joints), action (the commanded controls), observation.images.main (the video, 640x360) and the scenario text as the task. With HF_TOKEN in the Modal secret it is pushed to the Hub as a private dataset; otherwise the zip is stored with the job. Verified end to end with lerobot 0.4.4 (write, then load back); CI repeats that with a Go2. Trajectories now also carry every body's world pose, for replay renders.b357d7d -
Add a first-pass video review with NVIDIA Cosmos Reason
Chandra KiranUnverified signatureEvery finished run with a video gets a follow-up job (AUTO_REVIEW, on by default; or POST /simulate/run/{id}/review): Cosmos Reason on a Modal L4 watches the video at 2 fps next to the scenario text and the simulator's facts, and answers whether the scene matches, whether the physics look plausible and whether the robot fell, with its reasoning. The verdict shows on the run's report. Weights live in a Modal volume filled once by download_cosmos. Runs now also save trajectory.npz (robot joint positions, velocities and controls at 30 Hz) for dataset export.6772038 -
Add robustness sweeps with MuJoCo Warp
Chandra KiranUnverified signaturePOST /simulate/sweep runs a scene (from a run, a generation, or raw MJCF) as up to 256 copies at once, each with its own friction, object masses, joint noise and a push on the robot, and reports how many fell. MuJoCo Warp runs all worlds on the GPU; without CUDA the same randomization runs in plain MuJoCo, and results agree within a millimetre. Models using contact features Warp lacks (the Go2's 1 mm margins) are adapted and the report says so. The report plots push against friction for every world. CI runs both engines inside the worker image.a7dddb6 -
Add /code/check, more robots, and a real hold controller
Chandra KiranUnverified signatureROS 2 check: POST /code/check (or check: true on /code/generate) runs a generated package through the sandbox. The report shows build/launch/test results, errors, missing dependencies, the nodes and topics that came up, the logs, and the recorded bag in Foxglove. The sandbox now uses CycloneDDS with unicast discovery on loopback (containers have no loopback multicast), and our own shutdown no longer counts as a crash. The interface catalogue adds nav2_msgs, control_msgs and moveit_msgs. Robots: Unitree H1 and Go2 and the Franka Panda join the G1. 'hold' keeps the starting pose with a PD law on torque motors (H1, Go2) and targets on position servos; 'passive' now really switches actuation off. The H1 gets a balanced standing pose (it tips over from Menagerie's home pose); all four hold for 20 s.225dc91 -
Track every backend job with its cost and stop at a monthly budget
Chandra KiranUnverified signatureRuns become one kind of job (sim, sweep, ros_check, review, export, isaac) in the same table, with the hardware it ran on and an estimated cost. New jobs are refused with 402 once the month's estimate reaches MONTHLY_CREDIT_LIMIT_USD (default $28). Sandboxed workers can return files inline; the API stores them in R2. GET /jobs and /jobs/{id} show any job, /report/{id} renders it with its follow-up jobs.1a36c6b -
Use GLM-5.3 via OpenRouter and run simulations on Modal (RunPod optional)
Chandra KiranUnverified signature- LLM settings are provider-neutral (LLM_API_KEY, LLM_BASE_URL, LLM_MODEL), defaulting to z-ai/glm-5.3 on OpenRouter; OpenCode gets the same endpoint as its only provider. - SIM_BACKEND selects modal (default) or runpod. worker/modal_app.py deploys the worker on a T4 (or CPU with MODAL_GPU=none) with a container cap and time limit. - Runs record backend + job_id; GPU time falls back to the worker's own timing on Modal. Existing run tables are migrated.da839c2
27 days ago
-
Keep free objects where the scene puts them when resetting to the robot keyframe
Chandra KiranUnverified signatureMuJoCo pads a robot keyframe with zeros for joints the scene adds, so every free body (boxes, balls) started at the world origin inside the robot and knocked the G1 over. The keyframe is now applied to the robot's own joints only, in both the validator and the worker.cccaf8b -
Fix scene validation breaking when a GL backend is configured
Chandra KiranUnverified signatureImporting worker.handler set MUJOCO_GL=egl for the whole process, and the validation subprocess inherited it; on a machine without EGL, importing mujoco then failed and every scene was reported invalid. Validation never renders, so it now runs without rendering settings, and the handler no longer modifies the environment (the worker image sets MUJOCO_GL itself). Also pass stdin to the CI smoke run so its script actually executes.fab4b5b -
Harden simulation runs: official Foxglove embed, WebM video, CI image build
Chandra KiranUnverified signature- Report page uses Foxglove's embedding library (@foxglove/embed, vendored) with the MCAP as a remote-file source; R2 CORS now allows embed.foxglove.dev; FOXGLOVE_ORG setting - Worker writes a VP9 WebM next to the H.264 MP4 so every browser plays the video; a rendering failure mid-run no longer loses the run - Pin onnxruntime below 1.29, whose Linux build sends Microsoft telemetry, and disable its telemetry events - CI: lint, tests, build the RunPod worker image and run a real job in it04ad412 -
Add GPU simulation runs: RunPod worker, R2 storage, report page
Chandra KiranUnverified signature- POST /simulate/run re-validates the scene, logs the call (tester, time) and submits a RunPod serverless job; GET /simulate/run/{id} for status; GET /simulate/report/{id} (signed link) shows the run summary, video and an embedded Foxglove replay of the MCAP - worker/: MuJoCo simulation with the robot holding its keyframe, Foxglove MCAP (/scene, /tf, /state), H.264 video via EGL with CPU fallback, upload to Cloudflare R2; Dockerfile for RunPod - Usage visibility without caps: runs table, burst warning in logs, review runs/usage commands - R2 setup CLI (CORS for Foxglove, credential check); README setup for R2, the RunPod endpoint and the spend alert5dbd0bf -
Add ROS 2 code generation via OpenCode, README
Chandra KiranUnverified signature- POST /code/generate: exact lookup of named message types plus their nested types, retrieval of distro-specific interfaces and tutorials, OpenCode run headless in a throwaway workspace (GLM-4.6 provider, no shell or web access), one repair round in the same session - Static package validation against the indexed Humble/Jazzy interface definitions: layout, Python/launch syntax, message types that exist - Direct GLM backend as an alternative to OpenCode - Four ROS 2 test scenarios; telemetry and model-list fetches disabled - README: setup, adding tester keys, tester instructions, review workflowbd0a5c7 -
Add Stage 1 MuJoCo scene generation API
Chandra KiranUnverified signature- RAG index (Chroma) built from MuJoCo docs, the MJCF schema and the Menagerie Unitree G1 model - POST /simulate/generate: grounded prompt (robot facts read from the model, Menagerie example, schema rows, retrieved docs), GLM-4.6, sandboxed MuJoCo load + 2 s step test, repair loop on failure - Hashed API-key allowlist with add/list/revoke CLI - SQLite log of every generation, tester feedback endpoint, review CLI - Five MuJoCo test scenarios with structural checks and a runnerf850954