Skip to content
IOTA Reference Implementation
Java Python Gherkin Standard ML Shell Dockerfile JavaScript
Branch: dev
Clone or download
GalRogozinski Documentation: Document Persistence Provider (#1157)
* persistence documentation

* persistence documentation

* document tangle

* Apply suggestions from code review

Co-Authored-By: GalRogozinski <>

* fix docs
Latest commit 5499d34 Aug 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update bug report template with new Discord links (#1504) Jul 9, 2019
docker Change: Docker network option (#1496) Jul 18, 2019
python-regression Test: Fix machine6 for networking (#1505) Jul 11, 2019
src Documentation: Document Persistence Provider (#1157) Aug 15, 2019
.gitignore Update .gitignore (#1518) Jul 16, 2019
.travis.yml Travis no longer deploy to github. We want to depend on Buildkite Jul 31, 2019 Update Sep 27, 2018 Change: Docker network option (#1496) Jul 18, 2019
Dockerfile Change: Docker network option (#1496) Jul 18, 2019
LICENSE Created more intuitive models Mar 8, 2017 Documentation: Updated links to official documentation (#1560) Aug 4, 2019 Documentation explanation in styleguide (#1120) Nov 6, 2018
Security.MD Add basic Responsible Disclosure Policy (#1475) Jun 2, 2019
changelog.txt update changelog of 1.8.1 Aug 12, 2019
checkstyle.xml Fix checkstyle configuration (#990) Sep 17, 2018
codesigning.asc.enc added code-signing for releases Jun 9, 2017
format.importorder add formatting files Oct 14, 2018
format_settings.epf add formatting files Oct 14, 2018
logo.utf8.ans (#36) Jan 17, 2017
pom.xml Merge branch 'release-v1.8.1' into dev Aug 12, 2019
ruleset.xml pmd should alert against unused code Oct 8, 2018
testnet.snapshot.spentaddresses Feat: Write snapshot files to temp files first (#1256) Jan 6, 2019

Build Status Codacy Badge Codacy Badge GitHub release license


The IRI repository is the main IOTA Reference Implementation and the embodiment of the IOTA network specification.

This is a full-featured [IOTA] node with a convenient JSON-REST HTTP interface. It allows users to become part of the [IOTA] network as both a transaction relay and network information provider through the easy-to-use [API].

It is specially designed for users seeking a fast, efficient and fully-compatible network setup.

Running an IRI node also allows light wallet users a node to directly connect to for their own wallet transactions.

-* License: GPLv3

How to get started

The IOTA network is an independent peer-to-peer network with a first-user, friend-to-friend, network structure:

  • As a 'first-user' network, to access the data streams and APIs that other users provide, you must first exchange your IP and port configuration with a current user.

  • As a 'friend-to-friend' network, you have the privilege of joining new users into the network through your node by adding them to your approved neighbors list — ensuring that you both broadcast to them and also receive their broadcasts.

You can find neighbors on the #nodesharing channel of our [Discord server].

Everyone will be welcoming and very happy to help you get connected. If you want to get tokens for your testcase, please just ask in one of the communication channels.

Reporting Issues

If you'd like to contribute to IRI, report bugs, problems or irregularities with this release, please see for guidelines.


This page contains basic instructions for setting up an IRI node. You can find the full documentation on:

You can also use one of these great community guides:


The preferred option is that you compile yourself. The second option is that you utilize the provided jar, which is released whenever there is a new update here: Github Releases.

Compiling yourself

Make sure to have Maven and Java 8 installed on your computer.

To compile & package

$ git clone
$ cd iri
$ mvn clean compile
$ mvn package

This will create a target directory in which you will find the executable jar file that you can use.

How to run IRI


Running IRI is quick and easy, and you can usually run it without admin rights. Below is a list of command line options.

At a minimum, the port must be specified on the command-line — e.g., '-p 14265' or in the iota.ini file — e.g., 'PORT = 14265'.

If the 'iota.ini' file exists, it will be read. The port and all the command line options below take precedence over values specified in the ini config file.

Here is an example script that specifies only the port, with all other setting to be read from the ini file if it exists:

java -jar iri.jar -p 14265


Create an iota.ini file with all of your configuration variables set in it. Any that you don't provide in here will be assumed to be default or taken from command line arguments.

docker run -d --net=host --name iota-node -v iota.ini:/iri/iota.ini iotaledger/iri:latest

Command Line Options

Option Shortened version Description Example Input
--port -p This is a mandatory option that defines the port to be used to send API commands to your node -p 14265
--neighbors -n Neighbors that you are connected with will be added via this option. -n "udp:// udp://[2001:db8:a0b:12f0::1]:14265"
--config -c Config INI file that can be used instead of CLI options. See more below -c iri.ini
--udp-receiver-port -u UDP receiver port -u 14600
--tcp-receiver-port -t TCP receiver port -t 15600
--testnet Makes it possible to run IRI with the IOTA testnet --testnet
--remote Remotely access your node and send API commands --remote
--remote-auth Require authentication password for accessing remotely. Requires a correct username:hashedpassword combination --remote-auth iotatoken:LL9EZFNCHZCMLJLVUBCKJSWKFEXNYRHHMYS9XQLUZRDEKUUDOCMBMRBWJEMEDDXSDPHIGQULENCRVEYMO
--remote-limit-api   Exclude certain API calls from being able to be accessed remotely --remote-limit-api "attachToTangle, addNeighbors"
--send-limit   Limit the outbound bandwidth consumption. Limit is set to mbit/s --send-limit 1.0
--max-peers     Limit the number of max accepted peers. Default is set to 0 (mutual tethering) --max-peers 8
--dns-resolution-false Ignores DNS resolution refreshing --dns-resolution-false

INI File

You can also provide an ini file to store all of your command line options and easily update (especially neighbors) if needed. You can enable it via the --config flag. Here is an example INI file:

PORT = 14265
NEIGHBORS = udp://
IXI_DIR = ixi
DEBUG = false
DB_PATH = db

Special Thanks To

alt text

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

You can’t perform that action at this time.