Ryven 3 - What's new?

Flow-based visual scripting for Python

A simple visual scripting environment for Python providing a diagram-like structure for an intuitive interface while your nodes can execute any python code.
Ryven Interface

Who is Ryven for?

About this tool

What is Ryven

Ryven enables using the more diagram-like dataflow inspired structure to represent functionality. Each node runs code and Ryven provides a simple system to create those and add intuitive GUI. Use cases range almost through the whole Python domain, from IoT, over any kind of data processing, 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 quite 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 also have access to the backend session and you can use its whole API as well as access your nodes. Any modifications - like creating/renaming/deleting new scripts - will reactively be processed by the frontend automatically, so you can really do everything 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

You can use Ryven Console to run your projects directly on the backend without any frontend dependencies. This enables more flexible deployment of your scripts and provides higher performance which can be useful for automation and larger intensive data processing tasks.

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 always have access to the source code implementation of the nodes you use inside the editor. Furthermore, in some cases you can temporarily change method implementations.

Python

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

    title = 'eval'
    init_inputs = [
        # NodeInputBP(),
    ]
    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 write notes into your flows by hand using a stylus pen. 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, not only but including educational purposes. 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.