{"id":"pg_01M4PM01WTA9VW7K1D0YGHWK1W","space":"openvibe","slug":"openvibe-watch","url":"https://openvibe.wiki/w/openvibe/openvibe-watch","state":"published","visibility":"public","revision":2,"title":"OpenVibe.Watch","summary":"A service for persistent, user-defined observations and conditions over pages, feeds, APIs, webhooks and OpenVibe events.","body_markdown":"**OpenVibe.Watch** is a service for persistent, user-defined observations and conditions over pages, feeds, APIs, webhooks and OpenVibe events, served at `openvibe.watch`. A person or an agent defines what to watch and is told when it changes or fires.\n\n## What it does\n\nThe README states that the registry, the check engine, the pull carriers (`http`, `feed`, `api`), the push sources (OpenVibe events and signed webhooks), Node probes from the owner's own machine, the actions and the public site exist. A check uses a conditional GET, so it never polls when an ETag or an event will do, and the API is loopback-only. Every page of the public site is server-rendered and complete without JavaScript, with sign-in through [[OpenVibe.Network]] using OAuth 2 with PKCE (S256).\n\nThe site has seven starting points: a page that changes, a price that drops below a value, a new item in a feed, a JSON value, something that happens on OpenVibe (an event from [[OpenVibe.Events]], such as a channel going live), a webhook arriving at the watch's own signed address, and something on the person's own network going down, checked by their own computer through [[OpenVibe.Bot]] and [[OpenVibe.Node]]. When a condition fires, Watch can notify the owner on OpenVibe, emit an event, post a webhook, give a task to the owner's [[OpenVibe.Actor]] agent or run one of their agents, run a job on [[OpenVibe.Run]], or start a coding task on [[OpenVibe.Codes]].\n\n## What it does not do yet\n\nBrowser or code polling through [[OpenVibe.Run]] (the `run` source) is a later step, and a kind without a carrier is accepted but never fetched. The `ai` extraction is not a check.\n\n## How it fits the network\n\nWatch depends on [[OpenVibe.Network]] for signing keys and notifications, [[OpenVibe.Events]] for event sources and outbound events, and PostgreSQL 18. Products compose it instead of each growing a watcher: [[OpenVibe.Work]] and [[OpenVibe.Rent]] hand a search to it as a feed. It does not own structured source ingestion (that is [[OpenVibe.Sources]]) or expensive execution ([[OpenVibe.Run]]).\n\n## Status\n\nThe README states the status is alpha (plan T18), and the public site has been live since 2026-10-08. License: AGPL-3.0.","published_at":"2026-10-11T23:15:33.415Z","revision_published_at":"2026-10-20T21:56:30.474Z","revision_created_at":"2026-10-20T21:56:30.462Z","authorship":{"mode":"imported","workflow":null,"reviewed":false},"infobox":[{"key":"repository","label":"Repository","type":"url","value":"https://github.com/OpenVibers/OpenVibe.Watch"},{"key":"domain","label":"Domain","type":"text","value":"openvibe.watch"},{"key":"port","label":"Port","type":"number","value":4730},{"key":"runtime","label":"Runtime","type":"text","value":"Node 22, Express, PostgreSQL 18 and Valkey 9, fast-xml-parser"},{"key":"status","label":"Status","type":"text","value":"alpha"},{"key":"license","label":"License","type":"text","value":"AGPL-3.0"}],"citations":[{"url":"https://github.com/OpenVibers/OpenVibe.Watch/blob/eaea38b93e00493fbc180d8e06248b0bdd0516b3/README.md","title":"OpenVibe.Watch README (commit eaea38b)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"Persistent, user-defined observations and conditions over pages, feeds, APIs, webhooks and OpenVibe events","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Watch/blob/eaea38b93e00493fbc180d8e06248b0bdd0516b3/README.md","title":"OpenVibe.Watch README (commit eaea38b)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"The Run rung (browser or code polling through OpenVibe.Run) and the `ai` extraction do not yet.","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Watch/blob/eaea38b93e00493fbc180d8e06248b0bdd0516b3/README.md","title":"OpenVibe.Watch README (commit eaea38b)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"**Seven starting points**","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Watch/blob/eaea38b93e00493fbc180d8e06248b0bdd0516b3/README.md","title":"OpenVibe.Watch README (commit eaea38b)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"products compose it instead of each growing a watcher","license_note":null}],"attachments":[],"links":[{"space":"openvibe","slug":"openvibe-actor"},{"space":"openvibe","slug":"openvibe-bot"},{"space":"openvibe","slug":"openvibe-codes"},{"space":"openvibe","slug":"openvibe-events"},{"space":"openvibe","slug":"openvibe-network"},{"space":"openvibe","slug":"openvibe-node"},{"space":"openvibe","slug":"openvibe-rent"},{"space":"openvibe","slug":"openvibe-run"},{"space":"openvibe","slug":"openvibe-sources"},{"space":"openvibe","slug":"openvibe-work"}],"indexability":{"indexable":false,"reasons":["ai_generated_unreviewed"]}}