Ryven 3 - What's new?

Flow-based visual scripting for Python

A simple and powerful visual nodes editor for Python, and a framework for building nodes executing any Python code.
Ryven Interface

Who is Ryven for?

About this tool

What is Ryven

Ryven lets you use the more diagram-like, dataflow inspired structure to represent data processing-centric functionality. Each node runs code, and Ryven provides a simple framework to create those and an editor to use them. Use cases range almost through the whole Python domain, from IoT, over machine learning, generative engineering, Raspberry Pi, web APIs, and much more. You should know the Python programming language and its basic concepts.

What it's not

A tool to learn conventional programming or to generally program in Python. It does not automatically generate graphs out of existing code. It does not try to replace source code. Both representations have their domains and, even though it enables significant abstraction, Ryven tries to make them work together. Also, Ryven is not a professional piece of software and it's still receiving active development and sometimes major changes.

Create clear and pretty flows

Design, of course, plays a huge role when talking about visual scripting. Therefore, Ryven offers a variety of different flow designs.

Try some themes

Pure Dark
Pure Light
Simple
Blender
Ghostly
Ueli
Tron
Toy

Ryven - Themes

Built-in Interpreter

Using the built-in REPL you have access to the whole API. Any modifications - like creating/renaming/deleting scripts - will reactively be processed by the frontend automatically, so you can really do anything from the console.

Python

                
>>> reset()
< adding node to console context >
added as obj
>>> obj
< nodes.SetVar_Node(0x22eddacc380) at 0x0000022ED958F4C0 >
>>> node = obj
>>> node.create_output(label='additional data')
>>> node.set_output_val(1, 'test')
>>> session.scripts
[< ryvencore.Script.Script object at 0x0000022ED9567910 >,
< ryvencore.MacroScript.MacroScript object at 0x0000022EDEFC0BB0 >]
>>> flow = session.scripts[0].flow
>>> flow.create_node(node.__class__)

>>> flow.remove_node(flow.nodes[-1])
                
              

Ryven Console

Ryven Console lets you deploy projects made in Ryven directly on the backend (ryvencore), without any frontend dependencies, with much higher performance.

Ryven Console

                
34 < std__Checkpoint0.Checkpoint_Node object at 0x0000021ADFA5BE20 >
35 < std__Log0.Log_Node object at 0x0000021ADFA5BCD0 >
ref by index: 18
--> obj: < std__Button0.Button_Node object at 0x0000021ADFA56C70 >

direct access:
    session   - the ryvencore session instance
    nodes     - get a list of all node objects
    flows     - get a list of all flows
    exit      - close the session

obj.update()
[480, 729, 646, 924, 773, 542, 6, 14, 131, 668]
[6, 14, 131, 480, 542, 646, 668, 729, 773, 924]
                
              

Source Code Access

As Ryven tries to enhance the textual representation, you usually have access to the source code implementation of the nodes you use inside the editor. In some cases you can even temporarily override method implementations.

Python

                
class Eval_Node(NodeBase):
    """Evaluates the input expression from the widget"""

    title = 'eval'
    version = 'v0.3'
    init_inputs = []
    init_outputs = [
        NodeOutputBP(),
    ]
    main_widget_class = widgets.EvalNode_MainWidget
    main_widget_pos = 'between ports'

    def __init__(self, params):
        super().__init__(params)

        self.special_actions['add input'] = {
            'method': self.add_param_input
        }
    ...
                
              

Stylus Support

You can add handwritten notes using a stylus pen on touch devices. Effective use of this feature significantly supports clarity and adds a whole new dimension to your visual flows.

Ryven - Stylus

The best? It flows!

(ah ye and it's free btw)

Philosophy

Ryven is not a professional piece of software, and that's also not the aim. It's a hobby project mainly developed by one student. However, it repeatedly turned out to be useful for a wide range of different applications. And to make it accessible for anyone, it is free and open source. I've put quite some effort in making it great but it's not perfect and future, long-term development can only be driven by contributions.