Repository navigation
v0.2.0
Obserf finds public conversations where mentioning your project would actually help someone, ranks them, and drafts what to say. It never posts. You read the thread, check the venue's rules, edit the draft, and post it yourself.
It exists for maintainers who have no time to promote what they build. Search turns up hundreds of loosely related pages, and working out which are active, relevant and open to a maintainer's reply takes longer than writing the reply. Obserf turns that reading into a short, ranked inbox with a reason beside every finding. It runs on your machine, on your Claude Code subscription, with no account and no API key.
Get started
You need Bun 1.4+ and Claude Code signed in with a subscription.
bunx @obserf/cli init ~/dev/marketing # create a workspace
cd ~/dev/marketing && bun install
$EDITOR projects/example.ts # describe your project, write real queries
bun run obserf scan --dry-run # discover and gate only: no model calls
bun run obserf scan # let Claude assess what survived
bun run obserf serve # review at http://127.0.0.1:4000Hacker News and GitHub work without credentials. The README covers Reddit, Brave and writing a good profile.
What's new in 0.2
- Two ways to say no. Use
skippedfor a good finding you won't pursue, anddismissedfor one Obserf shouldn't have shown you, with a category saying why (--category, or keys 1–8 in the inbox). Only dismissals count against the ranking, and each category points at what to fix, usually a line innotFor. - Scores stay current. A score is computed from the stored ratings and the thread's age when you read it, so an old thread sinks on its own.
rescoreis gone because nothing needs it. - Look back at a scan.
obserf runsshows what each scan ran, what the gate dropped and what it spent.obserf list --run <n>shows that scan's top 10 as it left them, frozen, next to what you've done with each since. - Judge before you see the reason. In the inbox, hide reasons keeps the model's score and reason off a new finding until you've decided for yourself.
- Better drafts. Drafting reads the thread's current text first: Hacker News items, GitHub issues, pull requests, repository READMEs, and other pages as plain text. It refuses a thread that is deleted or locked, and it says when it had to fall back to the stored excerpt.
- A smoother inbox. It picks up an edited profile without a restart, u undoes the last status change, and after a it asks where you posted.
- Stricter by default. Each command rejects flags that belong to another command. The web API validates what the CLI validates, and an error never exposes source code or file paths.
Upgrading from 0.1
bun add @obserf/cli@0.2.0Stop obserf serve and any running scan first. On the next command, Obserf backs up the database and then applies two migrations; the output says where the backup went.
In 0.1, dismissed meant both "not for me" and "shouldn't have been shown". Run bun run obserf list --status dismissed and change any finding that was really the first kind with bun run obserf triage <id> skipped, so it doesn't count against the ranking.
Supply chain
This is the first release published through npm trusted publishing. CI builds it from the tagged commit and staged it with provenance, and a maintainer approved it with 2FA. No npm token exists to leak. See SECURITY.md to report a vulnerability privately.
Full changelog: v0.1.0...v0.2.0