Skip to main content
Flags and arguments below are the contract as the binary states it. The global flags (--json, --timeout, …) apply here too and are documented on Global flags. Error codes are a workspace-global contract, not a per-command one — the taxonomy, and how to read a code that is not in it, is on The error envelope.

octolens feeds create

Create a feed from a filter (flags, —filter-json, or —ai) Flags Examples
Returns With --json, stdout carries one JSON document with these fields. Backed by the v2 API operation POST /api/v2/feeds. Without --json: A terminal renders the created feed’s definition, id included.
Exit codes0 OK · 1 UNEXPECTED · 2 USAGE · 8 CANCELLED. The full map is on Exit codes.

octolens feeds get

Get a single feed by id (pretty-prints its filter) Arguments Examples
Returns With --json, stdout carries one JSON document with these fields. Backed by the v2 API operation GET /api/v2/feeds/{id}. Without --json: A terminal renders the feed’s definition: filters, destinations and metadata.
Exit codes0 OK · 1 UNEXPECTED · 2 USAGE. The full map is on Exit codes.

octolens feeds list

List your saved feeds Flags Examples
Returns With --json, stdout carries one JSON document with these fields. Backed by the v2 API operation GET /api/v2/feeds. Without --json: A terminal renders the feed list with a filter summary per feed; piped stdout emits one tab-delimited record per feed.
Exit codes0 OK · 1 UNEXPECTED · 2 USAGE. The full map is on Exit codes.

octolens feeds rm

Delete a feed by id Arguments Flags Examples
Returns With --json, stdout carries one JSON document with these fields. Backed by the v2 API operation DELETE /api/v2/feeds/{id}. Without --json: A terminal prints one confirmation line naming the cascade, if any. Example output:
Exit codes0 OK · 1 UNEXPECTED · 2 USAGE · 8 CANCELLED. The full map is on Exit codes.

octolens feeds update

Update a feed’s name, icon, and/or filter Arguments Flags Examples
Returns With --json, stdout carries one JSON document with these fields. Backed by the v2 API operation PATCH /api/v2/feeds/{id}. Without --json: A terminal renders the feed’s definition after the update.
Exit codes0 OK · 1 UNEXPECTED · 2 USAGE · 8 CANCELLED. The full map is on Exit codes.

octolens feeds watch

Live-watch your feed with keyboard triage (polling live view). The first poll emits the CURRENT first page (the ~20 newest existing mentions) as if they had just arrived; every later poll only ever emits mentions NEWER than the newest one already shown. Pass —backlog none for a tail-only stream (no initial burst) when an agent ACTS on each line. —json emits NDJSON: one Mention JSON document per line, forever. If the stream terminates on a fatal error after emitting mentions, the LAST line is a {“type”:“error”,“error”:{…},“emitted”:N,“watermark”:…} record (the same typed error also goes to stderr, with the mapped non-zero exit code); every other line has no type field and is a Mention. Flags Examples
Returns With --json, stdout is an NDJSON STREAM — one complete JSON document per line, each with these fields. Backed by the v2 API operation POST /api/v2/mentions. The stream is NOT homogeneous: a fatal error after at least one emitted record appends ONE terminator record — {"type":"error","error":{"code","message","status"},"emitted":N,"watermark":<newest mention timestamp | null>} — at the position the data stopped, then the process exits with the mapped code and the same error envelope on stderr. A Mention record never carries a type field, so select(.type != "error") cleanly splits data from framing. Transient poll failures are NOT on stdout: in --json mode each becomes one JSON diagnostic line on stderr ({"event":"poll_failed","error":{…},"retryInMs":N}). Without --json: A terminal renders an interactive live stream with a keyboard-triage panel; non-TTY stdout without --json emits the same tab-delimited mention records as mentions list.
Exit codes0 OK · 1 UNEXPECTED · 2 USAGE. The full map is on Exit codes.