Skip to main content

Let agents design, simulate, and build your rocket.

Project description

pytest macos ubuntu windows codecov

RocketSmith

Let agents design, simulate, and build your rocket.

Installation

uv add rocketsmith

OpenRocket

RocketSmith uses orhelper to interface with OpenRocket. orhelper 0.1.x targets the net.sf.openrocket Java package, which was present in OpenRocket 23.09 and earlier. OpenRocket 24+ reorganized its packages to info.openrocket and is not currently supported.

Install OpenRocket 23.09 and a Java runtime with a single command:

rocketsmith openrocket install

This will:

  1. Install a Java runtime if none is found (via brew install openjdk on macOS, apt on Linux, winget on Windows)
  2. Download the OpenRocket 23.09 JAR to ~/.local/share/openrocket/ (macOS/Linux) or ~/AppData/Local/OpenRocket/ (Windows)

To verify the installation:

rocketsmith openrocket version

Agent Setup

Claude Code (Plugin — recommended)

Add the rocketsmith marketplace and install the plugin:

/plugin marketplace add ppak10/RocketSmith
/plugin install rocketsmith@rocketsmith

This registers the MCP server and installs the rocketsmith agent automatically. No additional steps required.

To update:

/plugin marketplace update rocketsmith

Claude Code (manual install)

If you prefer to manage the installation yourself:

rocketsmith mcp install

To upgrade the package and refresh the agent file:

rocketsmith update

Claude Desktop

rocketsmith mcp install claude-desktop --project-path /path/to/RocketSmith

Note: Restart Claude Desktop after installation for changes to take effect.

MCP Tools

The following tools are exposed to agents via the MCP server.

Tool Description
rocketsmith_setup Check or install dependencies (Java, OpenRocket, PrusaSlicer)
workspace_create Create a new workspace
openrocket_new Create a new empty .ork file
openrocket_inspect Return the full component tree of an .ork file
openrocket_component Create, read, update, or delete a component (action parameter)
openrocket_database Query the OpenRocket built-in database for motors, presets, or materials
openrocket_flight Create or delete a simulation entry with a motor assignment (action parameter)
openrocket_simulate Run all simulations in an .ork file and return flight summaries
prusaslicer_slice Slice a model with PrusaSlicer

The standard agent workflow is:

openrocket_new → openrocket_component (×N) → openrocket_flight (create) → openrocket_simulate

openrocket_component actions

The openrocket_component tool accepts an explicit action parameter:

Action Required params Description
create component_type Add a new component. Valid types: nose-cone, body-tube, inner-tube, transition, fin-set, parachute, mass
read component_name Return properties of a named component
update component_name Modify one or more properties of a named component
delete component_name Remove a named component

inner-tube represents a motor mount tube — the standard way to house a motor inside a larger airframe. It is placed inside a body tube and its diameter determines the motor size.

All dimensional properties are in SI units (metres, kilograms).

Preset and material support (create and update):

Parameter Description
preset_part_no Part number from openrocket_database (e.g. BT-20). Loads manufacturer geometry and material as a baseline.
preset_manufacturer Optional manufacturer filter when the same part number appears across brands.
material_name Material name from openrocket_database (e.g. Aluminum, Carbon fiber). Overrides the preset's material when combined with preset_part_no.
material_type Narrows material lookup to bulk, surface, or line. Optional.

Explicit dimension params (e.g. length, diameter) always override the loaded preset. The precedence is: preset baseline → dimension overrides → material override.

openrocket_database actions

Action Required params Optional filters Description
motors manufacturer, impulse_class, diameter_mm, motor_type List ~1,900 motors. Returns manufacturer, name, impulse, thrust, burn time, and digest (used internally by OpenRocket to identify a thrust curve).
presets preset_type manufacturer List manufacturer component presets. Valid types: body-tube, nose-cone, transition, tube-coupler, bulk-head, centering-ring, engine-block, launch-lug, rail-button, streamer, parachute.
materials material_type List structural materials. Valid types: bulk (kg/m³), surface (kg/m²), line (kg/m).

