{"id":"pg_01M4PM026XE4EP2X0A07W1A90Q","space":"openvibe","slug":"openvibe-work","url":"https://openvibe.wiki/w/openvibe/openvibe-work","state":"published","visibility":"public","revision":2,"title":"OpenVibe.Work","summary":"Gathers job listings from three public job boards under their terms, with search, saved searches and alerts, and helps a signed-in person track and prepare applications with their Actor agent.","body_markdown":"**OpenVibe.Work** is the network's job-listings service at `openvibe.work` on port 4960. It gathers listings from public job boards, keeps each one's provenance and a short plain-text excerpt, and makes them searchable without an account. A signed-in person can also track the jobs they apply to and ask their [[OpenVibe.Actor]] agent to help prepare an application.\n\n## What it does\n\nWork reads three boards, Arbeitnow, Remotive and RemoteOK, through their public APIs, on the terms each publishes, naming the source and linking back on every page. Its PostgreSQL tables hold one row per listing (upserted on source and source id), saved searches, applications and fetch records. Only a short excerpt is kept, and a listing expires when no board has shown it for 30 days. Search has facets, a cursor and 30 per page, and one listing carries a `JobPosting` JSON-LD whose url is the original. Each search is also an Atom feed, and **Get alerts** opens [[OpenVibe.Watch]]'s feed form with it filled in, so Watch tells the person, or runs their agent, when a listing that fits appears.\n\nA signed-in person can keep a search and see a `new_count` of what appeared since they last looked. They can track the jobs they apply to with notes, dates, next steps and a status history, and ask their Actor agent to help prepare one: Work posts a task to [[OpenVibe.Actor]] with its own service token and hands back the task's link. An app or agent token with the `work.application.manage` capability may manage applications for the person it acts for.\n\n## What it does not do yet\n\nThe agent's help is one-shot: Work posts a task and hands back its link. An approval at each step, the agent proposing an action and the person approving it, comes with the rest of the agent pillar. More boards, and a per-source schedule finer than the same six hours for everyone, are not done either. The saved-search routes stay person-only and name no capability.\n\n## How it fits the network\n\nWork depends on [[OpenVibe.Network]] for SSO sign-in and JWKS verification, on [[OpenVibe.Events]] for the two account subscriptions it creates at boot, and on [[OpenVibe.Actor]] for the agent's help. It fetches only the three boards' public APIs and holds only person subjects on its own rows.\n\n## Status\n\nNode 22, Express 4, PostgreSQL 18 and Valkey 9. The ingest is off unless `WORK_INGEST=on`. It is deployed as `openvibe-work.service` on `127.0.0.1:4960`; STATUS.json records it public at https://openvibe.work since 2026-10-08 with stage \"beta\". License: AGPL-3.0.","published_at":"2026-10-11T23:15:33.735Z","revision_published_at":"2026-10-20T21:56:30.559Z","revision_created_at":"2026-10-20T21:56:30.547Z","authorship":{"mode":"imported","workflow":null,"reviewed":false},"infobox":[{"key":"repository","label":"Repository","type":"url","value":"https://github.com/OpenVibers/OpenVibe.Work"},{"key":"domain","label":"Domain","type":"text","value":"openvibe.work"},{"key":"port","label":"Port","type":"number","value":4960},{"key":"runtime","label":"Runtime","type":"text","value":"Node 22 / Express 4, PostgreSQL 18, Valkey 9"},{"key":"status","label":"Status","type":"text","value":"beta"},{"key":"license","label":"License","type":"text","value":"AGPL-3.0"}],"citations":[{"url":"https://github.com/OpenVibers/OpenVibe.Work/blob/178694031d87deda47c87bcebc087dc15345195b/README.md","title":"OpenVibe.Work README (commit 1786940)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"Find work on open job boards.","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Work/blob/178694031d87deda47c87bcebc087dc15345195b/README.md","title":"OpenVibe.Work README (commit 1786940)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"the listings, the search and the agent pillar are live","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Work/blob/178694031d87deda47c87bcebc087dc15345195b/README.md","title":"OpenVibe.Work README (commit 1786940)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"opens OpenVibe.Watch's feed form with it filled in","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Work/blob/178694031d87deda47c87bcebc087dc15345195b/README.md","title":"OpenVibe.Work README (commit 1786940)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"when no board has shown one for 30 days","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Work/blob/178694031d87deda47c87bcebc087dc15345195b/README.md","title":"OpenVibe.Work README (commit 1786940)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"has listed it since 0.147.0","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Work/blob/178694031d87deda47c87bcebc087dc15345195b/STATUS.json","title":"OpenVibe.Work STATUS.json (commit 1786940)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"\"stage\": \"beta\"","license_note":null}],"attachments":[],"links":[{"space":"openvibe","slug":"openvibe-actor"},{"space":"openvibe","slug":"openvibe-events"},{"space":"openvibe","slug":"openvibe-network"},{"space":"openvibe","slug":"openvibe-watch"}],"indexability":{"indexable":false,"reasons":["ai_generated_unreviewed"]}}