Skip to content
Peter Pak edited this page Apr 15, 2026 · 15 revisions

RocketSmith

RocketSmith is an end-to-end rocket design, simulation, CAD, and slicing toolchain exposed as an MCP extension. It orchestrates OpenRocket (simulation), cadsmith (parametric CAD), and PrusaSlicer (FDM slicing) behind a single agent, and closes the build loop by feeding real printed-part weights back into the simulation for post-build stability verification.

Gemini CLI and Claude Code are the supported entry points, integrated through their native plugin/extension interfaces.

Pipeline Overview

 Design ──► Simulate ──► Report ──► Mfg Planning ──► CAD (interactive) ──► Slice ──► Calibrate ──► Report ──► Build
 openrocket   openrocket  openrocket  manufacturing    cadsmith             prusaslicer  openrocket  openrocket   hardware

Each stage hands off its outputs to the next. The CAD stage is interactive — the agent pauses for user feedback after rendering complex features (fillets, revolves, polar arrays, fused geometry), all modifications (holes, pockets), and full assembly compositions. Simple features (plain cylinders, extrudes) are verified autonomously. This ensures the user can catch design-intent mismatches early rather than discovering them after all parts are generated.

Every conversation that changes a structural component must end with a flight report — the openrocket_report tool generates a Markdown + PDF report with 6 plots (altitude, velocity, acceleration, stability, thrust/mass, drag/Mach) so the user can visually confirm the design's flight characteristics. A design is not flight-ready until the final calibration stage has re-verified stability against the real printed part weights reported by the slicer.

Project Layout

<project_dir>/
├── openrocket/                    ← OpenRocket design + flight reports
│   ├── <rocket_name>.ork
│   └── reports/
│       └── <timestamp>_<sim>/
│           ├── report.md
│           ├── report.pdf
│           └── *.png              ← 6 flight plots
├── index.html                     ← GUI entry point
├── gui/                           ← GUI bundle, data, and derived files
│   ├── main.js, data.js
│   ├── component_tree.json        ← component hierarchy with DFAM annotations
│   ├── assembly.json              ← spatial layout (references gui/parts/*.json)
│   ├── parts/                     ← per-part JSON metadata (from extract_part)
│   ├── logs/session.jsonl         ← agentic session log
│   ├── progress/                  ← per-part generation progress
│   └── assets/stl/, png/, gif/, txt/ ← visualization assets
├── cadsmith/                      ← CAD scripts and geometry
│   ├── source/                    ← build123d .py scripts
│   └── step/                      ← .step files
└── prusaslicer/                   ← slicer configs and output
    ├── configs/                   ← .ini profiles
    └── gcode/                     ← .gcode files (after slicing)

Documentation

  • Installation — Gemini CLI setup and dependency bootstrap
  • Skills — stability analysis, motor selection, CAD handoff, print preparation, mass calibration. Includes notes on the RAG hookpoints baked into the action skills.
  • Hooks — shell hooks that run on session start, prompt submit, and tool events
  • OpenRocket — MCP tools, component tree, stability, dimension models, agent annotations
  • CADSmith — MCP tools, Part model, script validation, asset pipeline, assembly
  • Manufacturing — MCP tools, ComponentTree model, DFAM rules, annotation flow
  • GUI — GUI server, Agent Feed dashboard, navigation, offline mode

Domain Agents

Agent Responsibility
openrocket Motor database, rocket design (.ork), flight simulation, stability analysis, mass overrides
manufacturing DFAM decisions — annotates the component tree with fate, fusion, and AM dimension adjustments
cadsmith Parametric CAD scripts, STEP generation, asset generation and geometry verification
prusaslicer STEP → gcode slicing, print time and filament weight extraction
gui GUI server lifecycle, page navigation, ensuring data visibility in the dashboard
rocketsmith Orchestrator that sequences the five domain agents into a full pipeline

MCP Tools (high level)

The extension exposes MCP tools under three namespaces:

OpenRocket

  • openrocket_new — create a new .ork design file (name, optional out_path)
  • openrocket_component — CRUD rocket components; supports mass overrides (override_mass_kg) for post-print calibration; optional out_path for component_tree.json
  • openrocket_component (action="read") — generate a hierarchical component tree with mm-scaled dimensions, static stability, agent annotations, and an ASCII side profile; writes gui/component_tree.json. Call with rocket_file_path and no component_name for the full tree.
  • openrocket_flight — assign a motor, create a simulation; optional out_dir for flight JSON files
  • openrocket_database — query the motor and component preset databases

cadsmith

  • cadsmith_run_script — execute a build123d Python script in an isolated uv env with pre/post validation (script_path, out_dir)
  • cadsmith_extract_part — extract volume, surface area, bounding box, centre of mass from a STEP/BREP file; optional out_path for part JSON
  • cadsmith_generate_assets — generate STL mesh, isometric PNG thumbnail, 360° rotating GIF, and/or 360-frame ASCII loading animation for a STEP file; optional out_dir
  • cadsmith_assembly — generate or read gui/assembly.json spatial layout for the 3D viewer; optional out_path
  • cadsmith_bd_warehouse_info — instantiate a bd_warehouse parametric part and return dimensional attributes; optional out_path for STEP export

Manufacturing

  • manufacturing_annotate_tree — apply DFAM rules to gui/component_tree.json, annotating each component with fate, fusion directives, and AM-specific dimension adjustments; optional out_path

GUI

  • gui_server — start/stop the GUI server (production or dev mode); auto-started by rocketsmith_setup, call explicitly to recover
  • gui_navigate — navigate the GUI to a specific route path

PrusaSlicer

  • prusaslicer_slice — slice a STEP/STL into gcode and return print time, filament weight, and layer count
  • prusaslicer_config — manage slicer .ini configurations
  • prusaslicer_database — discover printer/filament presets

Clone this wiki locally