Use the limit parameter (default 50, pass None for all results) to control response size.

openrocket_flight actions

Action Required params Description
create motor_designation Assign a motor to a mount, create a flight configuration, and add a simulation entry. The file is ready to pass to openrocket_simulate.
delete sim_name Remove a named simulation entry.

Motor lookup: motor_designation is matched against the common name (e.g. D12, H128W) or full designation. Use openrocket_database(action="motors") to find valid designations.

Motor mount selection: Automatically uses the first inner-tube in the rocket, falling back to the first body-tube. Pass mount_name to target a specific component.

Launch condition parameters (create only):

Parameter Default Description
sim_name motor designation Name for the simulation entry
mount_name auto-detected Named component to use as motor mount
launch_rod_length_m 1.0 Launch rod length in metres
launch_rod_angle_deg 0.0 Rod angle from vertical in degrees
launch_altitude_m 0.0 Launch site altitude in metres ASL
launch_temperature_c ISA standard Launch temperature in °C
wind_speed_ms 0.0 Average wind speed in m/s

openrocket_simulate output

Each simulation summary includes:

Field Description
max_altitude_m Peak altitude in metres
max_velocity_ms Peak velocity in m/s
time_to_apogee_s Time to apogee in seconds
flight_time_s Total flight time in seconds
min_stability_cal Minimum stability margin over the flight in calibers
max_stability_cal Maximum stability margin over the flight in calibers

A stability margin of 1.0–1.5 calibers is the target for most hobby rockets. Below 1.0 is unstable; above 1.5 increases weathercocking sensitivity.

CLI Reference

Workspace

Workspaces are project folders that organize your .ork design files and simulation outputs.

Create a workspace:

rocketsmith workspace create <workspace-name>

Create a workspace with example files:

rocketsmith workspace create <workspace-name> --include-examples

This copies simple.ork into the openrocket/ subfolder of the workspace, ready to run simulations.


OpenRocket

All OpenRocket commands resolve .ork files from <workspace>/openrocket/<filename>. Use --workspace / -w to specify a workspace, or --openrocket-path to point to a non-standard JAR location.

Install OpenRocket 23.09 and Java:

rocketsmith openrocket install

Check installed version:

rocketsmith openrocket version

Create a new empty .ork file:

rocketsmith openrocket new <name> --workspace <workspace-name>

Inspect the component tree of an .ork file:

rocketsmith openrocket inspect <filename.ork> --workspace <workspace-name>

Run all simulations in an .ork file:

rocketsmith openrocket run-simulation <filename.ork> --workspace <workspace-name>

Example:

rocketsmith workspace create my-rocket --include-examples
rocketsmith openrocket run-simulation simple.ork --workspace my-rocket

Components

Add a component:

rocketsmith openrocket create-component <filename.ork> <type> [options] --workspace <workspace-name>

Valid types: nose-cone, body-tube, inner-tube, transition, fin-set, parachute, mass

Option Description
--name Component name
--parent Named parent component (defaults to first stage or last body tube)
--preset Manufacturer part number to load as a preset baseline (e.g. BT-20)
--preset-manufacturer Manufacturer filter for preset lookup
--material Material name to apply (e.g. Aluminum, Carbon fiber)
--material-type Material type for lookup: bulk, surface, or line
--length Length in metres
--diameter Diameter in metres (base for nose-cone, outer for body-tube)
--fore-diameter Fore diameter in metres (transition only)
--aft-diameter Aft diameter in metres (transition only)
--thickness Wall thickness in metres
--shape Nose-cone/transition shape: ogive, conical, ellipsoid, power, parabolic, haack
--count Fin count (fin-set only)
--root-chord Fin root chord in metres
--tip-chord Fin tip chord in metres
--span Fin span in metres
--sweep Fin sweep length in metres
--cd Parachute drag coefficient
--mass Mass in kg (mass component only)

