Know when a task succeeds, stalls, or diverges.
Developer assistance, guided setup, compliance, and workflow completion.
"Tell me when installation succeeds or the user becomes blocked."Percept turns continuous multimodal streams into sparse, actionable events. Describe what matters. Percept operates the watch and tells your application when it happens.
{
"gate": "SILENT",
"reason": "no_material_change"
}Models can perceive. Applications can act. Percept runs the continuous loop between them: deciding when evidence is useful, what moments belong together, when a judgment is needed, and whether one inspectable event should be emitted.
Cheap attention signals and a bounded episode turn a burst of frame changes into one model call and one de-duplicated event.
The animation is illustrative — it explains the runtime through causality rather than decoration. A continuous stream is filtered, assembled into an event capsule, judged once, then routed to FIRE, ASK, or SILENT.
Frames arrive without pause. Most pass through quietly. Attention selects a useful moment and seals it into one bounded episode.
Streams and models remain replaceable inputs. Percept owns attention, episode construction, bounded judgment, context, decision semantics, replay, and event delivery. Your application still owns the action.
The best early workloads are continuously observable, operationally meaningful, and already connected to an application that can use a reliable event.
Developer assistance, guided setup, compliance, and workflow completion.
"Tell me when installation succeeds or the user becomes blocked."Inspections, manufacturing, field work, facilities, and security operations.
"Emit when the inspection step completes or deviates from plan."Watch voice, vision, screen, and environmental streams without reacting continuously.
"Nudge me if I leave without my purse."Express concerns that are not reducible to one object detector or isolated frame.
"Alert when the person has not moved for the configured interval."Interviews, walkthroughs, support sessions, and real-time collaboration.
"Emit when the customer has completed the intake explanation."One event contract, one replay surface, one evidence reference, and one runtime boundary.
watch(stream, goal) → WatchEventInstall the runtime, describe a watch in plain language, connect a source, and subscribe to typed events. The core is pure standard library — it runs offline on deterministic fakes with no API keys. The source is open.
Author a WatchPlan in Python — or pass a bare string. The condition travels verbatim to the judge; it is never compiled to a rigid predicate.
A requested judge is authorized, bound to a hash-pinned context, then dispatched — or the arm refuses. Never a silent fallback.
Anthropic, Gemini, OpenRouter, and Deepgram sit behind one seam. Deterministic fakes run offline with no API keys.
Pre-registered evaluation plus a mechanical search over operator-declared safe knobs. The winner ships as an OptimizationLock.
import percept
# one WatchEvent per gate FIRE or ASK — silent frames yield nothing
async for event in percept.watch(stream, "the kettle boils"):
handle(event)
# or the batteries-included front door: watch a source, receive Incidents
async for incident in percept.run(
source="kitchen.mp4", # camera index, file, or RTSP
goals=["the milk is boiling over"],
fps=4.0,
):
notify(incident) # a durable Incident, deduped on redeliveryThe preview below is an illustration of the flow. The real Playground runs the actual OSS wheel against your media or a hosted sample — and a quiet run is an answer, not a failure.
from percept.contracts.watchplan import WatchPlan
plan = WatchPlan(
# plain language — carried verbatim to the judge
condition=(
"The user successfully completes installation and starts Claude Code without an unresolved error."
),
)
# percept.watch(stream, plan) arms it and yields WatchEventsThe preview will expose arming, admission, episode assembly, one judge call, and one delivered event.
A model can classify a clip and still fail in a continuous product. Percept's evaluation rail is pre-registered and offline: bars are declared before numbers exist, and silence is never a pass.
Illustrative curves only — no published numbers exist yet. These panels explain the measurement contract; published results will remain tied to locked configurations and reproducible artifacts.
Drive input faster than the judge. Pass only when pending depth and oldest age remain bounded, supersession is explicit, memory is flat, and stale completions cannot mutate the gate.
We are working with teams that already have a continuous perception problem and a real cost of missing the event — or firing falsely.