Acknowledgements: We used OpenAI's ChatGPT 5 in the opening stages to help us determine what libraries and technical milestones we needed to reach in order to build Coniuncti. Additionally we used Claude Sonnet 4.5 via VSCode's CoPilot Chat throughout the Hackathon to build Coniuncti. Finally, we included Ngrok's cloud-based tunneling service to allow for remote internet connections, thereby transforming Coniuncti from just a cool portfolio project to an actually useful application.
Notice: We cannot guarantee functionality on non-Windows operating systems. In testing MacOS and Linux proved unstable. Please keep that in mind when using Coniuncti.
What is Coniuncti?
A real-time screen sharing application with remote control capabilities built with Python. Works on local networks and over the internet.
✅ Connect to a host and see their screen - Real-time screen streaming at 30 FPS
✅ Let viewers type and click on the host's screen - Full remote control
✅ Remote internet access - Share screen from anywhere using ngrok tunnels
-
Screensharing
- Host shares screen with multiple users
- JPEG compression for efficient network transmission
- Configurable FPS and quality settings
-
Input Injection and User Interaction Page
- Remote input properly registered as native typing/clicking events
- Mouse movement, clicks, scrolling, and keyboard input
- Ability to blacklist certain IP addresses from connection
-
Overlay Window
- Interactive client window
- Connected users sidebar
- FPS counter and status indicators
-
Network Events
- Socket-based host-client architecture
- Multi-client support
- Logging for mouse/keyboard events
- Client list synchronization
-
Remote Access
- Port forwarding configuration helper
- ngrok tunnel integration
- Authentication token support
- Install Python dependencies:
pip install -r requirements.txtRun the following command:
python integrated_app.pyintegrated_app.py is the source code for Coniuncti.
To create a new executable file, run the following command:
.\build_executable.batSetup (one-time):
To host over the Internet (as opposed to just your local network), you will need a ngrok authentication token. Luckily, it's free!
┌──────────────┐ Network ┌──────────────┐
│ │◄────────────────────────┤ │
│ HOST │ Screen Frames │ CLIENT 1 │
│ (Server) ├────────────────────────►│ (Viewer) │
│ │ │ │
│ - MSS │◄────── Commands ────────┤ - Tkinter │
│ - PyAutoGUI │ (Mouse/Keyboard) │ - Input │
│ - Socket │ │ - Display │
└──────┬───────┘ └──────────────┘
│
├─────────────────────────────────┐
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ CLIENT 2 │ │ CLIENT 3 │
│ (Viewer) │ │ (Viewer) │
└──────────────┘ └──────────────┘
Important:
- Use authentication tokens for remote access
- Only share connection details with trusted users
- Consider using ngrok for sensitive environments
- Monitor your network - close port forwarding when not in use
- Change default port if exposing to public internet
Connection refused?
- Check host is running on the correct port
- Verify firewall settings
- Ensure you're using the correct IP address
Can't Host? Broken client views?
- Reboot Coniuncti
- If you are switching between "Local Network" and "Remote (ngrok)" hosting during the same session make sure you've ticked/unticked "Enable Remote Access"
- If you're using "Local Network" hosting only clients on the same WiFi network with the host can connect
Slow/laggy video?
- Lower FPS or quality settings
- Check network bandwidth
- Reduce connected clients
- Make sure your computer is plugged in or your power saving feature is turned off.
Remote connection timeout?
- Verify port forwarding in router
- Check firewall blocking the port
- Test port with online port checker