While the Editor tab has unsaved edits, the Simulator renders those live unsaved edits until you save.
Open the simulator
Add the Simulator tab from either panel’s + (New tab) menu, or click the Simulator button in the input bar — a play icon that switches to a pulse icon while the simulator is running. The tab starts compiling your project in the background. When the tab opens, CTOR type-checks (bun typecheck) and compiles (bricks ctor compile) the project, then loads the application into an embedded webview using the stage from your application.json (production, beta, or development).
The Simulator requires
bun to be installed and available in your PATH.Pane controls
The tab’s toolbar has these buttons:
Close the simulator with the × on its tab in the panel — or, in a pop-out window, its Close button; this stops the backend.
Simulator menu
Open the simulator pane’s menu with the ≡ button. It lists:- Viewer — inspect the running application’s runtime Data
- Logs
- Debug View
- Automations
- Mute
- Clear Persistent Data
- Take Screenshot
- Record Events as Automations — turn a recorded session into a BRICKS Automation (see Record interactions as an automation)
- Simulator Settings — choose which Bricks and Generators use simulated stand-ins (see Simulated hardware and models)
- Compatibility
Simulated hardware and models
So the simulator can run without device permissions, API keys, or large model downloads, it substitutes lightweight fallbacks for hardware Bricks and model Generators:- Camera — shows a mock 3D canvas instead of a real camera feed.
- Maps — renders free OpenStreetMap tiles, so no map API key is needed.
- Thermal Printer — renders a simulated on-screen receipt; it is always simulated.
- LLM, Reranker, Speech-to-Text, Text-to-Speech, and Vector Store Generators — run tiny local stand-in models.
Network security
By default, the simulator blocks insecurehttp:// and ws:// requests; secure https:// and wss:// requests are allowed. To test against a host that only serves insecure connections, add it to the project-level allowedInsecureHosts setting to whitelist it.
Dock the simulator’s DevTools
Click DevTools in the tab’s toolbar to dock the simulator’s own Chrome DevTools inspector as a resizable panel at the bottom of the tab. Drag the divider to adjust its height; click DevTools again to hide it. The inspector connects to the simulator’s local CDP server, so no credential is needed. Opening a device’s DevTools from the Local Devices panel routes into this dock when that device is the foreground project’s simulator; other devices open as their own DevTools tab instead.Layout in the panel
The simulator shares its panel with the Diff, Editor, Files, Browser, and DevTools tabs — either the right panel or the bottom panel. Only one tab is visible at a time per panel — switch between them from the tab bar, or with Cmd+1..9 in the right panel. Drag the handle on the panel’s edge to resize it against the chat area.Live recompile
The pane watches your project for changes:- Saving any file under
subspaces/triggers a debounced rebuild viabun compile. - Changes to
.bricks/build/application-config.jsonare pushed into the running webview without a full reload.
Pop-out window
Click Pop out to detach the simulator into its own frameless in-app window. The new window keeps the backend session alive — closing the chat-side pane, switching sessions, or switching projects does not stop a popped-out simulator. Close the pop-out window itself to release the session.Agent-driven simulator
The agent uses the same simulator runtime as the Simulator tab to take screenshots and run BRICKS Automation tests, so what the agent sees matches what you see in the tab. If the tab isn’t open when the agent needs a screenshot, it spins the simulator up in the background instead of opening it on top of your chat. The input bar’s Simulator button — showing its pulse icon — surfaces this with the tooltip Simulator running in background; click it to bring the simulator tab forward. Vision-capable models receive each screenshot inline; the image file is also written to the project so non-vision models can reference it by path. With a fallback vision model set, CTOR also describes each screenshot as text so a non-vision model can act on what it shows.Record interactions as an automation
As you interact with the running simulator, CTOR records each step. Open the simulator pane’s menu (the ≡ button) and click Record Events as Automations to turn the recorded session into a BRICKS Automation (E2E test). Rather than write the test silently, CTOR pre-fills the chat input with a request asking the agent to author the automation — review it and press send, the same way Draw mode hands its result to the input bar. The request describes the recording for the agent:- Real timings — each step carries the wall-clock time it fired and the gap from the previous step, so the agent can reproduce realistic timing between steps instead of uniform delays.
- Named entries — the subspaces, bricks, generators, and canvases referenced by each step are resolved to their editor alias (falling back to their title), so the request reads in terms of your project instead of opaque ids.
- Brick Sketch drawings — a drawing is recorded as the importable state it produces, one step per drawing burst, so replay reproduces the drawn result instead of a noisy stream of per-stroke steps.
Running multiple projects
Each open project keeps its own simulator lifecycle, so a simulator started in one project keeps running while you work in another. Only one simulator pane is visible at a time — whichever project is in the foreground — but background simulators stay alive for agent screenshots, CDP inspection, and pop-out windows.Draw mode
Click Draw in the pane header to overlay an annotation canvas on top of the running simulator. A toolbar appears at the bottom of the pane with these tools:
Pick a stroke color from the palette and set the line width with the slider. Undo and Redo step through your edits — or press Cmd/Ctrl+Z to undo and Cmd/Ctrl+Shift+Z (or Cmd/Ctrl+Y) to redo. Clear removes everything.
Annotate directly on the simulator content — circle a misaligned element, mark a target area, or jot a quick note — then click Save to composite your strokes onto a simulator screenshot and attach the single image to the chat input.
Draw mode works in both the inline pane and the popped-out simulator window. From a popped-out window the saved image is forwarded to the main window’s chat input automatically.
Because Save produces an image attachment, the Draw button is disabled when the selected chat model has no vision support — unless you’ve set a fallback vision model, which describes the annotated screenshot as text.
CDP and bricks devtools
While the simulator is running, CTOR starts a CDP server and writes discovery info to .bricks/devtools.json in your project directory. The BRICKS CLI reads this file to inspect the running simulator from a terminal.
From inside the project directory:
bricks devtools --help for the full subcommand list (brick, input, network, runtime, screenshot, storage).
The discovery file is removed when you close the pane.