Two Way Ninja

Two Way Ninja is the next step after Wiki Ninja: the student “screen shares” into my wiki so I can watch what they are doing, while I publish my talking-head camera (via the ATEM Mini) into their wiki so they can see and hear me without leaving the Federated Wiki lineup - docs.vdo.ninja

This replaces the “Zoom window” with two embedded panels, one on each person’s wiki. Each panel is just a Frame Plugin paragraph pointing at a VDO.Ninja viewer URL - github.com

# The idea We run two one-way streams at the same time. One stream is TEACHER_CAM: I push my ATEM talking head, the student views it inside their wiki. The other stream is STUDENT_SCREEN: the student pushes a screen share, and I view it inside my wiki - docs.vdo.ninja This feels surprisingly “native” because both of us keep the wiki lineup open as the shared workspace, and the video is just another panel next to the page we are discussing - docs.vdo.ninja

# What you need Both wikis should have the Frame Plugin available, because each side is embedding a VDO.Ninja viewer page as an iframe - github.com You also need two stream ids and a shared secret (password). Treat the links as capability URLs: anyone with them can connect, so share them like invites - docs.vdo.ninja

# Stream A: Teacher camera into the student’s wiki I publish my camera using a push link. Example pattern: https://vdo.ninja/?push=TEACHER_CAM&webcam&autostart&password=PASS The &autostart flag skips past most setup clicks for the sender, which is ideal when you are about to teach and do not want fiddly device menus - docs.vdo.ninja The student embeds the matching view link in a Frame paragraph inside their wiki: https://vdo.ninja/?view=TEACHER_CAM&password=PASS&cleanoutput Clean output keeps the embedded panel looking like “a video surface” rather than a full web app with popups and extra UI - docs.vdo.ninja If echo becomes a problem, the student can force their embedded viewer to start with audio playback muted: https://vdo.ninja/?view=TEACHER_CAM&password=PASS&cleanoutput&mutespeaker They can still unmute manually when needed, but this prevents accidental feedback when both sides have speakers on - docs.vdo.ninja

# Stream B: Student screen share into the teacher’s wiki The student publishes a screen share using a push link. Example pattern: https://vdo.ninja/?push=STUDENT_SCREEN&screenshare&password=PASS The &screenshare flag jumps the sender straight into the screen-share flow rather than the generic camera picker, which reduces confusion for first-time students - docs.vdo.ninja Browsers still require a manual click to choose which screen or window to share, so do not expect “true” auto-start for screen sharing even if you add &autostart. That limitation is normal and documented - docs.vdo.ninja I then embed the matching view link in a Frame paragraph inside my own wiki: https://vdo.ninja/?view=STUDENT_SCREEN&password=PASS&cleanoutput This becomes my “student cockpit” panel, so I can watch exactly what they are doing in the wiki while talking them through it - docs.vdo.ninja

# How to run the session I open my wiki lineup with two panels: the wiki page we are editing and the embedded STUDENT_SCREEN view panel. The student opens their lineup with the page we are editing and the embedded TEACHER_CAM view panel - docs.vdo.ninja Keep audio simple. In most sessions, only the teacher stream needs audio, and the student screen share can be silent. If you do want the student to narrate, decide who is “audio live” and mute the other side’s speakers to avoid loops - docs.vdo.ninja

# Small refinements If the student is nervous about screen sharing, try &screenshare2 instead of &screenshare, which adds an extra “this is a screen share” moment in the UI and can reduce mis-clicks - docs.vdo.ninja If a panel looks blank, check the basics: the sender is currently pushing, the ids match exactly, the password matches, and the viewer has clicked once to allow playback where required by browser autoplay rules - docs.vdo.ninja

# Where this can go next Two Way Ninja is deliberately “two one-way pipes” because it is stable and easy to reason about. Later you can evolve into a room-based setup where webcam and screen share are managed together, or you can wrap these URL patterns into a dedicated “Ninja” plugin that renders a friendly status badge and enforces clean defaults - docs.vdo.ninja