# Graspable 0.19.7: two helpers build a walk-in observatory, one of them in Blender

> One request turned Tidal Observatory into a room you stand in: a helper modelled the room and three brass machines in Blender while another wrote the scene code, at the same time. Then the agent tested it with controllers and hands in an emulated Quest 3.

Michal Takáč, 27 October 2026 · Product
Source: https://graspable.dev/blog/walk-in-observatory-blender-and-graspable

![Inside the walk-in observatory in an emulated headset: a hand pinches a brass ring of the armillary sphere, with the dome, the telescope and the Open dome sign behind it](https://graspable.dev/site/blog/walk-in-observatory/cover.webp)

[Tidal Observatory](https://tidal-observatory.graspable.cloud/) was a tide instrument on a table. Since today it stands in a round observatory with a dome that opens onto the moon, a refracting telescope you aim by its handle, and an armillary sphere whose rings you spin with your hands. One request to the Graspable agent made the change, and two helpers did the work at the same time: one modelled everything in Blender, the other wrote the scene.

[The whole run, recorded: Graspable on the left, Blender on the right. Slow stretches are sped up where marked. At the end, the observatory used in the emulated Quest 3 with controllers and with bare hands.](https://graspable.dev/site/blog/walk-in-observatory/walk-in-observatory.mp4)

Open it in a browser or on a headset, or [continue from it](https://graspable.dev/a/00nokhsf) to get both Blender files and the scripts that build them.

## The request

The request asked for a room 7 m across around the existing instrument, with a dome whose shutters slide apart, a telescope 1.8 m long on an equatorial mount, an armillary sphere 1 m across, a lever that opens the dome and a chart table with a lamp. It named the parts the scene would move (`Dome_Shutter_L`, `Refractor_Tube`, `Armillary_Ring_1` and so on), asked for everything under 400,000 triangles with textures of at most 2048 px, and asked the agent to work with two helpers.

A helper is a copy of the agent that the agent hands one part of the work to. It has the same tools and the same approvals: every Blender command it ran was a card the person approved, and its steps show in the run like the agent's own.

## A contract first, then two helpers at once

Two helpers working at the same time need to agree on names and positions before either starts. So the agent first wrote `source/room-contract.md`: every new part, its pivot, its position in metres and its animation clip. That took a minute. Then it started both helpers in one step.

The scene helper wrote `components/ObservatoryRoom.jsx` against the contract with simple stand-in shapes: the grab on the telescope handle, the spin of each ring that slows down after you let go, the lever, and a camera at the end of the telescope tube that draws the round eyepiece view. It loaded its work in the emulated headset and finished in under three minutes.

The Blender helper read six Blender skills, wrote `source/build_room.py` and ran Blender without a window. Its first builds failed; each time it read Blender's log, changed its script and ran it again. Then it ran the asset check from the [asset QA skill](https://graspable.dev/skills/blender-asset-qa.md), rendered review sheets from four sides and checked that every node in the exported `.glb` sat where the contract said. It saved `source/observatory-room.blend` and exported `public/assets/observatory-room.glb` after about fourteen minutes.

![Blender 5.2.3 showing the observatory room cut open: a ribbed dome, plastered walls with dark wood columns, a brass compass rose in the floor, the telescope, the armillary sphere and a doorway](https://graspable.dev/site/blog/walk-in-observatory/blender-room.webp)

*The room in Blender at the end of the run, seen through the dome. Blender reloaded the file each time the helper saved it.*

The room and its machines add about 108,600 triangles and 10 materials, for 199,131 triangles in the whole scene, with 1024 px photographed textures. The dome's clip, `Dome_Open`, is four seconds long and was keyed in Blender.

## Put together and tested

When both helpers were done, the agent replaced the stand-ins with the real model, added **Open dome** and **Spin sphere** to the toolbar for a flat screen, and hid the room in AR so only the instrument and the three machines stay in your space. Then it tested the scene in the emulated Quest 3: it pointed a controller at the lever and pressed, and the dome opened; it gripped the telescope's handle with a controller and moved it; it switched to hands and pinched an armillary ring and pulled it round. The run took 22 minutes in total.

![The brass telescope aimed through the open dome, with its round eyepiece view above the mount showing the moon inside an amber ring](https://graspable.dev/site/blog/walk-in-observatory/eyepiece.webp)

*With the moon in the telescope's view, the ring around the eyepiece view lights amber.*

The scene changed, so four of the seven headset recordings saved with the project no longer matched. Graspable showed the differences and asked whether to keep the new scene as the reference for later checks; in the film, that is the last thing accepted before the headset footage.

The emulated headset shows that the scene runs, loads its models and answers controllers and hands. It does not show how fast it runs on a Quest 3. The request asked for 72 frames a second there, and that is something to check on the headset itself.

## Helpers now work at the same time

0.19.7 is the release that makes this work. When the agent asked for two helpers in one step, Graspable still ran them one after the other: the scene helper waited until the Blender helper had finished. We found this while recording the film above. Now helpers asked for in the same step start together, and every other tool still runs one at a time, so two commands never race each other in your project.

To use it, ask the Graspable agent for helpers and say what each one owns. A shared file with names and positions, like the contract here, keeps them from guessing each other's work.

The full list is in the [changelog](https://graspable.dev/changelog#v0.19.7). The app updates itself; new installs are on the [download page](https://graspable.dev/download).
