Home Security App
Bubbaloop 101: Turn Your Phone into a Smart Security Camera in 10 Minutes
Why should you care?
You already own the hardware. An old iPhone or Android device on your windowsill is now your first smart security feed.
Privacy‑first. Everything stays local on a $249 Jetson Orin Nano or your laptop – no cloud fees, no vendor lock‑in.
Instant insight. Live multi‑camera visualization and local video recording with spatial intelligence built in.
This guide walks you through setting up Bubbaloop, an open-source camera pipeline built with Rust and kornia-rs, to:
Ingest real-time video from your phone or IP cameras
Do high level vision tasks like question answering, object detection etc on frames
Visualize and interact with the results in real-time
All with high performance on low-cost edge hardware
⏱️ You’ll go from "unopened box" to live feed + local recording in 10–15 minutes.
What You'll Need
Your Phone or Any Camera
iPhone – use RTSP Stream or Larix Broadcaster
Android – use WebCamPro
Optional: IP Cam (RTSP compatible) – e.g. TP-Link Tapo TC65 (~£29)
Hardware
Jetson Orin Nano (8GB) – Buy here from Seeed Studio (~$249)
Or your Linux laptop / PC

Software & Tools
Rust + Cargo — https://www.rust-lang.org/
Kornia-rs: high-performance vision tools in Rust — https://github.com/kornia/kornia-rs
Just: command runner — https://just.systems/
Rerun.io for real-time visualization (optional but recommended)
Set Up Camera Streaming First
Download RTSP Stream
Start a stream and take note of the RTSP URL (e.g.
rtsp://your-ip:8554/live
)
Step-by-Step Setup
Clone the Repo
git clone https://github.com/kornia/bubbaloop.git
cd bubbaloop
Configure Your Camera
Edit src/cu29/pipelines/cameras_1.ron
:
(
tasks: [
(
id: "cam0",
type: "crate::cu29::tasks::VideoCapture",
config: {
"source_type": "rtsp",
// URL of the RTSP camera
// rtsp://<username>:<password>@<ip>:<port>/<stream>
"source_uri": "rtsp://tapo_entrance:123456789@192.168.1.141:554/stream2",
"channel_id": 0,
}
),
],
)
Install bubbaloop
sudo ./scripts/install_linux.sh
This will install all the necessary dependencies including Rust (if not installed on your computer) and start the system process. You can check the status via
systemctl status bubbaloop
for real time logs
sudo journalctl -u bubbaloop.service -f
Start a Camera Pipeline
bubbaloop pipeline start --name cameras
To stop:
bubbaloop pipeline stop --name cameras
List all pipelines:
bubbaloop pipeline list
Start a recording
bubbaloop recording start
To stop:
bubbaloop recording stop
Visualize with Rerun
python examples/python-streaming/client.py --host 0.0.0.0 --port 3000 --cameras 0
Or view a recorded .rrd
file:
scp your-device:/tmp/1735941642.rrd ./
rerun 1735941642.rrd

Running Paligemma for Object Detection (Experimental)
For now the pipelines are mutually exclusive. This means that before starting the inference you need to stop any running pipeline.
Now you can start safely the inference engine
bubbaloop pipeline start --name inference
Customise the prompt
You can change the prompt online with the following command
bubbaloop inference settings --prompt "Is there any human?"
Request the inference result
The inference result can be obtained using the following command
bubbaloop inference result
Client
Result: {
"Success": {
"channel_id": 0,
"prompt": "Is there any human?",
"response": "no",
"stamp_ns": 141281452950
}
}
Contribute / Feedback
Join our Discord server or open issues on GitHub.
Last updated