When --preset is provided, it loads the manufacturer's geometry and material as a baseline. Any additional options (e.g. --length) override the preset values.

Examples:

# Build from scratch and simulate
rocketsmith openrocket new my-rocket --workspace my-workspace
rocketsmith openrocket create-component my-rocket.ork nose-cone --name "Nose" --length 0.15 --diameter 0.064 --shape ogive --workspace my-workspace
rocketsmith openrocket create-component my-rocket.ork body-tube --name "Body" --length 0.4 --diameter 0.064 --workspace my-workspace
rocketsmith openrocket create-component my-rocket.ork inner-tube --name "Motor Mount" --diameter 0.029 --length 0.1 --workspace my-workspace
rocketsmith openrocket create-component my-rocket.ork fin-set --count 3 --root-chord 0.08 --tip-chord 0.04 --span 0.06 --workspace my-workspace

# Build from manufacturer presets
rocketsmith openrocket create-component my-rocket.ork body-tube --preset BT-20 --workspace my-workspace
rocketsmith openrocket create-component my-rocket.ork body-tube --preset BT-20 --length 0.5 --workspace my-workspace  # preset diameter, custom length
rocketsmith openrocket create-component my-rocket.ork body-tube --preset BT-20 --material "Carbon fiber" --workspace my-workspace  # swap material

Read a component's properties:

rocketsmith openrocket read-component <filename.ork> "<component-name>" --workspace <workspace-name>

Update a component:

rocketsmith openrocket update-component <filename.ork> "<component-name>" [options] --workspace <workspace-name>

Accepts the same options as create-component including --preset and --material. Only the provided options are changed. Note: providing --preset resets the component's geometry to the preset's defaults before applying any other options.

Delete a component:

rocketsmith openrocket delete-component <filename.ork> "<component-name>" --workspace <workspace-name>

Database

Browse or query the OpenRocket built-in database of motors, manufacturer component presets, and structural materials.

Interactive browser:

rocketsmith openrocket database

Opens a drill-down menu: select a category (Motors, Recovery, Airframe, Hardware, Materials), apply filters, and pick an item to view its full spec.

List motors:

rocketsmith openrocket list-motors [--class <letter>] [--diameter <mm>] [--manufacturer <name>] [--type <single-use|reloadable|hybrid>]

List component presets:

rocketsmith openrocket list-presets <type> [--manufacturer <name>]

Valid types: body-tube, nose-cone, transition, tube-coupler, bulk-head, centering-ring, engine-block, launch-lug, rail-button, streamer, parachute

List materials:

rocketsmith openrocket list-materials <type>

Valid types: bulk (density in kg/m³), surface (area density in kg/m²), line (linear density in kg/m)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rocketsmith-0.0.6.tar.gz (398.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rocketsmith-0.0.6-py3-none-any.whl (420.8 kB view details)

Uploaded Python 3

File details

Details for the file rocketsmith-0.0.6.tar.gz.

File metadata

  • Download URL: rocketsmith-0.0.6.tar.gz
  • Upload date:
  • Size: 398.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rocketsmith-0.0.6.tar.gz
Algorithm Hash digest
SHA256 f119de6dda35ee2db4f1ee4569f23f422d730bd6b89938514aee150ae7f24f37
MD5 612f6a05c58835e3e592e88bc15383ae
BLAKE2b-256 775a23a33b3736e8bea4bace5faf9bfc460a71e035764868c48d4e6f3a98a37f

See more details on using hashes here.

File details

Details for the file rocketsmith-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: rocketsmith-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 420.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rocketsmith-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e7e8d18e26084fde1dd6be208e3a948dd2c9d6ce12f63e7df818c635bb5075a2
MD5 392a37f8e645325cb535dc365250f591
BLAKE2b-256 24449f23d64d320fc8060f0fb7ecb0e00e7cbd015a31144cdf2fed5d005108ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page