A profile is a JSON document that describes one complete simulator setup: the vessel seed
values, how they drift, which sentences are sent how often, and where the output goes. The
desktop application and nmeasim run --profile read the same format.
nmeasim profile init my.json writes a complete default profile to start from. Every key is
optional except schema_version; missing keys take the defaults shown below.
schema_version is the version of the format the file was written with. The simulator reads
any older version and migrates it in memory; saving writes the current version. A file with a
newer version than the software understands is rejected with a clear message rather than
misread.
Version
Introduced in
Change
1
0.2.0
First format
2
0.4.0
simulation.mode gains track and replay, with the simulation.track and simulation.replay objects; the log output type. Version 1 files are always in delta mode and load unchanged.
3
0.5.0
simulation.seed.destination and simulation.seed.ais, sentences.custom, the output encoding values signalk and viewsync with their period_ms, tag_block, signalk and viewsync objects. Every new key has a default, so version 2 files load unchanged.
delta (seed values that drift), track (follow a file, see track) or replay (re-send a log, see replay)
tick_ms
integer
100
Length of one simulation step, 10 to 10000
start_time
string
"now"
"now" or an ISO 8601 UTC date-time such as "2026-09-22T12:34:56.780Z"
random_seed
integer
2026
Seed of the random generator, a whole number from 0 to 4294967295 (anything else is rejected); the same seed reproduces the same run
seed
object
see below
Initial vessel values
variation
object
see below
How far and how fast each value drifts
steering
object
see below
Rudder behaviour
track
object
see below
Track-following settings, used when mode is track
replay
object
see below
Log replay settings, used when mode is replay
In track and replay mode the seed still supplies the values the file does not carry
(depth, water temperature, wind, GNSS quality, engines) and start_time supplies the clock
until the file provides one. The variation values are not used in those modes.
null (or a missing key) means no destination: APB, RMB and XTE are not sent and the Signal K
course paths are absent. An object without a numeric latitude and longitude is rejected. See the simulation model.
Key
Type
Default
Meaning
name
string
"WPT"
Waypoint id, sent after removing NMEA reserved characters and truncating to 16 characters
latitude, longitude
number
required
Destination, decimal degrees
origin_latitude, origin_longitude
number
the seed position
Start of the leg, from which the cross-track error is measured
Maritime Mobile Service Identity, at most nine digits (0 to 999999999)
imo_number
integer
0
IMO number, 0 for none, at most 999999999
name
string
"NMEA SIMULATOR X"
Vessel name, 20 characters of the AIS alphabet
call_sign
string
"SIMX"
Call sign, 7 characters
ship_type
integer
37
Type of ship and cargo code, 0 to 255
dimension_to_bow_m, dimension_to_stern_m
number
12, 4
Metres from the antenna, at most 511
dimension_to_port_m, dimension_to_starboard_m
number
3, 3
Metres from the antenna, at most 63
draught_m
number
1.8
Maximum static draught, at most 25.5
destination
string
""
Voyage destination, 20 characters
navigation_status
integer
0
Navigational status code, 0 to 15
position_report_type
integer
1
Message type of the position report: 1, 2 or 3
The fields are described on the AIS reference page. The MMSI also forms the default
Signal K context. An mmsi or imo_number that is negative, larger than 999999999 or not a
whole number is rejected when the profile is loaded.
Each of heading, speed, depth, water_temperature, wind_direction and wind_speed
is an object with amplitude (how far the value may wander from its seed) and
step_per_second (how fast). Units are those of the value. An amplitude of 0 freezes the
value. See the simulation model.
Decimal minutes in latitude and longitude, 2 to 8. Reduced automatically when a sentence would exceed 82 bytes.
settings
object
{}
Per-sentence overrides keyed by registry id
custom
array
[]
Sentences typed in by the operator, see below
Each entry of settings may contain enabled (boolean), talker (two upper-case letters
such as GN, empty for the default) and period_ms (integer, 50 to 3600000). A talker or
period outside these is rejected when the profile is loaded. Ids and defaults are listed by nmeasim sentences
and on the sentence reference.
Identifier for filters and the console, upper-cased; empty gives CUSTOM-n, n being the entry's 1-based position; must not be a registry id nor the id of another entry, including the CUSTOM-n of an entry without id
body
string
required
The sentence without checksum, for example $PXYZ,1,2,3; validated when the profile is loaded
Period of the Signal K or ViewSync messages, 50 to 3600000; the simulation tick bounds the resolution
tag_block.enabled
boolean
false
Prefix every sentence with an IEC 61162-450 TAG block
tag_block.source
string
"SIM0001"
The s: source identifier
tag_block.include_time
boolean
true
Send the c: time
tag_block.milliseconds
boolean
false
Send c: in milliseconds instead of seconds
signalk.context
string
""
Signal K context; empty derives vessels.urn:mrn:imo:mmsi:<mmsi> from the AIS data
signalk.source_label
string
"nmeasim"
The source.label of every update
viewsync.camera_altitude_m
number
500
Camera height above the vessel
viewsync.tilt_deg
number
60
Camera tilt
viewsync.roll_deg
number
0
Camera roll
viewsync.planet
string
""
Empty for Earth, or sky, mars, moon; commas, control characters and non-ASCII bytes are removed when it is sent
The other keys depend on the type. Each type reads and checks only its own keys, so a key of
another type is ignored; a value outside the range given below, or a name that is not listed,
is rejected when the profile is loaded.
type
Keys
tcp-server
bind_address (default 0.0.0.0), port (default 10110, 0 to 65535)
tcp-client
host (default 127.0.0.1), port, reconnect_ms (default 2000, 1 to 3600000)
Behaviour of each transport is described on the transports reference. A
relative path of a file or log output is relative to the directory of the profile file,
see paths.
simulation.track.path, simulation.replay.path and the path of file and log outputs
may be absolute or relative. A relative path is relative to the directory that holds the
profile file, so a profile and the files it names can be moved together; it is resolved when
the profile is run, not when it is loaded. Saving a profile writes the paths as
they were written; saving it into another directory (Save profile as...) rewrites the
relative paths so that they still name the same files. Paths given on the command line
(--track, --replay, --file, --record) are relative to the working directory. In the
desktop application the file dialogs (Open track..., Open log for replay... and the
Browse... buttons of the settings dialog) start in the folder that a relative path names,
next to the profile file.