-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
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_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)
- 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
| 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 |
The extension exposes MCP tools under three namespaces:
OpenRocket
-
openrocket_new— create a new.orkdesign file (name, optionalout_path) -
openrocket_component— CRUD rocket components; supports mass overrides (override_mass_kg) for post-print calibration; optionalout_pathforcomponent_tree.json -
openrocket_component(action="read") — generate a hierarchical component tree with mm-scaled dimensions, static stability, agent annotations, and an ASCII side profile; writesgui/component_tree.json. Call withrocket_file_pathand nocomponent_namefor the full tree. -
openrocket_flight— assign a motor, create a simulation; optionalout_dirfor flight JSON files -
openrocket_database— query the motor and component preset databases
cadsmith
-
cadsmith_run_script— execute a build123d Python script in an isolateduvenv 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; optionalout_pathfor 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; optionalout_dir -
cadsmith_assembly— generate or readgui/assembly.jsonspatial layout for the 3D viewer; optionalout_path -
cadsmith_bd_warehouse_info— instantiate a bd_warehouse parametric part and return dimensional attributes; optionalout_pathfor STEP export
Manufacturing
-
manufacturing_annotate_tree— apply DFAM rules togui/component_tree.json, annotating each component with fate, fusion directives, and AM-specific dimension adjustments; optionalout_path
GUI
-
gui_server— start/stop the GUI server (production or dev mode); auto-started byrocketsmith_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.iniconfigurations -
prusaslicer_database— discover printer/filament presets