Skip to content

Sharing nodes

One of PeppyOS’s key features is the ability to share nodes with other people. As an example, we’ll try to pull the fake_uvc_camera node from this repo in a separate shell.

Terminal window
peppy node add https://github.com/Peppy-bot/example_nodes.git/python/fake_uvc_camera

or

Terminal window
peppy node add --ref main https://github.com/Peppy-bot/example_nodes.git/python/fake_uvc_camera

Now that this node is added, we can start it:

Terminal window
peppy node start fake_uvc_camera:0.1.0 device.physical="/dev/device1" device.sim="the_camera" device.priority="physical" video.encoding="rgb" video.frame_rate=30 video.resolution.width=1280 video.resolution.height=720

and inspect its logs:

Terminal window
tail /Users/tuatini/.peppy/logs/start/angry-ride-4256.log
[2026-01-25T16:38:51.860] [stdout] [uvc_camera] Video params: 720x1280 @ 30 fps, encoding: rgb
[2026-01-25T16:38:51.860] [stdout] [uvc_camera] Starting video loop...
[2026-01-25T16:38:51.860] [stdout] [uvc_camera] Video file found: /Users/tuatini/.peppy/nodes/fake_uvc_camera_0.1.0_093fa9/assets/robot.mp4
[2026-01-25T16:38:51.860] [stdout] [uvc_camera] Opening video file for playback...
[2026-01-25T16:38:54.892] [stdout] [uvc_camera] Emitted frame 65
[2026-01-25T16:38:57.913] [stdout] [uvc_camera] Emitted frame 129
[2026-01-25T16:39:00.926] [stdout] [uvc_camera] Emitted frame 194

We see that video frames are emitted from that node. We can pull a new node that depends on fake_uvc_camera to read those frames and reconstruct a short video. Pull another node from the same repository:

Terminal window
peppy node add https://github.com/Peppy-bot/example_nodes.git/python/fake_video_reconstruction

Start the node:

Terminal window
peppy node start fake_video_reconstruction:0.1.0 video_duration_seconds=5

If we look at the logs of the started fake_video_reconstruction node:

[2026-01-26T15:35:25.170] [stdout] Recording 250 frames (5 seconds at 50 fps)...
[2026-01-26T15:35:27.408] [stdout] Recorded 50/250 frames (1 seconds)
[2026-01-26T15:35:29.526] [stdout] Recorded 100/250 frames (2 seconds)
[2026-01-26T15:35:31.811] [stdout] Recorded 150/250 frames (3 seconds)
[2026-01-26T15:35:34.106] [stdout] Recorded 200/250 frames (4 seconds)
[2026-01-26T15:35:36.423] [stdout] Recorded 250/250 frames (5 seconds)
[2026-01-26T15:35:36.423] [stdout] Recording complete. Encoding video...
[2026-01-26T15:35:37.222] [stdout] Video saved to: /var/folders/kb/36lp35_92z5_jg6gfqhvkm600000gn/T/.tmpCJoXVL/reconstructed_video.mp4

We can see the video has been saved to a temporary folder. Go ahead and open it—you’ll find the reconstructed video of the robot. In the same way, you can share your own nodes by hosting them in a Git repository and connect them to remote nodes. A node can also be pulled in the same way if it’s in a .tar.zst archive.