All

42 unread

Notes

press n to add · esc to close · cmd/ctrl + enter to save

The DMZ

shared · unencrypted · everyone

The Vault

files · any type · your storage

No files yet. Drop something in.

Settings

storage adapter · cloud sync

Active adapter: Local (browser only)

Storage adapter

The private reader writes its event log to this storage. The DMZ board uses the same adapter with a sibling path (coda/dmz). Cross-device DMZ requires a separate DMZ adapter, queued as a follow-up. Encryption (AES-256-GCM, Argon2id KDF) is not in this release — see ROADMAP §5 and PR #7.

DMZ shared board

The DMZ (§15) is the unencrypted, free-for-everyone board. When the site is deployed with the DMZ backend, every device that opens the page joins the same board automatically. There is nothing to set up per device.

Anyone with the page URL can read, post, and edit their own notes with no setup. The fields below are optional: set a base URL only if the DMZ backend runs on a different origin than this page, and paste an owner token only if you need to edit or remove anyone's note. Server-side moderation rejects clearly-NSFW content before it lands in the log.

Add a feed by URL

Paste any site URL. CODA resolves documented patterns (YouTube channel / playlist, Reddit subreddit, Mastodon profile, GitHub releases) directly; for everything else it asks the §4 Worker’s /discover endpoint to scan the page for <link rel="alternate"> tags and probe common feed paths.

Facebook, Instagram, X (Twitter), and TikTok do not publish public RSS feeds in 2026. CODA refuses those URLs with an explanation; if you run an RSSHub bridge of your own, configure its base URL below and CODA will suggest candidate bridge routes. CODA will never silently route your URLs through a public bridge instance.

RSSHub bridge URL (optional)

If you operate an RSSHub instance (self-hosted or rented), enter its base URL here. CODA will use it to suggest candidate routes when you paste a Facebook, Instagram, X, or TikTok URL. Leave blank to disable bridge suggestions entirely.

Import subscriptions (OPML)

Drop an OPML 2.0 file from Inoreader, Feedly, NetNewsWire, Reeder, or any other reader. The parsed feed list appears below; uncheck anything dormant or unwanted before committing.

Automated dormancy detection (the “17 of your 89 feeds haven’t published in 2+ years” signal) needs per-feed last-publish metadata from the §4 Worker. Until that lands, triage is manual — every feed visible, every feed togglable.

Export current subscriptions

Downloads coda-subscriptions.opml with whatever’s currently stored at coda/subs/subscriptions.json on the active adapter.

Import starred items

Bring your starred archive from Inoreader (or any Google Reader-compatible export) into the active adapter’s event log. One item.star event is written per article; the article URL is the match key.

Export from Inoreader → PreferencesReading list export and pick the JSON option (Google Reader shape). Re-importing the same file is idempotent — already-starred items are skipped. Articles whose feed uses an opaque GUID instead of the article URL land as orphan stars until the next Worker tick re-introduces them.

Your subscriptions

Every feed CODA knows about. Tap the “…” button (or long-press the row on touch) to rename, move to a different shelf, or unsubscribe.

    No subscriptions yet. Drop an OPML above or paste a URL.

    Failover & resilience

    CODA can mirror every write to a second backend, so the reader keeps working offline and a single dead provider can’t take your state down.

    When on, every star/note/read is written to both your cloud adapter and the browser’s local storage. Reads prefer the cloud and fall back to local if it is unreachable. Network drops, rate limits, and 5xx errors trip a per-adapter circuit breaker that recovers automatically.

    Optional intelligence surfaces

    Off by default. CODA ships no credentials for any AI, OCR, TTS, or translation provider. When you turn this on, future PRs will surface buttons for summarisation (BYO LLM key), on-device OCR and transcription, read-aloud TTS, and translation against a self-hosted LibreTranslate endpoint. Article text only leaves your device when you press a button, and the first remote request per session shows a one-line confirmation naming the destination.