Crow's Nest

Crow's Nest

A lookout over shipping industry press, maritime/Indian Ocean literature, and general current affairs — ranked by what's actually moving right now.

Signed in:
0 literature 0 industry press 0 general news
Open Direct login Indirect (portal) IP restricted (library/university network) No access Not set — hover a dot, or open ⚙ Settings → Sources

Signal strength

Sources tracked in this page's Ingestion setup (⚙ Settings) — kind, area, and Upstream (Readwise or AgentMail) per source. Clusters here are drawn from each item's own tag — nothing is hardcoded, so a new event (a tariff move, a canal closure, a new regulation) forms its own cluster the moment items carry that tag. Access dots reflect your own access to each source (Open / Direct login / Indirect via portal / No access) — set them in "⚙ Settings → Sources"; saved to the shared database.

Settings

Four things, in one place: how sources flow in, the credentials each ingestion channel needs (Readwise and AgentMail), and — on one combined Sources tab — how the system classifies each source alongside how you read it.

STAGE 1 · YOU, ONCE PER SOURCE STAGE 2 · THE SYSTEM, EVERY POLL You RSS feed subscribes feed URL Readwise Reader Feed section polls source ~every 5 min GET /api/v3/list/ category=rss · cursor newsletter (no RSS) forwards to inbox AgentMail inbox your inbox address polled by the ingestion job reads new messages Ingestion job this project's pipeline runs on a fixed schedule writes new items Crow's Nest raw intake store
Two parallel intake paths, chosen per source by its Upstream setting (Sources tab). Readwise (top): you subscribe the feed once inside the Feed section of Readwise Reader, which takes the blocking/rate-limit risk of polling it, not this pipeline. AgentMail (bottom): for newsletters with no RSS feed at all, you point or forward the subscription at the inbox address configured for this deployment instead. Everything to the right of the dashed line then runs unattended, on a Cloudflare cron schedule: the ingestion job pages through Reader's list endpoint and the AgentMail inbox, and writes whatever's new into Crow's Nest.

Source Type drives the dashboard directly: it decides which of the Literature / Industry Press / General News toggle buttons a source's items fall under. Upstream is which channel a source's items actually arrive through — Readwise (RSS/newsletter subscribed in Reader) or AgentMail (a newsletter with no RSS feed, routed to the shared inbox). RSS feed URLs themselves aren't managed here — add or edit those directly inside Readwise. Last Fetched is when new items were last actually pulled in from this source's Upstream (not merely when the job last checked it) — set automatically by the ingestion job, read-only here; it reads "Never" until that job finds something. Upstream Status Check is yours: click it after you've verified the source directly in Readwise or AgentMail. It cycles Not checked → All OK → Not working and remembers when. My Access is separate again — how you personally read the source, not how the system ingests it: Open (free for anyone), Direct (you're logged in, the article link opens full text as-is), Indirect (via a separate portal or membership), IP restricted (works with no login at all, but only on a specific network), or No access. Remove is a real delete: the row drops out entirely.

All OK Not checked Not working
SourceSource TypeAreaUpstreamLast FetchedUpstream Status CheckMy AccessNotePortal URL

Stored as a Cloudflare Worker secret (READWISE_TOKEN), not in this page — it never flows through a browser-editable database. Set or rotate it from the command line with wrangler secret put READWISE_TOKEN. Generate one at readwise.io/access_token.

Not yet run.

Stored as Cloudflare Worker secrets (AGENTMAIL_API_KEY, AGENTMAIL_INBOX_ADDRESS), not in this page. Set or rotate them with wrangler secret put AGENTMAIL_API_KEY / AGENTMAIL_INBOX_ADDRESS. Point or forward newsletters with no RSS feed at the configured inbox address, then set that source's Upstream to AgentMail on the Sources tab.

Not yet run.