Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5d038b5
Update PWA requirements and add usage section (#20562)
NickM-27 Oct 26, 2025
6fd7f86
Update coral docs / links (#20674)
NickM-27 Oct 26, 2025
17d2bc2
Update recommended hardware to list more models (#20777)
NickM-27 Nov 4, 2025
5cf2ae0
docs: remove webrtc not support H.265 tips (#20769)
ZhaiSoul Nov 5, 2025
3620ef2
Update hailo installation instructions (#20847)
NickM-27 Nov 8, 2025
9589c5f
Fix rf-detr heading (#20963)
hawkeye217 Nov 19, 2025
914ff4f
add comment about unifi g5 and newer cams (#21003)
h-leth Nov 22, 2025
592c245
Fixes (#21061)
hawkeye217 Nov 26, 2025
9f95a5f
version bump in docs (#21111)
hawkeye217 Dec 1, 2025
a43d294
Add Axis Q-6155E camera configuration details (#21105)
munit85 Dec 1, 2025
e47e82f
Pin onnx in rfdetr model generation command (#21127)
hawkeye217 Dec 2, 2025
7167cf5
pin cryptography version to fix vapid issues (#21126)
hawkeye217 Dec 2, 2025
9034454
Fix jetson build (#21173)
NickM-27 Dec 6, 2025
c3f5963
docs: fix the missing quotes in the Reolink example within the docume…
ZhaiSoul Dec 7, 2025
1de7519
Update camera_specific.md for Wyze Cameras (Thingino) (#21221)
User873902 Dec 10, 2025
0a293ae
docs: update OpenVINO D-FINE configuration default device (#21231)
ZhaiSoul Dec 11, 2025
1d5c246
Update HIKVISION camera link in hardware documentation (#21256)
NickM-27 Dec 12, 2025
e0d6365
Miscellaneous Fixes (0.17 beta) (#21474)
hawkeye217 Dec 31, 2025
15c223d
Merge remote-tracking branch 'origin/master' into dev
blakeblackshear Dec 31, 2025
b5d2f86
Refactor hardware acceleration docs (#21488)
NickM-27 Dec 31, 2025
d1f28eb
llc to inc and 2025 to 2026 (#21484)
blakeblackshear Jan 1, 2026
047ae19
Miscellaneous fixes (0.17 Beta) (#21489)
NickM-27 Jan 4, 2026
c8f55ac
Restrict go2rtc exec sources by default (#21543)
NickM-27 Jan 6, 2026
99d48ec
docs: fix alt text and capitalization in documentation (#21551)
saibharath48 Jan 7, 2026
74d14cb
Miscellaneous Fixes (0.17 beta) (#21558)
hawkeye217 Jan 7, 2026
f3543cf
I18N Miscellaneous Fixes (#21573)
ZhaiSoul Jan 8, 2026
c08fa15
Miscellaneous Fixes (0.17 beta) (#21575)
hawkeye217 Jan 9, 2026
93016c6
add synaptics to release (#21591)
blakeblackshear Jan 10, 2026
d952a97
reduce gif size for docs assets changes (#21594)
hawkeye217 Jan 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ jobs:
STABLE_TAG=${BASE}:stable
PULL_TAG=${BASE}:${BUILD_TAG}
docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG} docker://${VERSION_TAG}
for variant in standard-arm64 tensorrt tensorrt-jp6 rk rocm; do
for variant in standard-arm64 tensorrt tensorrt-jp6 rk rocm synaptics; do
docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG}-${variant} docker://${VERSION_TAG}-${variant}
done

# stable tag
if [[ "${BUILD_TYPE}" == "stable" ]]; then
docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG} docker://${STABLE_TAG}
for variant in standard-arm64 tensorrt tensorrt-jp6 rk rocm; do
for variant in standard-arm64 tensorrt tensorrt-jp6 rk rocm synaptics; do
docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG}-${variant} docker://${STABLE_TAG}-${variant}
done
fi
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License

Copyright (c) 2025 Frigate LLC (Frigate™)
Copyright (c) 2026 Frigate, Inc. (Frigate™)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ If you would like to make a donation to support development, please use [Github
This project is licensed under the **MIT License**.

- **Code:** The source code, configuration files, and documentation in this repository are available under the [MIT License](LICENSE). You are free to use, modify, and distribute the code as long as you include the original copyright notice.
- **Trademarks:** The "Frigate" name, the "Frigate NVR" brand, and the Frigate logo are **trademarks of Frigate LLC** and are **not** covered by the MIT License.
- **Trademarks:** The "Frigate" name, the "Frigate NVR" brand, and the Frigate logo are **trademarks of Frigate, Inc.** and are **not** covered by the MIT License.

Please see our [Trademark Policy](TRADEMARK.md) for details on acceptable use of our brand assets.

Expand All @@ -67,7 +67,7 @@ Please see our [Trademark Policy](TRADEMARK.md) for details on acceptable use of
### Built-in mask and zone editor

<div>
<img width="800" alt="Multi-camera scrubbing" src="https://github.com/blakeblackshear/frigate/assets/569905/d7885fc3-bfe6-452f-b7d0-d957cb3e31f5">
<img width="800" alt="Built-in mask and zone editor" src="https://github.com/blakeblackshear/frigate/assets/569905/d7885fc3-bfe6-452f-b7d0-d957cb3e31f5">
</div>

## Translations
Expand All @@ -80,4 +80,4 @@ We use [Weblate](https://hosted.weblate.org/projects/frigate-nvr/) to support la

---

**Copyright © 2025 Frigate LLC.**
**Copyright © 2026 Frigate, Inc.**
4 changes: 2 additions & 2 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@

**代码部分**:本代码库中的源代码、配置文件和文档均遵循 [MIT 许可证](LICENSE)。您可以自由使用、修改和分发这些代码,但必须保留原始版权声明。

**商标部分**:“Frigate”名称、“Frigate NVR”品牌以及 Frigate 的 Logo 为 **Frigate LLC 的商标**,**不在** MIT 许可证覆盖范围内。
**商标部分**:“Frigate”名称、“Frigate NVR”品牌以及 Frigate 的 Logo 为 **Frigate, Inc. 的商标**,**不在** MIT 许可证覆盖范围内。
有关品牌资产的规范使用详情,请参阅我们的[《商标政策》](TRADEMARK.md)。

## 截图
Expand Down Expand Up @@ -87,4 +87,4 @@ Bilibili:https://space.bilibili.com/3546894915602564

---

**Copyright © 2025 Frigate LLC.**
**Copyright © 2026 Frigate, Inc.**
8 changes: 4 additions & 4 deletions TRADEMARK.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ This document outlines the policy regarding the use of the trademarks associated

## 1. Our Trademarks

The following terms and visual assets are trademarks (the "Marks") of **Frigate LLC**:
The following terms and visual assets are trademarks (the "Marks") of **Frigate, Inc.**:

- **Frigate™**
- **Frigate NVR™**
- **Frigate+™**
- **The Frigate Logo**

**Note on Common Law Rights:**
Frigate LLC asserts all common law rights in these Marks. The absence of a federal registration symbol (®) does not constitute a waiver of our intellectual property rights.
Frigate, Inc. asserts all common law rights in these Marks. The absence of a federal registration symbol (®) does not constitute a waiver of our intellectual property rights.

## 2. Interaction with the MIT License

Expand All @@ -25,7 +25,7 @@ The software in this repository is licensed under the [MIT License](LICENSE).
- The **Code** is free to use, modify, and distribute under the MIT terms.
- The **Brand (Trademarks)** is **NOT** licensed under MIT.

You may not use the Marks in any way that is not explicitly permitted by this policy or by written agreement with Frigate LLC.
You may not use the Marks in any way that is not explicitly permitted by this policy or by written agreement with Frigate, Inc.

## 3. Acceptable Use

Expand All @@ -40,7 +40,7 @@ You may use the Marks without prior written permission in the following specific
You may **NOT** use the Marks in the following ways:

- **Commercial Products:** You may not use "Frigate" in the name of a commercial product, service, or app (e.g., selling an app named _"Frigate Viewer"_ is prohibited).
- **Implying Affiliation:** You may not use the Marks in a way that suggests your project is official, sponsored by, or endorsed by Frigate LLC.
- **Implying Affiliation:** You may not use the Marks in a way that suggests your project is official, sponsored by, or endorsed by Frigate, Inc.
- **Confusing Forks:** If you fork this repository to create a derivative work, you **must** remove the Frigate logo and rename your project to avoid user confusion. You cannot distribute a modified version of the software under the name "Frigate".
- **Domain Names:** You may not register domain names containing "Frigate" that are likely to confuse users (e.g., `frigate-official-support.com`).

Expand Down
2 changes: 1 addition & 1 deletion docker/main/requirements-wheels.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ onnxruntime == 1.22.*
transformers == 4.45.*
# Generative AI
google-generativeai == 0.8.*
ollama == 0.5.*
ollama == 0.6.*
openai == 1.65.*
# push notifications
py-vapid == 1.9.*
Expand Down
47 changes: 41 additions & 6 deletions docker/main/rootfs/usr/local/go2rtc/create_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@

yaml = YAML()

# Check if arbitrary exec sources are allowed (defaults to False for security)
ALLOW_ARBITRARY_EXEC = os.environ.get(
"GO2RTC_ALLOW_ARBITRARY_EXEC", "false"
).lower() in ("true", "1", "yes")

FRIGATE_ENV_VARS = {k: v for k, v in os.environ.items() if k.startswith("FRIGATE_")}
# read docker secret files as env vars too
if os.path.isdir("/run/secrets"):
Expand Down Expand Up @@ -109,30 +114,60 @@
elif go2rtc_config["ffmpeg"].get("rtsp") is None:
go2rtc_config["ffmpeg"]["rtsp"] = rtsp_args

for name in go2rtc_config.get("streams", {}):

def is_restricted_source(stream_source: str) -> bool:
"""Check if a stream source is restricted (echo, expr, or exec)."""
return stream_source.strip().startswith(("echo:", "expr:", "exec:"))


for name in list(go2rtc_config.get("streams", {})):
stream = go2rtc_config["streams"][name]

if isinstance(stream, str):
try:
go2rtc_config["streams"][name] = go2rtc_config["streams"][name].format(
**FRIGATE_ENV_VARS
)
formatted_stream = stream.format(**FRIGATE_ENV_VARS)
if not ALLOW_ARBITRARY_EXEC and is_restricted_source(formatted_stream):
print(
f"[ERROR] Stream '{name}' uses a restricted source (echo/expr/exec) which is disabled by default for security. "
f"Set GO2RTC_ALLOW_ARBITRARY_EXEC=true to enable arbitrary exec sources."
)
del go2rtc_config["streams"][name]
continue
go2rtc_config["streams"][name] = formatted_stream
except KeyError as e:
print(
"[ERROR] Invalid substitution found, see https://docs.frigate.video/configuration/restream#advanced-restream-configurations for more info."
)
sys.exit(e)

elif isinstance(stream, list):
for i, stream in enumerate(stream):
filtered_streams = []
for i, stream_item in enumerate(stream):
try:
go2rtc_config["streams"][name][i] = stream.format(**FRIGATE_ENV_VARS)
formatted_stream = stream_item.format(**FRIGATE_ENV_VARS)
if not ALLOW_ARBITRARY_EXEC and is_restricted_source(formatted_stream):
print(
f"[ERROR] Stream '{name}' item {i + 1} uses a restricted source (echo/expr/exec) which is disabled by default for security. "
f"Set GO2RTC_ALLOW_ARBITRARY_EXEC=true to enable arbitrary exec sources."
)
continue

filtered_streams.append(formatted_stream)
except KeyError as e:
print(
"[ERROR] Invalid substitution found, see https://docs.frigate.video/configuration/restream#advanced-restream-configurations for more info."
)
sys.exit(e)

if filtered_streams:
go2rtc_config["streams"][name] = filtered_streams
else:
print(
f"[ERROR] Stream '{name}' was removed because all sources were restricted (echo/expr/exec). "
f"Set GO2RTC_ALLOW_ARBITRARY_EXEC=true to enable arbitrary exec sources."
)
del go2rtc_config["streams"][name]

# add birdseye restream stream if enabled
if config.get("birdseye", {}).get("restream", False):
birdseye: dict[str, Any] = config.get("birdseye")
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/configuration/audio_detectors.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ cameras:

### Configuring Minimum Volume

The audio detector uses volume levels in the same way that motion in a camera feed is used for object detection. This means that frigate will not run audio detection unless the audio volume is above the configured level in order to reduce resource usage. Audio levels can vary widely between camera models so it is important to run tests to see what volume levels are. The Debug view in the Frigate UI has an Audio tab for cameras that have the `audio` role assigned where a graph and the current levels are is displayed. The `min_volume` parameter should be set to the minimum the `RMS` level required to run audio detection.
The audio detector uses volume levels in the same way that motion in a camera feed is used for object detection. This means that Frigate will not run audio detection unless the audio volume is above the configured level in order to reduce resource usage. Audio levels can vary widely between camera models so it is important to run tests to see what volume levels are. The Debug view in the Frigate UI has an Audio tab for cameras that have the `audio` role assigned where a graph and the current levels are is displayed. The `min_volume` parameter should be set to the minimum the `RMS` level required to run audio detection.

:::tip

Expand Down
14 changes: 12 additions & 2 deletions docs/docs/configuration/camera_specific.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,10 +188,10 @@ go2rtc:
# example for connectin to a Reolink camera that supports two way talk
your_reolink_camera_twt:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=username&password=password#video=copy#audio=copy#audio=opus"
- "rtsp://username:password@reolink_ip/Preview_01_sub
- "rtsp://username:password@reolink_ip/Preview_01_sub"
your_reolink_camera_twt_sub:
- "ffmpeg:http://reolink_ip/flv?port=1935&app=bcs&stream=channel0_ext.bcs&user=username&password=password"
- "rtsp://username:password@reolink_ip/Preview_01_sub
- "rtsp://username:password@reolink_ip/Preview_01_sub"
# example for connecting to a Reolink NVR
your_reolink_camera_via_nvr:
- "ffmpeg:http://reolink_nvr_ip/flv?port=1935&app=bcs&stream=channel3_main.bcs&user=username&password=password" # channel numbers are 0-15
Expand Down Expand Up @@ -227,6 +227,12 @@ cameras:

### Unifi Protect Cameras

:::note

Unifi G5s cameras and newer need a Unifi Protect server to enable rtsps stream, it's not posible to enable it in standalone mode.

:::

Unifi protect cameras require the rtspx stream to be used with go2rtc.
To utilize a Unifi protect camera, modify the rtsps link to begin with rtspx.
Additionally, remove the "?enableSrtp" from the end of the Unifi link.
Expand All @@ -252,6 +258,10 @@ ffmpeg:

TP-Link VIGI cameras need some adjustments to the main stream settings on the camera itself to avoid issues. The stream needs to be configured as `H264` with `Smart Coding` set to `off`. Without these settings you may have problems when trying to watch recorded footage. For example Firefox will stop playback after a few seconds and show the following error message: `The media playback was aborted due to a corruption problem or because the media used features your browser did not support.`.

### Wyze Wireless Cameras

Some community members have found better performance on Wyze cameras by using an alternative firmware known as [Thingino](https://thingino.com/).

## USB Cameras (aka Webcams)

To use a USB camera (webcam) with Frigate, the recommendation is to use go2rtc's [FFmpeg Device](https://github.com/AlexxIT/go2rtc?tab=readme-ov-file#source-ffmpeg-device) support:
Expand Down
Loading
Loading