---
date: 2023-09-21
title: "Ouroboros 0.20"
linkTitle: "Ouroboros 0.20"
description: "Major additions and changes in 0.20.0"
author: Dimitri Staessens
---

Version 0.20 brings some code refactoring and a slow of bugfixes to
the prototype to improve stability, but the main quality-of-life
addition is config file support in TOML format. This removes the need
for bash scripts to configure the prototype on reboots/restarts; a
very basic feature that was long overdue.

As an example, before v0.20, this server had Ouroboros running as a
systemd service, and it was configured using the following irm commands:

```bash
irm i b t udp n udp l udp ip 51.38.114.133
irm n r ouroboros.rocks.oping l udp
irm b prog oping n ouroboros.rocks.oping auto -- -l
```

These bootstrap a UDP layer to the server's public IP address,
register the name "ouroboros.rocks.oping" with that layer and bind the
program binary /usr/bin/oping to that name, telling the irmd to start
that server automatically if it wasn't running before.

While pretty simple to perform, if the service was restarted or the
server was rebooted, we needed to re-run these commands (we could have
added them to some system startup script, of course).

Now the IRMd will load the config file specified in
/etc/ouroboros/irmd.conf. The IRMd configuration to achieve the above
(I renamed the UDP layer to "Internet", but that name doesn't really
matter if there is only one ipcpd-udp in the system):
```bash
root@vps646159:~# cat /etc/ouroboros/irmd.conf
### Ouroboros configuration file
[name."ouroboros.rocks.oping"]
prog=["/usr/bin/oping"]
args=["-l"]

[udp.internet]
bootstrap="Internet"
ip="51.38.114.133"
reg=["ouroboros.rocks.oping"]
```

To enable config file support, tomlc99 is needed. Install via

```bash
git clone https://github.com/cktan/tomlc99
cd tomlc99
make
sudo make install
```

and then reconfigure cmake and build Ouroboros as usual.

More information on how to use config files is in the example
configuration file, installed in /etc/ouroboros/irmd.conf.example, or
you can have a quick look in the
[repository](/cgit/ouroboros/tree/irmd.conf.in).

The full git changelog can be browsed in
[cgit](/cgit/ouroboros/log/?showmsg=1).



