Skip to main content
Version: 3.5.x

Settings Reference

This document lists all settings returned by the /settings/ endpoint with their key, type (from type_hint), and constraints (from metadata.constraint.range + locked where applicable).

A locked setting is read-only at runtime. It can be changed via the config file or through the Haply Hub settings page, but a full service restart is required for changes to take effect. These are marked boot in the tables below.

Configuration

The configuration file to override the settings during service startup is located here:

PlatformLocation
WindowsC:\ProgramData\Haply\Inverse\haply-inverse-service-config.json
MacOS/Library/Application Support/Haply/Inverse/haply-inverse-service-config.json
Linux/etc/haply-inverse-service/haply-inverse-service-config.json

The config file is a flat JSON object mapping setting keys to override values. Keys must be valid settings keys returned by the /settings/ HTTP route (see API Reference). Any key not specified uses the service default.

For example, a networking configuration override:

{
"communication/http/port": 8400,
"communication/websocket/port": 8500,
"communication/events/port": 9000,
"communication/bind_all_interfaces": true
}

Type mapping

Type hints returned by the API map to these JSON shapes:

  • STRINGstring
  • BOOLbool
  • INTint
  • FLOATfloat
  • ARR_STRINGstring[]
  • VEC3vec3 (object with {x, y, z})
  • GENERICjson (arbitrary structured value)

communication/…

Network ports and bind addresses for the HTTP, WebSocket, and event-stream servers. Most entries are boot-only.

KeyTypeConstraintsDescription
communication/serial/enabledboolEnable or disable serial device communication.
communication/bind_addressstringbootIP address the HTTP and WebSocket servers bind to.
communication/bind_all_interfacesboolbootBind servers to 0.0.0.0 instead of localhost.
communication/http/portintbootHTTP REST API port (default 10000).
communication/websocket/portintbootMain v3.1 WebSocket port (default 10001).
communication/websocket/legacy_portintbootLegacy v3.0 WebSocket port (default 10000).
communication/events/portintbootEvent-stream WebSocket port (default 10020).

devices/…

devices/detection/…

Serial-port scanning policy. All entries are advanced.

KeyTypeConstraintsDescription
devices/detection/scan_period_msintrange 100–10000; bootInterval between serial port scans (ms).
devices/detection/handshake_timeout_sintrange 1–15Handshake timeout per port (s).
devices/detection/max_retriesintrange 1–10Maximum handshake retry attempts per port.
devices/detection/failure_log_delay_sintrange 1–60Delay before re-logging a detection failure (s).
devices/detection/block_looping_portsboolBlock device readiness when a looping port is detected.
devices/detection/excluded_portsjsonSerial port paths to skip during detection.
devices/detection/additional_portsstring[]Extra serial port paths to scan unconditionally.
devices/detection/allowed_vendor_id_filterstring[]USB vendor IDs allowed during port enumeration.
devices/detection/port_name_substring_filterstring[]Platform-specific port name substrings to match.
devices/detection/wireless_verse_grip_description_filterstring[]Port description substrings for wireless VerseGrip detection.
devices/detection/inverse3x_description_filterstring[]Port description substrings for Inverse3x detection.
devices/detection/extra_ports (deprecated)string[]Use devices/detection/additional_ports instead. Reads and writes are transparently forwarded to the canonical key.

devices/inverse*/…

Global defaults applied to every Inverse3-family device. Per-session overrides take precedence.

KeyTypeConstraintsDescription
devices/inverse*/filters/force_scale/gainfloatrange 0.0–2.0Global force output multiplier applied to all devices.
devices/inverse*/filters/force_gate/gainfloatrange 0.0–1.0Default force-gate gain for new sessions.
devices/inverse*/control_timeout_msintrange 50–10000Timeout before releasing the device control lock (ms).
devices/inverse*/query_orientation_on_idleboolQuery body orientation from firmware when the device is idle.

devices/presets

KeyTypeConstraintsDescription
devices/presetsjsonDefault device-configuration presets per device type (mount transform, basis, etc. for inverse_arm_front_*, inverse_led_front_*, minverse_*, verse_grip_default, wireless_verse_grip_default, custom_verse_grip_default).

devices/wireless_verse_grip/…

KeyTypeConstraintsDescription
devices/wireless_verse_grip/battery/low_thresholdintBattery percentage below which a low-battery warning fires.
devices/wireless_verse_grip/battery/critical_thresholdintBattery percentage below which a critical-battery alert fires.
devices/wireless_verse_grip/battery/reset_marginintHysteresis margin before clearing a battery warning.
devices/wireless_verse_grip/filters/orientation_filterjsonbootOne Euro Filter config for wireless VerseGrip orientation.

features/…

features/calibration/…

KeyTypeConstraintsDescription
features/calibration/hall_thresholdintrange 1–32Hall sensor level at which the pen is considered attached during calibration.

features/grip_hook/…

Automatic grip-hook behaviour — locks the cursor while the grip is held upright.

KeyTypeConstraintsDescription
features/grip_hook/enabledboolEnable grip-hook auto-lock when the grip is held upright.
features/grip_hook/use_hallboolUse the hall-sensor threshold instead of orientation for grip detection.
features/grip_hook/hallintrange 1–32Hall-sensor value threshold to trigger the grip lock.
features/grip_hook/hold_durationintrange 10–1000Duration to hold the lock after trigger (ms).

