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.8.tar.gz (398.9 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.8-py3-none-any.whl (421.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rocketsmith-0.0.8.tar.gz
  • Upload date:
  • Size: 398.9 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.8.tar.gz
Algorithm Hash digest
SHA256 7c7acacbc2fd310099b48d6177a177f9d173787c432b7c95f912681db89535ef
MD5 470d77e4f97bfeeb4dec41a5cba5bf0d
BLAKE2b-256 1c7075d59b511b2e806dfc4fef34abd21ea306ab7eb1f176deec5f5c1bb6660b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rocketsmith-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 421.1 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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 e520fa99e2647ca9ca5142b32ffde8ccd82b03e938002e4eadbc59d429c5454f
MD5 855f344da23a7bb081a45d6284540ea4
BLAKE2b-256 6db3d3a131b81adacfe6138b9280f6a032eb59cd8062d79adc5ee5efd91d2795

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