mikhailbovt/stillwatch

Video event triage for human review. CPU inference, retained context and a Python SDK.

Python

2

5 commits

updated Oct 17, 2026

See the code

See what people are saying

SourceMessageScoreDate

Stillwatch – Open-source AI system for detecting emergencies in CCTV footage (r/computervision)

Hey everyone! I built Stillwatch, an open-source system that uses local computer vision and cloud-based decision models to detect potential medical emergencies, falls, fires, and smoke in live camera feeds. Instead of sending every frame to the cloud, it uses local models to identify suspicious…

1

Oct 18, 2026

README

Stillwatch

Stillwatch

Video event triage for human review. Local detection, retained event context, cloud assessment and a Python SDK.

0.5.0 · Preview

https://github.com/user-attachments/assets/0d268116-8ec5-4f05-9032-de4e49ac49ea

53 seconds · Staged fall observation and fire detection · Original speed. Download MP4 · Footage credits and outcomes.

Run

Python 3.12, uv and Docker for initial model conversion.

git clone https://github.com/mikhailbovt/stillwatch.git
cd stillwatch
uv sync --frozen --extra inference --extra cloud --group dev
docker build -t stillwatch:0.5.0 .
uv run python tools/fetch_models.py --convert
uv run stillwatch

Open http://127.0.0.1:8765. Select a video, connected camera or RTSP stream. Sources change without reloading the page or models. Run one process per source and data directory.

Startup uses mock assessments (UNKNOWN) and makes no API requests. To enable cloud assessment, create ignored .env.local with OPENAI_API_KEY, then set provider: openai and cloud_spending_enabled: true in your configuration. The account needs access to gpt-6-luna and the Decisions API. Selected masked frames are sent to OpenAI. Setup and deployment.

Processing

ComponentDefault
People and postureYOLO26s Pose · CPU · 5 Hz target
Smoke and flameYOLOv8n Fire/Smoke · 2 Hz target
Event context30 seconds · 64 MiB buffer
Full medical assessment15 observed source seconds and 12 new frames
Recovery evidenceSustained activity or return to an observed seated baseline
Cloud queueOne request in flight · eight waiting

The service retains the beginning and development of an episode. Repeated suspicion does not restart its observation clock. A bounded early screen handles visible immediate danger. Local motion and cloud evidence must agree before medical clearance; lost or ambiguous identity remains uncertain.

Integrate

Releases include server and SDK wheels, source archives, OpenAPI, examples and SHA-256 checksums. The SDK supports Python 3.10+ and has no inference dependency.

pip install ./stillwatch_sdk-0.5.0-py3-none-any.whl
from stillwatch_sdk import Stillwatch

with Stillwatch("http://127.0.0.1:8765") as client:
    for event in client.events(limit=20).events:
        print(event.incident_id, event.analysis_status)

API and embedding · SDK reference · Model setup

Status

Preview for supervised evaluation. Misses and false signals remain possible, especially with distant people, occlusion and crowds. Injury, actual assistance need and deployment alert accuracy are not established. Physical camera and RTSP acceptance depend on the installation. Known limitations.

uv run ruff check .
uv run ruff format --check .
uv run pytest -q

License

Original service and SDK: Apache-2.0. The supplied inference runtime and model candidates have separate AGPL terms. Weights, raw datasets, credentials and event databases are excluded. Demonstration footage retains its own license. Third-party notices.

computer-vision
human-in-the-loop
python
video-analysis

mikhailbovt/stillwatch

Video event triage for human review. CPU inference, retained context and a Python SDK.

Python

2

5 commits

updated Oct 17, 2026

See the code

See what people are saying

SourceMessageScoreDate

Stillwatch – Open-source AI system for detecting emergencies in CCTV footage (r/computervision)

Hey everyone! I built Stillwatch, an open-source system that uses local computer vision and cloud-based decision models to detect potential medical emergencies, falls, fires, and smoke in live camera feeds. Instead of sending every frame to the cloud, it uses local models to identify suspicious…

1

Oct 18, 2026

README

Stillwatch

Stillwatch

Video event triage for human review. Local detection, retained event context, cloud assessment and a Python SDK.

0.5.0 · Preview

https://github.com/user-attachments/assets/0d268116-8ec5-4f05-9032-de4e49ac49ea

53 seconds · Staged fall observation and fire detection · Original speed. Download MP4 · Footage credits and outcomes.

Run

Python 3.12, uv and Docker for initial model conversion.

git clone https://github.com/mikhailbovt/stillwatch.git
cd stillwatch
uv sync --frozen --extra inference --extra cloud --group dev
docker build -t stillwatch:0.5.0 .
uv run python tools/fetch_models.py --convert
uv run stillwatch

Open http://127.0.0.1:8765. Select a video, connected camera or RTSP stream. Sources change without reloading the page or models. Run one process per source and data directory.

Startup uses mock assessments (UNKNOWN) and makes no API requests. To enable cloud assessment, create ignored .env.local with OPENAI_API_KEY, then set provider: openai and cloud_spending_enabled: true in your configuration. The account needs access to gpt-6-luna and the Decisions API. Selected masked frames are sent to OpenAI. Setup and deployment.

Processing

ComponentDefault
People and postureYOLO26s Pose · CPU · 5 Hz target
Smoke and flameYOLOv8n Fire/Smoke · 2 Hz target
Event context30 seconds · 64 MiB buffer
Full medical assessment15 observed source seconds and 12 new frames
Recovery evidenceSustained activity or return to an observed seated baseline
Cloud queueOne request in flight · eight waiting

The service retains the beginning and development of an episode. Repeated suspicion does not restart its observation clock. A bounded early screen handles visible immediate danger. Local motion and cloud evidence must agree before medical clearance; lost or ambiguous identity remains uncertain.

Integrate

Releases include server and SDK wheels, source archives, OpenAPI, examples and SHA-256 checksums. The SDK supports Python 3.10+ and has no inference dependency.

pip install ./stillwatch_sdk-0.5.0-py3-none-any.whl
from stillwatch_sdk import Stillwatch

with Stillwatch("http://127.0.0.1:8765") as client:
    for event in client.events(limit=20).events:
        print(event.incident_id, event.analysis_status)

API and embedding · SDK reference · Model setup

Status

Preview for supervised evaluation. Misses and false signals remain possible, especially with distant people, occlusion and crowds. Injury, actual assistance need and deployment alert accuracy are not established. Physical camera and RTSP acceptance depend on the installation. Known limitations.

uv run ruff check .
uv run ruff format --check .
uv run pytest -q

License

Original service and SDK: Apache-2.0. The supplied inference runtime and model candidates have separate AGPL terms. Weights, raw datasets, credentials and event databases are excluded. Demonstration footage retains its own license. Third-party notices.

computer-vision
human-in-the-loop
python
video-analysis