Monero / Nodes / Reference
monerod Commands and Flags Reference
monerod v0.18.5.4 startup flags and console commands, with examples for sync, peers, RPC, Tor, mining, pruning and maintenance.
monerod is the Monero node software. It downloads and checks the blockchain and exchanges blocks and transactions with peers. Wallets and other applications query the daemon for blockchain data. It can also solo mine using the built-in CPU miner.
A wallet holds your keys and identifies your funds. The daemon supplies blockchain data. You do not need to give monerod your seed phrase or private spend key to run a node.
This reference covers 122 distinct registered option names across Unix and Windows, including the hidden positional-command option, and all 51 console commands in Monero v0.18.5.4, including obsolete options, testing controls, and Windows service switches. The source baseline is commit 85f036ba7019cd36f08e8a38a27c37ea7b522618, verified on 2026-11-08 UTC. Different releases can add, remove, or change options. Check your own executable before copying a configuration:
./monerod --version
./monerod --help
The inventory check compares this reference with argument registration and command parsers in the tagged source. The examples illustrate syntax and were not all executed against a live node. This covers the daemon's command-line interface, not every HTTP or JSON-RPC API method.
How to read the examples
Startup flags follow the executable:
./monerod --prune-blockchain --out-peers 16
Console commands go into the terminal where an interactive daemon is already running:
status
sync_info
print_cn
One-shot commands use a separate invocation to contact an already running daemon over RPC:
./monerod status
./monerod --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18081 sync_info
The second invocation is a client for that command. It does not start a second synchronizing node. Restricted RPC can refuse administrative commands. Point administrative requests at an endpoint you control.
In the tables, <value> means a required argument and [value] means an optional argument. Replace placeholders such as <TXID> and <PRIMARY_ADDRESS>. Do not type the angle brackets. Addresses under 192.0.2.0/24, 198.51.100.0/24, and names under .example are documentation placeholders, not working peers.
Values in examples illustrate syntax, not recommended performance settings. Peer count and bandwidth limits depend on your connection and workload.
Configuration files
Most persistent settings can go in a configuration file. Remove the leading -- and use name=value. Boolean switches use 1 or 0 in configuration files. Repeat list settings, such as add-peer, on separate lines.
# Example: a pruned node with local administrative RPC.
data-dir=/srv/monero
prune-blockchain=1
rpc-bind-ip=127.0.0.1
rpc-bind-port=18081
no-zmq=1
out-peers=16
log-level=0
Start it with:
./monerod --non-interactive --config-file /etc/monerod.conf
Use a directory writable by the account running the daemon. Under a process supervisor, keep the process in the foreground and use --non-interactive. On FreeBSD, a service may supply its own backgrounding through daemon(8). On Linux, systemd normally tracks the foreground process.
Not every startup action belongs in the configuration file. Help, version output, --non-interactive, --detach, --pidfile, platform service actions, and the hidden positional command mechanism are command-line controls. This release rejects non-interactive=1 inside the configuration file. Explicit configuration paths avoid confusion about defaults and service accounts.
Default network ports
P2P connects nodes to nodes. HTTP RPC connects wallets and applications to the daemon. ZMQ RPC is a separate interface, and ZMQ publication uses the endpoint you explicitly configure.
| Network | P2P | HTTP RPC | ZMQ RPC |
|---|---|---|---|
| Mainnet | 18080 | 18081 | 18082 |
| Testnet | 28080 | 28081 | 28082 |
| Stagenet | 38080 | 38081 | 38082 |
A separate restricted HTTP RPC port has no enabled default in this release. You choose it with --rpc-restricted-bind-port. Port 18089 is commonly used in examples, but it is not automatically created.
Startup flags: basic operation and logging
| Flag | What it does | Example or usage note |
|---|---|---|
--help |
Prints the startup option list and exits. | ./monerod --help. |
--version |
Prints the executable's Monero version and exits. | ./monerod --version. |
--os-version |
Prints operating-system version information reported by the executable. | ./monerod --os-version. This does not change the target platform. |
--config-file <path> |
Reads settings from a chosen configuration file. | --config-file /etc/monerod.conf. |
--data-dir <path> |
Chooses the directory for blockchain and node state. Testnet, stagenet, and regtest use their network subdirectories. | --data-dir /srv/monero. A new empty location requires synchronization. |
--log-file <path> |
Selects the daemon log file. | --log-file /var/log/monero/monerod.log. Ensure the directory exists and is writable. |
--log-level <level-or-categories> |
Sets logging verbosity or category filters. Numeric levels run from 0 to 4. | --log-level 1. Higher levels produce much more output. |
--max-log-file-size <bytes> |
Sets the size at which the log rotates. | --max-log-file-size 10485760 uses a 10 MiB threshold. |
--max-log-files <count> |
Sets how many rotated log files are retained. Zero removes the count limit. | --max-log-files 5. Unlimited retention can fill a disk. |
--max-concurrency <count> |
Limits worker threads used by parallel jobs that honor this setting. Zero uses automatic selection. | --max-concurrency 4. This is not a global CPU cap or mining-thread setting. |
--non-interactive |
Runs without the daemon's stdin command console. | Use for services and containers. Issue commands separately through RPC. |
--detach |
Forks into the background on Unix-like systems. | ./monerod --detach is usually unnecessary under a supervisor. |
--pidfile <path> |
Writes a process ID file when using --detach. |
--detach --pidfile /run/monero/monerod.pid. |
The usual Unix data directory is ~/.bitmonero. Service packages often choose another location. Explicit paths are easier to audit than assumptions about which user's home directory a service uses.
Sources: daemon arguments, startup handling, Unix daemonization.
Network selection and testing flags
The daemon uses mainnet unless you select another network. This release has no --mainnet flag. Test coins are not mainnet XMR.
| Flag | What it does | Example or usage note |
|---|---|---|
--testnet |
Uses the public test network and its blockchain. | ./monerod --testnet. Wallets must also select testnet. |
--stagenet |
Uses the public staging network. | ./monerod --stagenet is useful for testing wallet behavior without mainnet funds. |
--regtest |
Uses the local regression-testing network, also called fakechain. | ./monerod --regtest --offline. Use an isolated test data directory. |
--keep-fakechain |
Preserves an existing fakechain database rather than deleting it on regtest startup. | --regtest --keep-fakechain. |
--fixed-difficulty <number> |
Overrides the local difficulty calculation for testing. Zero leaves the override disabled. Keep this out of mainnet configurations. | --regtest --fixed-difficulty 1. Other mainnet nodes still enforce normal network difficulty. |
--test-drop-download |
Discards all downloaded blocks instead of validating and saving them. | Network benchmarking only. A daemon using this flag is not completing a normal sync. |
--test-drop-download-height <height> |
Starts the download-discard behavior around a specified height. | Testing only. Leave unset on a real node. |
--test-dbg-lock-sleep <milliseconds> |
Inserts delays around locking for debugging. | --test-dbg-lock-sleep 100 deliberately slows relevant operations. |
Do not combine test-network flags or put test-only controls in a production configuration. They exist to support development, not to speed up a production node.
Source: core option definitions and registration.
Blockchain synchronization, storage, and checkpoints
| Flag | What it does | Example or usage note |
|---|---|---|
--prune-blockchain |
Maintains a pruned blockchain database, retaining the data needed for node operation while dropping much historical prunable proof data. | ./monerod --prune-blockchain. Pruning an existing database in place does not necessarily shrink its file immediately. |
--sync-pruned-blocks |
Permits synchronization using pruned block data from peers. | Particularly relevant to pruned operation. It is distinct from choosing to prune local storage. |
--fast-block-sync <0-or-1> |
Uses embedded known block hashes for the historical portion of synchronization. Enabled by default in this release. | --fast-block-sync 0 disables that shortcut. It is not normally needed. |
--block-sync-size <count> |
Sets how many blocks are requested in a synchronization batch. Zero selects adaptive behavior. | --block-sync-size 0. Leave adaptive selection unless diagnosing a measured issue. |
--block-download-max-size <bytes> |
Caps the block download queue. Zero selects the built-in default. | --block-download-max-size 268435456 illustrates a 256 MiB queue setting, not total process memory. |
--prep-blocks-threads <count> |
Limits threads preparing groups of block hashes. | --prep-blocks-threads 4. This is separate from mining threads. |
--show-time-stats <0-or-1> |
Enables timing diagnostics for block, transaction, and disk-sync work. | --show-time-stats 1. Useful when investigating synchronization performance. |
--db-sync-mode <mode> |
Chooses database durability and flush policy. | Format: safe, or fast:async:250000000bytes, with safe, fast, or fastest as the first component. See below. |
--db-salvage |
Asks the database backend to attempt recovery when opening a damaged database. | Recovery can fail. Preserve a stopped copy before experimenting with valuable diagnostic state. |
--max-txpool-weight <bytes> |
Caps the aggregate transaction weight allowed in the local pending pool. | --max-txpool-weight 134217728. It does not set a global network mempool size or exactly cap RAM. |
--keep-alt-blocks |
Keeps stored alternative-chain blocks across restarts. | Useful for investigating forks. It can retain additional data. |
--offline |
Disables P2P listening and outbound peer connections. | ./monerod --offline. RPC is a separate interface and may still listen. |
--no-sync |
Stops blockchain synchronization with peers while leaving other P2P functionality available. | Useful in controlled tests. It differs from --offline. |
--disable-dns-checkpoints |
Stops retrieving checkpoints through DNS. | Other DNS lookups remain possible. |
--enforce-dns-checkpointing |
Makes retrieved DNS checkpoints enforceable rather than merely advisory. | Changes checkpoint policy. Do not enable simply because the name sounds more secure. |
--check-updates <mode> |
Controls release checking: disabled, notify, download, or update. |
--check-updates notify is the default. Automatic installation is not implemented in this release. |
--fluffy-blocks |
Retained compatibility flag for compact block relay, which is already the default. | Obsolete. Omit it from new configurations. |
What db-sync-mode means
The first component controls database write behavior. The optional second component selects sync or async. The third sets a flush threshold as a block count, optionally suffixed blocks, or a byte count suffixed bytes.
The registered default is:
fast:async:250000000bytes
safe uses its own durability handling. The parser does not apply the later components in that mode. Faster write modes trade crash resilience for throughput. Do not treat fastest as a harmless tuning recommendation, particularly on machines that can lose power. See database sync modes for the durability tradeoffs.
Pruning and actual disk space
Starting with pruning on an empty data directory avoids growing a full historical database first. Enabling it on an existing database frees pages for reuse inside LMDB, but the operating system may still report a large file.
To compact an existing full database into a smaller pruned database, stop the daemon and consult the separate monero-blockchain-prune tool. That conversion needs temporary disk space. This tool has its own options and is outside this daemon reference.
Sources: core synchronization and storage handling, database options, pruning command behavior.
P2P listeners, peers, and bandwidth
| Flag | What it does | Example or usage note |
|---|---|---|
--p2p-bind-ip <IPv4> |
Chooses the IPv4 interface on which P2P listens. Default: all IPv4 interfaces. | --p2p-bind-ip 0.0.0.0. |
--p2p-bind-port <port> |
Sets the IPv4 P2P listening port. | Mainnet default: 18080. |
--p2p-bind-ipv6-address <IPv6> |
Chooses the IPv6 P2P listening address. | --p2p-bind-ipv6-address ::. Also enable IPv6. |
--p2p-bind-port-ipv6 <port> |
Sets the IPv6 P2P listening port. | --p2p-bind-port-ipv6 18080. |
--p2p-use-ipv6 |
Enables IPv6 P2P support. | Use with the relevant IPv6 listener and firewall rules. |
--p2p-ignore-ipv4 |
Allows startup to continue if the IPv4 P2P bind fails. | It does not explicitly disable a working IPv4 listener. |
--p2p-external-port <port> |
Advertises the externally reachable P2P port when it differs because of NAT. | --p2p-external-port 18080. This does not create a router port-forward. |
--allow-local-ip |
Allows local/private addresses in peer-list handling. | Useful in a lab. Generally unnecessary for an ordinary internet node. |
--add-peer <address:port> |
Adds a peer candidate to the local peer list. | --add-peer 192.0.2.10:18080. Repeat for multiple peers. |
--add-priority-node <address:port> |
Tries to maintain a connection to a chosen peer. | Repeat for several independently operated nodes. |
--add-exclusive-node <address:port> |
Restricts outbound peer selection to the supplied nodes. | Overrides priority and seed-node settings. A poor list can isolate the node. |
--seed-node <address:port> |
Contacts a node to obtain peer addresses, then disconnects. | Discovery aid, not a persistent priority connection. |
--hide-my-port |
Stops advertising the node as a peer-list candidate. | It does not hide your address from connected peers or close the listening socket. |
--out-peers <count> |
Sets the maximum outbound P2P peer count. -1 selects the built-in default. |
--out-peers 16. |
--in-peers <count> |
Sets the maximum inbound P2P peer count. -1 selects the built-in default. |
--in-peers 32. Inbound connections also require network reachability. |
--max-connections-per-ip <count> |
Limits inbound P2P connections per IPv4 address. Public IPv6 addresses share the limit across a /64. | --max-connections-per-ip 1. Shared-address deployments may need consideration. |
--limit-rate-up <kB/s> |
Sets the daemon's upload throttle. | --limit-rate-up 1024. |
--limit-rate-down <kB/s> |
Sets the download throttle. | --limit-rate-down 8192. |
--limit-rate <kB/s> |
Applies the same limit in both directions. | --limit-rate 2048. Avoid mixing with directional settings unless you intend the precedence. |
--tos-flag <number> |
Sets the IP Type of Service field for relevant sockets. | Advanced QoS integration. Routers may ignore or rewrite it. |
--ban-list <path> |
Loads a file of blocked addresses. The parser also handles supported IPv4 subnet notation. | --ban-list /etc/monero/ban-list.txt. Use one entry per line. |
--enable-dns-blocklist |
Enables the project's DNS-supplied peer blocklist. | Adds dependence on that blocklist and its delivery mechanism. |
--pad-transactions |
Pads relayed transactions to reduce information exposed by traffic volume. | Additional bandwidth. It does not provide complete network anonymity. |
--no-igd |
Legacy switch that once disabled UPnP port mapping. | Accepted for compatibility. UPnP support has been removed in this release. |
--igd <value> |
Legacy UPnP mapping setting. | Nonfunctional in v0.18.5.4. Setting it produces a warning. Configure NAT manually. |
The source uses 1,024-byte units for the bandwidth limiter despite displaying kB/s. Treat the values as approximate application-level rate controls, not a precise cap on every byte on the wire.
An IPv6-capable node might start with:
./monerod --prune-blockchain --p2p-use-ipv6
Opening P2P to other nodes does not require opening administrative RPC.
Sources: P2P option definitions, P2P option handling.
Tor, I2P, and proxy flags
| Flag | What it does | Example or usage note |
|---|---|---|
--proxy <proxy> |
Routes the daemon's supported outbound network communication through a SOCKS proxy. | --proxy 127.0.0.1:9050. This release also accepts socks5://[user:pass@]IP:port. It does not create Tor or hide inbound listeners. |
--proxy-allow-dns-leaks |
Permits DNS lookups outside the proxy that proxy mode would otherwise suppress. | Changes the privacy properties of proxy mode. Usually leave unset. |
--tx-proxy <specification> |
Routes locally submitted transaction announcements through a Tor or I2P proxy zone. | --tx-proxy tor,127.0.0.1:9050 does not send all blockchain synchronization through Tor. |
--anonymous-inbound <specification> |
Adds an inbound Tor/I2P P2P endpoint and its local listening socket. | Syntax: hidden-address,[bind-ip:]port[,max_connections]. You must separately configure the hidden service or I2P tunnel. |
The tx-proxy format is:
network-type,proxy[,max_connections][,disable_noise]
Supported network types are tor and i2p. The proxy accepts the SOCKS syntax supported by this release. disable_noise turns off the associated noise traffic. Do not copy it as an automatic performance improvement.
With an existing Tor SOCKS listener:
./monerod --tx-proxy tor,127.0.0.1:9050
To accept onion P2P connections, replace YOUR_SERVICE.onion below with a real hidden-service address, and configure Tor to forward its chosen external port to 127.0.0.1:18083:
--anonymous-inbound YOUR_SERVICE.onion:18083,127.0.0.1:18083
An onion P2P endpoint is not an onion wallet RPC endpoint. They are different services. A transaction proxy is not a guarantee that every daemon action, external notification script, listener, or DNS query is anonymous. See Monero transaction relay over Tor and I2P for the connection paths.
Sources: proxy flags, P2P proxy parsing, daemon proxy setup.
HTTP RPC: wallets, administration, and public access
The normal RPC listener supports administrative functions. Keep it on loopback or a controlled private network. A separate restricted listener is the appropriate interface when intentionally providing remote wallet access.
Restricted RPC removes administrative methods and limits sensitive responses. It does not mean every allowed request is read-only. Wallets can still submit transactions. The remote-node glossary entry explains what a wallet requests from a daemon.
| Flag | What it does | Example or usage note |
|---|---|---|
--rpc-bind-ip <IPv4> |
Chooses the main HTTP RPC IPv4 listening address. Default: 127.0.0.1. |
--rpc-bind-ip 127.0.0.1. |
--rpc-bind-port <port> |
Sets the main HTTP RPC port. | Mainnet default: 18081. |
--rpc-bind-ipv6-address <IPv6> |
Chooses the main HTTP RPC IPv6 address. Default: ::1. |
Requires IPv6 RPC support to be enabled. |
--rpc-use-ipv6 |
Enables IPv6 HTTP RPC support. | --rpc-use-ipv6. Check both IPv4 and IPv6 firewall exposure. |
--rpc-ignore-ipv4 |
Permits startup when the HTTP RPC IPv4 bind fails. | It does not force IPv4 off. |
--rpc-restricted-bind-ip <IPv4> |
Chooses the separate restricted listener's IPv4 address. Default: loopback. | --rpc-restricted-bind-ip 0.0.0.0 intentionally exposes that listener on all IPv4 interfaces. |
--rpc-restricted-bind-ipv6-address <IPv6> |
Chooses the separate restricted listener's IPv6 address. | --rpc-restricted-bind-ipv6-address :: with IPv6 enabled exposes it beyond loopback. |
--rpc-restricted-bind-port <port> |
Creates a separate restricted HTTP RPC listener. | --rpc-restricted-bind-port 18089. |
--restricted-rpc |
Applies restricted behavior to the main RPC server. | Useful when the main endpoint itself should be restricted. It can prevent remote administrative commands. |
--public-node |
Advertises an available restricted RPC service through P2P discovery. | Does not create firewall rules, port forwarding, or a listener by itself. |
--confirm-external-bind |
Acknowledges a non-loopback main RPC bind. | A startup acknowledgement, not authentication or an access-control rule. |
--rpc-login <username[:password]> |
Requires HTTP RPC authentication. | Prefer a protected configuration file to putting passwords in shell history or process arguments. A username without a password can trigger prompting. |
--rpc-access-control-origins <origins> |
Allows specified browser origins through CORS. | --rpc-access-control-origins https://app.example. CORS is not a firewall or replacement for authentication. |
--disable-rpc-ban |
Disables the RPC server's automatic host banning on relevant errors. | Usually leave automatic banning enabled. |
--rpc-max-connections-per-public-ip <count> |
Caps concurrent RPC connections from one public IPv4 address or public IPv6 /64. | --rpc-max-connections-per-public-ip 3. |
--rpc-max-connections-per-private-ip <count> |
Caps concurrent connections per private or localhost IP. | --rpc-max-connections-per-private-ip 25. |
--rpc-max-connections <count> |
Caps total RPC connections for the server. | --rpc-max-connections 100. Per-IP limits must not exceed this value. |
--rpc-response-soft-limit <bytes> |
Limits queued RPC response data, with enforcement on the next response attempt. | --rpc-response-soft-limit 104857600. This is a soft queue limit, not a strict process-memory ceiling. |
Example: local administration plus public restricted RPC
rpc-bind-ip=127.0.0.1
rpc-bind-port=18081
rpc-restricted-bind-ip=0.0.0.0
rpc-restricted-bind-port=18089
public-node=1
This intentionally exposes the restricted endpoint on IPv4. Permit that port in your firewall only if you want to serve remote wallets. Keep port 18081 private. Add transport encryption or an appropriate protected network path when needed. Binding a port does not encrypt it.
Do not add restricted-rpc=1 to this example if you want the main local endpoint to remain administrative.
Sources: RPC listener settings, daemon RPC registration and initialization, RPC method restrictions.
RPC encryption and certificate flags
These options configure RPC TLS. They also affect certificate verification when monerod acts as a one-shot RPC client. A certificate file and a CA trust file serve different purposes.
| Flag | What it does | Example or usage note |
|---|---|---|
--rpc-ssl <mode> |
Selects enabled, disabled, or autodetect TLS support. |
Use --rpc-ssl enabled when requiring TLS. autodetect is not the same as TLS-only. |
--rpc-ssl-private-key <path> |
Loads a PEM private key for TLS identity. | --rpc-ssl-private-key /etc/monero/tls/node.key. Restrict file permissions. |
--rpc-ssl-certificate <path> |
Loads the corresponding PEM certificate. | --rpc-ssl-certificate /etc/monero/tls/node.crt. |
--rpc-ssl-ca-certificates <path> |
Replaces system CA trust with certificates from a chosen PEM bundle for relevant peer verification. | --rpc-ssl-ca-certificates /etc/monero/tls/ca.pem. |
--rpc-ssl-allowed-fingerprints <fingerprint> |
Allows specified SHA-256 certificate fingerprints. | Supply the expected certificate's hexadecimal fingerprint. Repeat for a list. Useful for deliberate pinning. |
--rpc-ssl-allow-chained |
Allows verification through the configured user CA chain. | The help text refers to --rpc-ssl-certificates, but that flag name is a typo. The actual trust-bundle option is --rpc-ssl-ca-certificates. |
--rpc-ssl-allow-any-cert |
Disables relevant peer-certificate verification. | Avoid for remote administration. Encryption without identity verification does not establish who you reached. |
Example TLS identity settings:
rpc-ssl=enabled
rpc-ssl-private-key=/etc/monero/tls/node.key
rpc-ssl-certificate=/etc/monero/tls/node.crt
Source: RPC TLS parsing.
Bootstrap daemon flags
A bootstrap daemon answers supported wallet requests while your own daemon is still catching up. Your daemon still builds its own blockchain database while using that temporary remote data source.
| Flag | What it does | Example or usage note |
|---|---|---|
--bootstrap-daemon-address <address-or-auto> |
Chooses the temporary remote daemon, or uses automatic public-node discovery. | --bootstrap-daemon-address auto. Using a remote node introduces that node into your wallet's data path. |
--bootstrap-daemon-login <username:password> |
Supplies credentials for the selected bootstrap service. | Store in a protected configuration file if required. |
--bootstrap-daemon-proxy <IP:port> |
Uses a SOCKS proxy for bootstrap connections. | --bootstrap-daemon-proxy 127.0.0.1:9050. Configure this path deliberately rather than assuming another proxy flag covers it. |
Source: bootstrap configuration.
RPC payment flags
This release includes a proof-of-work credit system for RPC access. Despite the help text's "micropayment" wording, this is not an ordinary wallet transfer for each request. Clients receive credits for submitted work. Sufficiently good work may also produce a valid Monero block.
| Flag | What it does | Example or usage note |
|---|---|---|
--rpc-payment-address <address> |
Sets the mining reward address used by the RPC payment system and enables its payment configuration. | Use a valid address for the selected network. |
--rpc-payment-difficulty <number> |
Sets the difficulty of work accepted for RPC payment credits. | An operator policy choice. Coordinate with the credit rate. |
--rpc-payment-credits <number> |
Sets the number of credits awarded per accepted payment work result. | More credits per result generally means cheaper access for clients. |
--rpc-payment-allow-free-loopback |
Exempts loopback clients from payment requirements. | Helpful for local applications. Loopback means the node's own host. |
These settings require compatible clients. They are not necessary for a private node or a conventional free public node.
Sources: payment options and handlers, RPC payment implementation.
ZeroMQ flags
ZMQ RPC and ZMQ publication are different interfaces. P2Pool deployments commonly use publication notifications. That does not require exposing ZMQ RPC to the internet.
| Flag | What it does | Example or usage note |
|---|---|---|
--zmq-rpc-bind-ip <IP> |
Chooses the ZMQ RPC listening address. Default: 127.0.0.1. |
Keep local unless the surrounding deployment supplies appropriate protection. |
--zmq-rpc-bind-port <port> |
Sets the ZMQ RPC port. | Mainnet default: 18082. |
--restricted-zmq-rpc |
Disables some sensitive ZMQ RPC methods. | The source explicitly warns that this does not guarantee filtering of sensitive data. |
--confirm-zmq-rpc-external-bind |
Acknowledges binding ZMQ RPC beyond loopback. | An acknowledgement, not authentication. |
--no-zmq |
Disables ZMQ initialization, including RPC and publication in this release. | Do not combine with --zmq-pub. Publication will not start. |
--zmq-pub <endpoint> |
Publishes daemon notifications at a TCP or IPC endpoint. Repeat to configure multiple endpoints. | --zmq-pub tcp://127.0.0.1:18083. |
For a local notification consumer, leave ZMQ enabled and keep its RPC listener on the default loopback address:
./monerod --zmq-pub tcp://127.0.0.1:18083
Port 18083 here is an example publication port. Do not reuse the same local IP and port for an anonymous inbound P2P listener.
Sources: ZMQ arguments, daemon interface construction.
Built-in mining flags
The daemon's miner performs solo mining. It does not become an XMRig pool client or a P2Pool miner simply because mining is enabled. For pooled mining with your node, see getting started with P2Pool.
| Flag | What it does | Example or usage note |
|---|---|---|
--start-mining <address> |
Starts the built-in miner for a reward address. | --start-mining <PRIMARY_ADDRESS>. Use a valid network-matching primary address, not a subaddress. |
--mining-threads <count> |
Chooses mining worker threads. Zero requests automatic thread selection. | --mining-threads 2. |
--extra-messages-file <path> |
Supplies extra-message data for miner coinbase transactions. | Specialized functionality: the reader expects base64-encoded lines and miner state handling, not an arbitrary plaintext message. |
--bg-mining-enable |
Enables background mining behavior governed by system idle checks. | Requires mining to be started. Does not configure a pool. |
--bg-mining-ignore-battery |
Treats the miner as eligible without normal battery/power-state checks. | Can allow mining while on battery. Use deliberately. |
--bg-mining-min-idle-interval <seconds> |
Sets the observation interval used when deciding whether the machine is idle. | --bg-mining-min-idle-interval 10. |
--bg-mining-idle-threshold <percent> |
Sets how much average CPU idle time is required for background mining. | --bg-mining-idle-threshold 90. |
--bg-mining-miner-target <percent> |
Sets the CPU-use target for background mining. | --bg-mining-miner-target 40 is a background-miner control rather than an OS-enforced CPU quota. |
Example startup, after replacing the address placeholder:
./monerod --start-mining <PRIMARY_ADDRESS> --mining-threads 2
Idle detection and power-state support vary by platform. Inspect mining_status rather than assuming identical behavior on Linux, FreeBSD, and Windows.
Source: miner options and implementation.
Notification hooks
These flags execute a program when an event occurs. Use absolute paths and a script that handles its arguments safely. Give the daemon account permission to execute it.
| Flag | What it does | Substitutions |
|---|---|---|
--block-notify <command> |
Runs a command for a new block notification. | %s: block hash. |
--reorg-notify <command> |
Runs a command when the daemon processes a chain reorganization. | %s: split height. %h: new blockchain height. %n: new blocks. %d: discarded old-chain blocks. |
--block-rate-notify <command> |
Runs a command when observed block production deviates substantially from expectations. | %t: observation window in minutes. %b: observed blocks. %e: expected blocks. |
A notification hook can receive the block hash:
./monerod --block-notify '/usr/local/bin/monero-block-hook %s'
The hook could update monitoring or send an ntfy notification. It should return quickly. A block-rate alert indicates a statistical deviation. Other evidence is needed to identify an attack.
Source: notification definitions and invocation.
Windows service flags and internal options
| Flag | What it does | Example or usage note |
|---|---|---|
--install-service |
Registers the Monero daemon with Windows Service Control Manager. | From an elevated terminal: monerod.exe --install-service --config-file C:\Monero\monerod.conf. |
--uninstall-service |
Removes the registered Windows service. | monerod.exe --uninstall-service. Stop it first as appropriate. |
--start-service |
Requests startup of the registered Windows service. | monerod.exe --start-service. |
--stop-service |
Requests a stop through Windows service management. | monerod.exe --stop-service. |
--run-as-service |
Hidden internal switch used by the Windows service runner. | Not a normal manual startup setting. |
Windows also has --non-interactive, although it is registered among hidden options there. Unix --detach and --pidfile are not Windows service options.
The parser registers a hidden daemon_command argument, internally represented as --daemon_command. It collects positional command words such as status or print_block 1000000. Use the documented positional form, not the hidden switch, in normal operation.
Source: Windows daemonization, positional command registration.
All console commands
This release registers the following commands. Type them into an interactive daemon, or invoke them through a separate monerod process where supported. The syntax shown here describes v0.18.5.4, not unreleased development changes.
Sources for this entire command reference: command registration, argument parsing, command execution.
Help, status, and shutdown
| Command | Explanation | Example |
|---|---|---|
help [command] |
Lists console commands or displays help for one command. | help print_tx. |
apropos <keyword> [keyword ...] |
Searches command descriptions for matching words. | apropos mining. |
version |
Reports daemon version information. | version. |
status |
Summarizes synchronization, network, peer, and mining state. | status is the first check when a node appears unhealthy. |
print_height |
Prints the local chain height, which is the block count rather than the top block's zero-based index. | print_height. |
sync_info |
Shows synchronization details, connected peers, and pending download spans. | sync_info helps distinguish slow downloading from slow processing. |
print_status |
Checks whether an RPC daemon can be contacted. Intended for one-shot client mode, not the daemon's own console. | From a shell: ./monerod print_status. It is not equivalent to the richer status command. |
save |
Requests that blockchain state be saved. | save does not create a separate backup. |
stop_daemon |
Requests an orderly daemon shutdown. | stop_daemon. |
exit |
Alias for shutting down the daemon. | exit stops the node. It is not merely detaching from its console. |
Peer inspection and network controls
| Command | Explanation | Example |
|---|---|---|
print_pl [white] [gray] [pruned] [publicrpc] [limit] |
Lists known peer candidates, optionally filtered. White peers have successful connection history. Gray peers are unverified candidates. Neither list certifies an operator's trustworthiness. | print_pl white 20. |
print_pl_stats |
Shows counts and statistics for the peer lists. | print_pl_stats. |
print_cn |
Lists active connections rather than stored peer candidates. | print_cn. |
print_net_stats |
Shows network traffic totals and rates. | print_net_stats. |
limit [kB/s] |
Displays both bandwidth limits, or sets both to a supplied value. | limit or limit 2048. |
limit_up [kB/s] |
Displays or changes the upload limit. | limit_up 1024. |
limit_down [kB/s] |
Displays or changes the download limit. | limit_down 8192. |
out_peers [count] |
Reports the maximum outbound peer count, or changes it when a value is supplied. | out_peers 16. |
in_peers [count] |
Reports the maximum inbound peer count, or changes it when a value is supplied. | in_peers 32. |
bans |
Lists currently banned addresses and expiration information. | bans. |
ban <IP-or-@file> [seconds] |
Bans an address or addresses loaded from a file. | ban 192.0.2.10 3600 or ban @/etc/monero/manual-bans.txt 3600. |
unban <address> |
Removes a ban for one address. | unban 192.0.2.10. This version does not advertise the later all form. |
banned <address> |
Checks whether a specified address is banned. | banned 192.0.2.10. |
print_pl accepts at most three arguments in this parser, even though its help lists more optional selectors. pruned filters for pruned peers. publicrpc filters for advertised public RPC services. A numeric limit controls how many entries are printed.
For runtime bandwidth commands, -1 restores the built-in default, while 0 leaves that direction unchanged. Use a positive value to set a specific throttle.
Runtime tuning is not automatically written back into your configuration file. Make a separate configuration edit to retain a setting after restarts.
Blocks, transactions, and chain statistics
| Command | Explanation | Example |
|---|---|---|
print_bc <begin_height> [end_height] |
Displays blockchain information for a height range. | print_bc 1000000 1000010. Avoid enormous ranges when a small sample is enough. |
print_block <hash-or-height> [+hex] |
Displays a block selected by its hash or zero-based height. +hex adds serialized block data. |
print_block 1000000. |
print_tx <transaction_hash> [+meta] [+hex] [+json] |
Displays a transaction. +meta adds available metadata, +hex adds serialized data, and +json adds JSON. |
print_tx <TXID> +json. |
is_key_image_spent <key_image> |
Checks whether a key image is recorded as spent, including relevant pool state. | is_key_image_spent <KEY_IMAGE>. A key image alone does not identify a wallet's owner. |
diff |
Reports current chain difficulty information. | diff. |
hard_fork_info [version] |
Shows protocol upgrade information, optionally for a specified protocol version. | hard_fork_info. The parser permits omission despite the shorter help syntax. |
output_histogram [@amount ...] [min_count] [max_count] |
Counts outputs grouped by their public amount category, with occurrence-count filters. The amount is in atomic units. With no arguments, the minimum count is 3 and maximum count is unbounded. | output_histogram @0 1 selects the zero-amount category used for confidential outputs. Zero does not mean those outputs have no value. |
print_coinbase_tx_sum <start_height> [block_count] |
Totals miner transaction amounts over a range and reports emission/fee information. | print_coinbase_tx_sum 1000000 100. |
alt_chain_info [blockhash] |
Shows alternative-chain branches, or details for a selected branch tip. | alt_chain_info. An alternative branch is not automatically evidence of malicious activity. |
bc_dyn_stats <last_block_count> |
Calculates dynamic chain statistics over a recent block window. | bc_dyn_stats 720. This specifies a block count, not a guaranteed 24-hour period. |
The parser also supports print_bc -10 for the last ten blocks. alt_chain_info >3 filters for branches longer than three blocks, and alt_chain_info -100 filters by recent branch start heights. Quote the >3 argument when issuing a one-shot command from a shell, so it is not interpreted as output redirection.
These commands inspect public chain data. They do not decode hidden RingCT amounts, reveal destination addresses, or identify the actual spent member of a ring.
Transaction pool and relay
The transaction pool, or mempool, holds pending transactions known to this node. Different nodes can temporarily have different pools.
| Command | Explanation | Example |
|---|---|---|
print_pool |
Displays detailed pending transaction information. | print_pool. Output can be large. |
print_pool_sh |
Displays a shorter transaction-pool listing. | print_pool_sh. |
print_pool_stats |
Summarizes pool size, age, fees, and related statistics. | print_pool_stats. |
flush_txpool [txid] |
Removes one transaction from the local pool, or empties the whole local pool if no ID is supplied. | flush_txpool <TXID>. Removal does not cancel a transaction network-wide. Peers may send it again. |
relay_tx <txid> |
Requests relay of a transaction the daemon can locate in its pool. | relay_tx <TXID> does not create or sign a new transaction. |
Mining commands
| Command | Explanation | Example |
|---|---|---|
start_mining <address> [threads-or-auto] [background] [ignore_battery] |
Starts solo mining to the selected address. Optional trailing switches use boolean values. Defaults to one thread without background mining. | start_mining <PRIMARY_ADDRESS> 2 or start_mining <PRIMARY_ADDRESS> auto. |
stop_mining |
Stops the built-in miner. | stop_mining does not stop an independent XMRig process. |
mining_status |
Shows whether the daemon miner is active and reports its settings and rate. | mining_status. |
show_hr |
Enables continuous built-in miner hash-rate reporting. | show_hr. |
hide_hr |
Stops continuous hash-rate reporting without stopping mining. | hide_hr. |
For background mining, the full form can look like:
start_mining <PRIMARY_ADDRESS> 2 true false
This requests two mining threads with background behavior enabled and battery-ignore disabled.
Maintenance, diagnostics, and testing commands
| Command | Explanation | Example or usage note |
|---|---|---|
set_log [level-or-categories] |
Changes logging at runtime, or reports the current categories when called without arguments. | set_log 1. Restore a quieter level after collecting diagnostics. |
update check or update download |
Checks for a newer release or downloads the available update. | update check. Downloading does not replace the running executable or complete installation. |
prune_blockchain [confirm] |
Prunes eligible historical data in the current database. Without confirm, prints the disk-space warning. |
prune_blockchain confirm changes local storage. It does not immediately compact the database file. |
check_blockchain_pruning |
Checks whether stored pruning state is consistent. | check_blockchain_pruning is not a complete revalidation of every historical transaction. |
pop_blocks <count> |
Removes blocks from the local chain tip. | pop_blocks 10 is a maintenance action that rolls back local state. It does not change the Monero network's chain, and normal syncing can fetch the blocks again. |
flush_cache bad-blocks |
Clears the cached set of rejected blocks. | flush_cache bad-blocks. Although help mentions bad-txs, this release's parser accepts only bad-blocks. |
set_bootstrap_daemon (auto-or-none-or-host[:port]) [username] [password] [proxy_IP:port] |
Changes bootstrap forwarding at runtime. | set_bootstrap_daemon none disables it. set_bootstrap_daemon auto enables discovery. Consult help set_bootstrap_daemon before combining optional credentials and proxy arguments. |
rpc_payments |
Displays information about the daemon's RPC payment system and clients. | rpc_payments. Relevant when proof-of-work RPC payments are configured. |
For bootstrap changes, accepted forms are auto [proxy], none, host[:port] [proxy], and host[:port] username password [proxy]. With a host and just one additional argument, that argument is the proxy, not a username.
pop_blocks is not a routine fix for every synchronization problem. First inspect status, sync_info, storage availability, and logs. Run state-changing recovery commands only when the diagnosis calls for them.
Practical command sequences
Check a node that appears stuck
In the running console:
status
sync_info
print_cn
print_net_stats
No connected peers points toward connectivity or peer-selection trouble. Active downloads with slow progress can instead point toward disk or processing limits. Compare several observations rather than drawing conclusions from one snapshot.
Inspect a pending transaction
Replace the transaction ID:
print_pool_stats
print_tx <TXID> +json
A transaction absent from this node may still be present at another node. A transaction in the pool is not yet confirmed in a block.
Diagnose noisy logs temporarily
set_log 1
Collect the relevant interval, then return to:
set_log 0
Before sharing logs, check them for IP addresses, local paths, credentials, or other operational information.
Shut down cleanly
./monerod --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18081 stop_daemon
When a service manager owns the process, use that service's stop action so its restart policy does not immediately launch the daemon again.
Keep the reference matched to your binary
The startup and console interfaces evolve separately. A flag found in a development branch may not exist in a release binary, while a deprecated flag can remain accepted long after its function disappears.
For your installed version, use monerod --help for startup options and help inside the console for commands. If the help text and observed behavior disagree, inspect the parser for that exact release. In v0.18.5.4, the inactive UPnP controls and the flush_cache bad-txs help entry are examples of why that last check matters.
Source notes
The inventory follows the Monero v0.18.5.4 source tag. Source links beside each section identify the definitions and implementation checked.
Additional documentation: official monerod reference, configuration-file syntax, and daemon RPC documentation.