Skip to content

Python Nodes

Python is the fastest Studio project-Node path today. Text Source, Transform, and Sink packages run through the trusted local Python development Host.

import muxiva

class Uppercase:
    def on_process(self, frame, ctx):
        ctx.emit(
            "text_out",
            muxiva.TextFrame(frame.text.upper(), sequence=frame.sequence),
        )
        ctx.publish_notification("example.text.uppercased", {"sequence": frame.sequence})

class ClientEvent:
    def on_process(self, frame, ctx):
        ctx.emit("event_out", muxiva.EventFrame(
            "example.client.message", '{"text":"ready"}',
            source="example.client_event", sequence=frame.sequence,
        ))

ctx.emit(port, frame) sends data without ending the callback. ctx.emit_signal(name, payload) sends adjacent graph control, while ctx.publish_notification(topic, payload) publishes a low-frequency notification to the runtime NotificationBus. ctx.schedule_next_tick(delay_ms) requests one input-free Runtime callback for bounded background-result draining; no tick_in Port or Clock Node is needed. Returning a Frame or port mapping remains compatibility sugar; new Nodes should prefer explicit context actions.

Declare matching ports:

[
  {"name": "text_in", "direction": "input", "frame_type": "text"},
  {"name": "text_out", "direction": "output", "frame_type": "text"}
]

Loading boundary

Saving, listing, or validating the package does not import Python source. Studio starts a managed host and loads the declared entrypoint only after a trusted local user selects Run.

Current boundary

  • Text and Audio inputs plus Signal callbacks are supported by the Studio project Host;
  • Text, Audio, Event, and Signal output Port declarations are supported; Nodes normally emit Signal control with ctx.emit_signal(...) and Event Frames with ctx.emit(...);
  • Byte and Video project-Node frames are not yet implemented by this development Host;
  • Source, Transform, and Sink roles are supported;
  • process isolation and multimodal project-package transport remain planned;
  • the standalone Python SDK already exposes multimodal Frames and hosted Graph Factory APIs for programmatic development.