package schema #Frigate: { env?: [string]: string config: #FrigateConfig caddy: { server_name: string forward_auth: { url: string path: string | *"/api/verify" } acme: { email: string } } } #FrigateConfig: { ffmpeg?: #FfmpegConfig cameras: [string]: #CameraConfig go2rtc?: #Go2RtcConfig detectors?: [string]: #DetectorConfig birdseye?: #BirdseyeConfig mqtt: #MqttConfig } #FfmpegConfig: { hwaccel_args?: string } #CameraConfig: { detect?: { height: int width: int } ffmpeg: { inputs: [...#FfmpegInput] } objects?: { track: [...string] filters?: [string]: #ObjectFilter } record?: #RecordConfig rtmp?: { enabled?: bool } snapshots?: #SnapshotsConfig zones?: [string]: #ZoneConfig motion?: { mask: [...string] } } #FfmpegInput: { path: string input_args?: string roles: [...string] } #ObjectFilter: { threshold?: float } #RecordConfig: { enabled?: bool retain?: { days: int mode?: #RetainMode } events: { pre_capture?: int post_capture?: int objects?: [...string] required_zones?: [...string] retain?: { default?: int mode?: #RetainMode objects?: [string]: int } } } #SnapshotsConfig: { enabled?: bool required_zones?: [...string] retain?: { default?: int objects?: [string]: int } } #RetainMode: "all" | "motion" | "active_objects" #ZoneConfig: { coordinates: string inertia?: int objects?: [...string] filters?: [string]: { min_area?: int maax_area?: int threshold?: float } } #Go2RtcConfig: { streams: [string]: [...string] } #DetectorConfig: #CpuDetector | #EdgeTpuDetector #CpuDetector: { type: "cpu" num_threads?: int } #EdgeTpuDetector: { type: "edgetpu" device: string } #BirdseyeConfig: { enabled?: bool restream?: bool width?: int height?: int quality?: int mode?: "objects" | "motion" | "continuous" inactivity_threshold?: int layout?: { scaling_factor?: float max_cameras?: int } } #MqttConfig: { host: string password?: string port?: int tls_ca_certs?: string user?: string }