The return of Yukon

Rejoice, the Yukon project is revived! @silver.valdvee has been working hard on this application since July and we are expecting to publish the first usable version in about four weeks. The source code is available under the terms of the MIT license here:

The development is driven by our own experience with Cyphal networks. The two most important features available at this point are the network graph and the register view (but there are more). The network graph automatically reconstructs the data flow through the network and displays it in a human-readable format:

The register view is a very flexible tool that allows you to configure the entire network or a given subset of its nodes in a flash, including import/export of the configuration to/from YAML or JSON files:

Here’s a brief screencast of an early preview:

Yukon is designed to be fully interoperable with Yakut; for instance, you can read and write the same configuration files using either application. Just like Yakut, Yukon is designed to support all Cyphal transports, although, at the moment, the main focus is on Cyphal/UDP and Cyphal/CAN.

Yukon runs on GNU/Linux and Windows out of the box. Support for macOS is possible; we would accept related pull requests.


With many usability changes, a windowing system and an integrated interface selection window, here is the current release of Yukon. Index of /products/org.opencyphal.yukon/releases/2022.09.1

Not all windowing features work on Electron yet, as it is a browser based windowing system but otherwise we have made many steps in the right direction.

Here the transport is configured:

Here Node statuses on the bottom and a data flow diagram has developed from the data snooped on the network:

Debug messages shown in the messages panel can be filtered in many ways

Added interfaces (transports) can be removed easily (eg to allow something else to use the same interface):

When choosing the interface, options are presented in a user-friendly manner, no need to manually check which interface is which:

The registers panel supports many advanced features for sharing register values, importing them, and applying setting to many devices at once. Filtering is also supported and the format used for saving and importing is compatible with existing Yakut files.

All closed panels are openable again from a toolbar


With Yukon release 2022.10.3 there are these updates:

  • A new tool for verifying which registers were updated and which failed to update (didn’t exist on device, etc). This is useful when you update a bunch of registers using a YAML import to make sure everything went as expected.

  • A new tool for subscribing to subjects. This gathers all possible datatypes it has access to and shows them available for subscription.

While still primitive, it allows the user of Yukon to skip using Yakut for receiving basic info from subjects.

  • The transport list and some other panels have more appropriate styles from Bootstrap now

  • For subjects where a FIXED_PORT_ID is not set, there are links displayed in the monitor window.

  • Significantly reduced CPU usage and delays on frontend-backend network traffic.
  • Automated tests were added for a part of the Yukon API
  • Bug fixes for regressions
  • Refactors for huge code files

Version 2022.12.5 is out!

Lots of things have again been improved since the last post.
As always you can find the executables here:
And source from here: source

  1. A new monitor/canvas window with an organized layout.

  2. Dark mode (depending on OS settings)

    compared to light mode

  3. Multiple instances of Yukon can be launched without problems (CAN transport is still unlikely to comply well in this case), no hidden Yukon instances will remain in the background when Yukon is opened twice.

  4. Subscription frames for the new canvas
    It’s possible to subscribe to subjects and get the latest messages, as well as get these messages replicated into the messages panel.

  5. A settings panel (for configuring various aspects of Yukon) that graphically represents an arbitrary YAML structure for viewing and editing. These settings are easily accessible for other parts of the application to depend on. Listeners can be attached to changes in settings (ReactiveValue objects).

  6. Fixed missing support for all pythoncan supported transports.

  7. Column width in the registers window can now be adjusted. It can be dragged like you would expect from a resizable table but also settings contains a value for the column width.

  8. Made it easier to disable auto-scroll when you see an interesting message, just click anywhere in the messages panel.

  9. Support for automatic node-id allocation, enable it in the settings.

  10. Support for firmware updates. Choose the path where your firmware is stored and then send a COMMAND_BEGIN_SOFTWARE_UPDATE through the commands window.

  11. Ability to click and highlight all the different connections to subjects, highlighting who is publishing an subscribing to specific subjects.

  12. Clicking on subject numbers (2347 in this case) will show a list of all the datatypes that are in use on that subject.

  13. Use middle click drag to pan around the canvas (monitor2), many functions of Yukon will be accessible through the canvas soon, moving around conveniently is important.

Right now synchronized subscription to subjects is in progress of being implemented, next up in the list is publishers with the ability to set and program different fields of the data-types being published interactively.

It’s best to know that Yukon comes with some useful shortcuts. In general it’s possible to use CTRL+SPACE to maximize/minimize a panel that is being hovered over. This allows you to conveniently and quickly make the best use of screen-space. Right click will open up context menus in many places. If you see the generic Copy / Cut text context menu then no actions are available for that UI element.

In the registers panel you can drag mouse over registers while holding left click to select these registers, dragging over column or row headers will select/deselect whole columns or rows. Holding shift after clicking on a register (table cell) and clicking on another will select the range of of registers between. Holding alt and clicking on a register will refresh the value of that register by requesting it to be fetched from the device.

If you are using the messages panel to keep track of any important activity with auto-scroll toggled on then just clicking anywhere will stop auto-scroll and let you inspect, scroll around, freely.

Another quite useful tip to know is that all of the panels in Yukon can be detached from the main application, then they are their own windows and can be placed anywhere, even on other screens that you may have.


This looks great!

1 Like