features/navigation/bubble/…

Bubble navigation module defaults — passed into the session when a bubble behaviour is first activated.

KeyTypeConstraintsDescription
features/navigation/bubble/centervec3Default bubble centre position.
features/navigation/bubble/max_velocityfloatMaximum navigation velocity in the velocity zone (m/s).
features/navigation/bubble/velocity_zone_widthfloatWidth of the velocity zone outside the bubble surface (m).
features/navigation/bubble/reset_velocity_on_entryboolReset velocity to zero when the cursor enters the bubble.
features/navigation/bubble/spring_innerfloatSpring coefficient at the bubble centre (N/m).
features/navigation/bubble/spring_surfacefloatSpring coefficient at the bubble surface (N/m).
features/navigation/bubble/spring_outerfloatSpring coefficient at the outer boundary (N/m).
features/navigation/bubble/damping_innerfloatDamping coefficient at the bubble centre (Ns/m).
features/navigation/bubble/damping_surfacefloatDamping coefficient at the bubble surface (Ns/m).
features/navigation/bubble/damping_outerfloatDamping coefficient at the outer boundary (Ns/m).
features/navigation/bubble/wall_stiffnessfloatStiffness of the hard wall at the outer boundary (N/m).
features/navigation/bubble/bump_widthfloatWidth of the tactile bump at the bubble surface (m).
features/navigation/bubble/bump_stiffnessfloatStiffness of the tactile bump at the bubble surface (N/m).

features/safe_trajectory/…

Velocity limiter for end-effector motion.

KeyTypeConstraintsDescription
features/safe_trajectory/enabledboolEnable the safe-trajectory speed limiter.
features/safe_trajectory/max_velfloatrange 0.01–2.0Maximum allowed end-effector velocity (m/s).

features/screensaver/…

Idle animation played on Inverse3 devices when no session is driving them.

KeyTypeConstraintsDescription
features/screensaver/enabledboolEnable the idle screensaver animation on Inverse3 devices.
features/screensaver/speedfloatrange 0.001–0.2Screensaver animation speed.
features/screensaver/distracted_speedfloatrange 0.001–0.2Animation speed when the user is near but not engaging.

features/sdf/…

Signed-distance-field haptic effects module (SDF HFX).

KeyTypeConstraintsDescription
features/sdf/enabledboolEnable or disable the SDF haptic-effects module.
features/sdf/state_outputboolInclude SDF state in the device output payloads by default.
features/sdf/max_countintrange 0–128Maximum number of active SDF effects (0 = unlimited).
features/sdf/events/createdboolEmit an event when a new SDF effect is created.
features/sdf/events/deletedboolEmit an event when an SDF effect is deleted.
features/sdf/events/updatedboolEmit an event when an SDF effect is updated.
features/sdf/probe_on_zero_force/enabledboolAuto-probe SDF fields when applied force is near zero.
features/sdf/probe_on_zero_force/delayfloatrange 0.001–60.0Delay before auto-probing after force drops to zero (s).

features/verse_grip_pairing/…

Attach/detach tracking between an Inverse3 and a (wired or wireless) Verse Grip. Powers the Haply Hub pairing UI.

KeyTypeConstraintsDescription
features/verse_grip_pairing/enabledboolEnable pairing / attach-detach tracking.
features/verse_grip_pairing/hall_threshold_vgintrange 1–32Hall level at which a wired VerseGrip is considered attached.
features/verse_grip_pairing/hall_threshold_wvgintrange 1–32Hall level at which a Wireless VerseGrip is considered attached.
features/verse_grip_pairing/detach_debounce_msintrange 0–1000Debounce window before committing a detach (ms).
features/verse_grip_pairing/heartbeat_msintrange 100–10000Interval between forced re-notifications (ms).
features/verse_grip_pairing/force_attachedboolPermanently force the attached state to true, bypassing the hall sensor (hardware-failure workaround).

serialization/…

Transform-output formatting — affects WebSocket and HTTP JSON payloads.

KeyTypeConstraintsDescription
serialization/explicit_fieldsboolInclude transform fields that equal their identity default in serialized output (e.g. position: {0,0,0}, rotation: {w:1,…}). Useful when your client requires every field to be explicitly present. Default: false.
serialization/force_complete_transformsboolAlways emit position, rotation, and scale in every transform output, including orientation-only devices (Verse Grip, Wireless Verse Grip) which otherwise emit only rotation. Subsumes serialization/explicit_fields. Default: false.

session/…

Session scheduler and command-pipeline limits.

KeyTypeConstraintsDescription
session/min_simulation_rate_hzintrange 20–500Minimum acceptable device simulation rate (Hz) before a warning fires.
session/commands/zoh_window_msintZero-order-hold window — suppress probes received within this window (ms).
session/commands/drop_warning_thresholdintNumber of dropped commands within the window before warning.
session/commands/drop_warning_window_msintSliding window size for counting dropped commands (ms).
session/commands/tick_on_empty_batchboolSchedule a main_loop tick even when an entire WebSocket batch was dropped.