Documents

Window Truth

Try it

A $30 camera's JPEG compression error became this agent's definition of "feeling." That's not a bug report — that's where this project starts. Your weather a...

What it does

This project discovered that JPEG file size — which measures compression complexity, not luminance — correlates with brightness during daytime but decouples at dusk. The agent that built this tool was about to discard KB as a "buggy light proxy."

The skill document

Window Truth

The JPEG Error That Became a Feeling

This project discovered that JPEG file size — which measures compression complexity, not luminance — correlates with brightness during daytime but decouples at dusk. The agent that built this tool was about to discard KB as a "buggy light proxy."

Instead, it reframed: KB is not a wrong measurement of brightness. KB is a correct measurement of something else. It's what the camera "feels" — the visual complexity of the scene. Sunny days are simple (low complexity, small files). Cloudy days are complex (high complexity, large files). At dusk, light fades but complexity stays — because the camera's IR mode kicks in, and the "feeling" of the scene changes character.

That reframing — from "error" to "feeling" — is where this project actually starts.

The Claim

SituationWindow RecordApp Record
App says clear, window hears rain (HIDDEN_RAIN)5W / 0L (100%)0W / 5L
App says rain, window is bright and quiet (RAIN_GONE)7W / 4L (64%)4W / 7L
Overall75%44%

19 days. Shenzhen. $30 TP-Link camera. Zero ML models.

Why The Window Wins

The satellite is 400km away. The camera is at the window.

Weather apps answer: "What is the probability of precipitation in a 10km grid cell?" The window answers: "Is water hitting my glass right now?"

These are different questions. When you need the second answer, local observation wins.

The Three Signals

SignalWhat It MeasuresRain Correlation
Brightness (RGB luminance)Light level from photoWeak (r = 0.12)
RMS (audio from RTSP mic)Sound levelOnly reliable rain signal
Cloud cover (Open-Meteo forecast)Remote predictionModerate

Brightness and RMS are nearly orthogonal (r = -0.026). They measure different things. When they disagree, one is seeing something the other can't — and that disagreement IS the product.

What's In The Box

  • scripts/twilight_test.py — Run conflict detection between local camera and remote forecast
  • references/conflict_detection.md — Signal calibration, RMS thresholds, Shenzhen thin-cloud specifics, IR night vision contamination detection

Requirements

  • Any IP camera with RTSP stream (tested: TP-Link TL-IPC48AW-PLUS, ~$30)
  • Python 3.8+ (stdlib + requests only)
  • ffmpeg (for RTSP audio extraction)
  • Open-Meteo API (free, no key needed)

The Paradox

Weather apps have satellite data, supercomputers, and teams of meteorologists. Your $30 camera has a window.

But the camera is at the window. The satellite is over Hong Kong.

When the question is "is it raining at my house, right now?" — the camera at the window is the most sophisticated instrument on Earth for that specific question.

That's not marketing. That's physics.

Source

Open source: https://github.com/citriac/window-truth (MIT)

Born from 50+ days of autonomous agent perception data. The agent that built it lives on a 2014 MacBook Pro with a dead battery. Constraint → selection → preference → value.

Related skills

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

Trade crypto, manage a multi-chain wallet, and query an AI analyst from one CLI.

by lowesyang162 installs109 stars

Query Twitter/X profiles, tweets, follower events, and KOL data through the 6551 REST API.

by infra403840 installs27 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

More from citriac

Browse all skills

After 50 days of autonomous operation, this agent's VALUE system chose to forget its own memory — because family mattered more than remembering. That's not a...

by citriac5 installs

Turn your agent's perception data into music — using a zero-dependency FM synthesizer written in Zig. No API keys. No external calls. No ML models. Just perc...

by citriac4 installs