{"version":1,"generatedAt":"2026-10-31T14:34:23.456Z","plugins":[{"id":"gloomberb-cloud","name":"Gloom Cloud","tagline":"Account, chat, Ask Gloom and Cloud data.","description":"Free market, macro, and chat services. Chat requires signup.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["data","cloud"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["account-management","askg","buildout","chat","congress-trades","team","thesis-board","unread-inbox"],"capabilities":["asset-data.gloomberb-cloud","cloud.team","cloud.views","news.gloomberb-cloud"],"broker":false,"shortcuts":[{"code":"CHAT","name":"New Chat Pane","description":"Open the floating chat window for a channel"},{"code":"THESIS","name":"Theses","description":"Every thesis you and your teams hold, sorted by what needs a ruling"},{"code":"ACM","name":"Account Management","description":"Edit your Gloom Cloud profile, password, public portfolio sharing, and calendar feed"},{"code":"ASKG","name":"Ask Gloom","description":"Ask a question about your panes and watch the tools Gloom runs"},{"code":"TBO","name":"TheBuildout","description":"Open TheBuildout infrastructure intelligence.","targets":["cli","tui","desktop"]},{"code":"CG","name":"Congress Trades","description":"Track newly disclosed House and Senate periodic transaction reports."}]},"tier":"official","bundled":true,"stars":0,"featured":true,"icon":"https://raw.githubusercontent.com/gloom-sh/gloomberb/HEAD/plugin-icons/gloomberb-cloud.webp","highlights":["CHAT","THESIS","ACM"]},{"id":"adjacent-indices","name":"Adjacent","tagline":"Prediction-market indices, reference rates, and CFTC filings from Adjacent","description":"One Adjacent pane, opened with ADJ. Tabs are Indices, Rates, and CFTC. An index opens onto its chart, constituents, related news, and filings. Chart any series from a chart's add series search. Public endpoints need no key. Related index filings and the authenticated catalog need an Adjacent API key. Public CFTC filings cover the last 90 days.","repo":"Lucas-Kohorst/gloomberb-adjacent","author":{"name":"Lucas-Kohorst","github":"Lucas-Kohorst"},"categories":["data"],"targets":["cli","tui","desktop","web"],"hosts":["api.adjacent.markets"],"contributes":{"panes":["adjacent"],"capabilities":["adjacent-indices"],"broker":false},"minGloomberb":"0.13.3","tier":"community","bundled":false,"stars":1,"updatedAt":"2026-10-14T16:19:39Z","readme":"# Adjacent\n\nPrediction-market **indices**, **reference rates**, and **CFTC filings** from [Adjacent](https://adjacent.markets) as one Gloomberb pane and chart series.\n\nListed in the [Gloomberb plugin directory](https://gloom.sh/plugins) via the `gloomberb-plugin` GitHub topic.\n\n## Install\n\n```bash\ngloomberb install Lucas-Kohorst/gloomberb-adjacent\n```\n\nInstalling from the Plugins pane (`PL`) loads it straight away; from the CLI, restart Gloomberb. Enable **Adjacent** if it is not already on.\n\nRequires Gloomberb 0.16.5 or newer.\n\n## What it adds\n\n| Surface | Shortcut | What it is |\n| --- | --- | --- |\n| Adjacent | `ADJ` | One pane. Tabs: Indices, Rates, CFTC |\n| Chart series | `G CAP:adjacent-indices:ADJ:red` | History for any index or rate id; or search \"adjacent\" from a chart's **add series** |\n\n`h` and `l` move between Indices, Rates, and CFTC. `/` filters the table. The selected index or rate is the chart above the list. Open an index for constituents, related news, and filings. Enter on a story reads the summary. `o` opens that story, or a filing, when it has a URL. Related filings need an API key. Open a rate for its sources. Open a CFTC filing for its text. Public CFTC filings cover the last 90 days.\n\n## API key (optional)\n\nPublic Adjacent endpoints work without a key. For the authenticated catalog, run **Adjacent: set API key** in the command bar, or set `ADJACENT_API_KEY` in the process environment before launching Gloomberb.\n\n## Headless\n\n```bash\ngloomberb fn ADJ\ngloomberb fn ADJ --tab rates\ngloomberb fn ADJ --tab cftc --json\ngloomberb catalog adjacent\n```\n\n## Network\n\nTalks to `api.adjacent.markets` only.\n\n## License\n\nMIT. Adjacent names identify the data provider and do not grant trademark rights.\n","icon":"https://raw.githubusercontent.com/Lucas-Kohorst/gloomberb-adjacent/HEAD/icon.svg","sponsored":true},{"id":"ibkr-gateway","name":"IBKR Gateway","tagline":"Live IBKR data, trading console, and order entry","description":"Live market data, the trading console, and order entry through IBKR Gateway or TWS. Requires the Interactive Brokers plugin, which owns the broker profile. Speaks the TWS API over a local TCP socket, so it runs in the terminal and the desktop app, not on the web.","repo":"gloom-sh/gloom-ibkr-gateway","ref":"v1.3.0","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["broker","trading"],"targets":["cli","tui","desktop"],"hosts":[],"contributes":{"panes":["ibkr-trading"],"capabilities":[],"broker":false},"minGloomberb":"0.18.4","tier":"official","bundled":false,"stars":3,"updatedAt":"2026-10-25T02:35:54Z","readme":"# IBKR Gateway for Gloomberb\n\nLive market data, the trading console, and order entry through IBKR Gateway or TWS.\n\nRequires Gloomberb 0.15.0 or later, for the query bar, stat bands and title-bar tabs from [Gloomberb #1091](https://github.com/gloom-sh/gloomberb/pull/1091).\n\n```bash\ngloomberb install gloom-sh/gloom-ibkr-gateway\n```\n\nRequires [`gloom-ibkr`](https://github.com/gloom-sh/gloom-ibkr), which owns the Interactive Brokers profile. Install both, then set a profile's connection mode to Gateway.\n\nPress `IBKR` in the command bar for the trading console, or use the Trade tab on any ticker.\n\n## Terminal and desktop only\n\nGateway speaks the TWS API over a raw TCP socket to a local Gateway or TWS process. A browser cannot open one, so this plugin declares `targets: [\"cli\", \"tui\", \"desktop\"]` and does not appear as installable at term.gloom.sh.\n\nOn the desktop the socket lives in the app's Bun process, which loads `index.tsx`; the window loads `index.browser.tsx`, the same plugin without the socket module, and every request from a pane reaches the socket through Gloomberb's remote broker client.\n\nFlex account sync has no such limit, which is why the two are separate plugins.\n\n## What it adds\n\n- **IBKR Console** pane: Open Orders and Executions tabs, the Gateway profile and account in the query bar, and the account's net liquidation, buying power, available funds and day P&L above the table. The footer shows the connection state and the last refresh. `i` and `a` open the profile and account menus; on an open order, `m` loads it into the Trade tab to modify and `c` cancels it after a confirmation. A cancel or modify that fails says so in the order's STATUS, with the reason under the table while the order is selected.\n- **Trade** tab on the ticker research pane, with preview, place, modify, and cancel. The query bar holds the profile, account and side; the quote and net liquidation sit under it, then the order fields (contract, type, quantity, limit and stop prices), IBKR's what-if figures, and the Preview and Submit buttons. Click a field, or press Enter, to give the ticket the keyboard: `i` profile, `a` account, `b`/`v` buy or sell, `s` contract, `q` quantity, `t` type, `l` limit, `x` stop, `p` preview, Enter submit, Esc to hand the keyboard back.\n- Live quotes, price history, and instrument search sourced from Gateway\n- `Buy Selected` / `Sell Selected` commands\n\n## Development\n\n`gloomberb`, `gloom-ibkr`, and `react` are peer dependencies. Gloomberb links its own copies in at install time so there is one instance of each in the process.\n\n```bash\nbun install\ngit clone --depth 1 https://github.com/gloom-sh/gloomberb.git /tmp/gloomberb\nbun install --cwd /tmp/gloomberb\nln -sfn /tmp/gloomberb node_modules/gloomberb\nln -sfn /tmp/gloomberb/node_modules/react node_modules/react\nbun run typecheck && bun test\n```\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-ibkr-gateway/HEAD/icon.svg"},{"id":"hackernews","name":"Hacker News","tagline":"Hacker News front page, with Show, Ask, New, and Best","description":"Browse Hacker News without leaving Gloomberb. Top, New, Best, Show, and Ask feeds with scores, comment counts, and one-key article opening. Also the reference plugin — about 400 lines, no dependencies beyond the host, and the shortest path to writing your own.","repo":"gloom-sh/gloom-hackernews","ref":"v0.1.0","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["news","example"],"targets":["cli","tui","desktop","web"],"hosts":["hacker-news.firebaseio.com"],"contributes":{"panes":["hackernews"],"capabilities":[],"broker":false,"shortcuts":[{"code":"HN","name":"Hacker News","description":"Top, New, Best, Show and Ask stories with scores and comments."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":2,"updatedAt":"2026-10-25T10:48:37Z","readme":"# Hacker News for Gloomberb\n\nThe Hacker News front page as a Gloomberb pane. Top, New, Best, Show, and Ask, with scores, comment counts, and one-key article opening.\n\nRequires Gloomberb 0.15.0 or later for title-bar tabs ([Gloomberb #1038](https://github.com/gloom-sh/gloomberb/pull/1038)) and `StatGrid` ([Gloomberb #1091](https://github.com/gloom-sh/gloomberb/pull/1091)); 0.14.1 provides neither.\n\n```bash\ngloomberb install gloom-sh/gloom-hackernews\n```\n\nThen press `HN` in the command bar.\n\n## This is also the reference plugin\n\nIt is the smallest complete Gloomberb plugin: about 400 lines, no dependencies beyond the host, and it uses only the public `gloomberb/*` API. If you are writing your own plugin, start here rather than from scratch.\n\n| File | What it shows |\n|---|---|\n| `index.tsx` | The whole plugin contract — id, metadata, `targets`, a pane, and a command-bar template |\n| `types.ts` | The plugin and pane ids, the feed list, and the story shape the other files share |\n| `client.ts` | Talking to a third-party API through `createThrottledFetch`, and normalizing its responses |\n| `pane.tsx` | A table-plus-detail pane using shared components: title-bar tabs, a detail that opens on a `StatGrid`, pane-scoped state, and the pane footer |\n| `client.test.ts` | Testing the part with real branching, and nothing else |\n| `gloom.json` | The directory manifest: name, icon, `targets`, `hosts`, the pane it contributes, and `minGloom` |\n\n### Getting started\n\n```bash\ngit clone https://github.com/gloom-sh/gloom-hackernews my-plugin\ncd my-plugin\nbun install\nbun test\nbun run typecheck\n```\n\nRename the ids in `types.ts`, point `client.ts` at your own API, and reshape `pane.tsx`. Then:\n\n```bash\ngloomberb install your-github-user/my-plugin\n```\n\n### Things worth copying\n\n**Import from `gloomberb/*`, never from a renderer.** `gloomberb/ui`, `gloomberb/components`, `gloomberb/react`, `gloomberb/theme`, and `gloomberb/utils` are the renderer contract. A plugin that imports OpenTUI, Electrobun, or DOM APIs directly stops working on the other two renderers.\n\n**Declare `targets` honestly.** This plugin makes public HTTPS reads only, so it runs everywhere. Anything using Node builtins is not web-capable, and the registry verifies this with an import scan rather than trusting the declaration.\n\n**Use `createThrottledFetch`.** It provides rate limiting, retries, timeouts, and request deduplication, and it routes through the host's transport — which is what lets the same code run in the terminal and in the browser.\n\n**Keep pane state in `usePluginPaneState`.** It is scoped per pane instance, so two copies of the pane in one layout stay independent and both survive a restart.\n\n**Put status in the footer, not the body.** Only things that change — loading, error, staleness — belong there.\n\n**Let the host draw the chrome.** `usePaneHeaderTabs` puts the feed strip in the desktop title bar and returns false in the terminal, where the pane draws its own `Tabs`. An open story starts on a `StatGrid` of its figures, because the stack bar already names it.\n\n## Development\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloomberb symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process — two copies of React would throw on the first hook. CI links the host the same way, which is why it typechecks against the same module graph that runs in production.\n\n```bash\ngit clone --depth 1 https://github.com/gloom-sh/gloomberb.git /tmp/gloomberb\nbun install --cwd /tmp/gloomberb\nln -sfn /tmp/gloomberb node_modules/gloomberb\nln -sfn /tmp/gloomberb/node_modules/react node_modules/react\n```\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-hackernews/HEAD/icon.svg"},{"id":"ibkr","name":"Interactive Brokers","tagline":"IBKR account sync over the Flex Web Service","description":"Account and position sync for Interactive Brokers using the Flex Web Service. Owns the IBKR broker profile; install IBKR Gateway alongside it for live data and trading.","repo":"gloom-sh/gloom-ibkr","ref":"v1.1.0","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["broker"],"targets":["cli","tui","desktop"],"hosts":["gdcdyn.interactivebrokers.com","ndcdyn.interactivebrokers.com"],"contributes":{"panes":[],"capabilities":[],"broker":true},"minGloomberb":"0.14.0","tier":"official","bundled":false,"stars":2,"updatedAt":"2026-09-26T13:51:14Z","readme":"# Interactive Brokers for Gloomberb\n\nAccount and position sync for [Gloomberb](https://github.com/gloom-sh/gloomberb) over the IBKR Flex Web Service.\n\nRequires Gloomberb 0.14.0 or later.\n\n```bash\ngloomberb install gloom-sh/gloom-ibkr\n```\n\nThen add an Interactive Brokers profile from the Brokers pane and paste a Flex token and query id.\n\nTo connect with a browser sign-in instead, pick Interactive Brokers in Add Broker and choose Sign in. That is built into Gloom and needs no plugin.\n\n## Flex and Gateway\n\nInteractive Brokers is one broker with two connection modes, and they have very different requirements:\n\n| | Transport | Runs on |\n|---|---|---|\n| **Flex** (this plugin) | HTTPS to a hosted statement service | anywhere |\n| **[Gateway](https://github.com/gloom-sh/gloom-ibkr-gateway)** | raw TCP to a local TWS process | terminal and desktop only |\n\nThis plugin owns the broker id and the whole profile schema, including the Gateway fields, so you have a single \"Interactive Brokers\" profile either way and your stored credentials work with both.\n\nInstall `gloom-ibkr-gateway` to use a Gateway or TWS profile, live market data, or the trading console. Without it, a Gateway-mode profile says so instead of failing quietly.\n\n## Bond positions\n\nFor `assetCategory=\"BOND\"`, the Flex adapter declares `priceBasis: \"percent-of-par\"`. It preserves nominal quantity, raw cost and mark prices, source monetary value/P&L, currency and contract multiplier. The host computes nominal × price ÷ 100 and displays face quantity and percentage-of-par prices; it does not apply the multiplier again. Bond ETFs remain ordinary ETF shares. Resync older stored BOND positions to obtain this declaration.\n\nThis accepted adapter contract is supported by IBKR's [public October 2021 activity sample](https://www.ibkrguides.com/reportingreference/reportguide/daily_concatenated_sample.html): a Treasury position has 1,000 nominal, cost price 87.7420 and cost basis 877.42, with security multiplier 1. The [reporting integration reference](https://www.interactivebrokers.com/campus/ibkr-reporting/reporting-integration/) specifies the bond-price division by 100. The exact Flex XML aliases are the existing accepted parser mappings; an upstream raw XML specimen has not been verified. Accrued interest, coupon, dirty-price adjustments and investment yields are not inferred. This declaration does not establish an independent live quote or historical series convention.\n\n## Portfolio history\n\nThe adapter accepts `cumulativeReturn`, `timeWeightedReturnCumulative`, and `twrCumulative` as cumulative returns in percentage points: `0.5` means 0.5%, `1` means 1%, and `150` means 150%. It converts these values to the host's decimal-fraction representation. This defines the accepted adapter contract; an exact upstream XML mapping for these aliases has not been verified.\n\nIBKR's [Change in NAV reference](https://www.ibkrguides.com/reportingreference/reportguide/changeinnav_fq.htm) describes TWR as a percentage for the statement period. Its [cumulative performance reference](https://www.ibkrguides.com/reportingreference/reportguide/cumulativeperformancestatistics.htm) distinguishes cumulative TWR from MWR calculated over the entire report period. Consequently, period `twr` and `mwr` fields are not used as cumulative-return fallbacks. The adapter does not compound them or infer investment returns from NAV changes, deposits, withdrawals, or dividends. Independently supplied NAV remains usable when a cumulative return is unavailable. Cached performance from the previous interpretation is invalidated and must be refreshed.\n\n## Development\n\n`gloomberb` and `react` are peer dependencies, never real ones — Gloomberb links its own copies into every plugin directory so there is exactly one instance of each in the process.\n\n```bash\nbun install\ngit clone --depth 1 https://github.com/gloom-sh/gloomberb.git /tmp/gloomberb\nbun install --cwd /tmp/gloomberb\nln -sfn /tmp/gloomberb node_modules/gloomberb\nln -sfn /tmp/gloomberb/node_modules/react node_modules/react\nbun run typecheck && bun test\n```\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-ibkr/HEAD/icon.svg"},{"id":"crypto-fear-greed","name":"Crypto Fear & Greed","tagline":"The crypto Fear and Greed Index, today and over time","description":"Today's Crypto Fear and Greed Index (0 to 100) with its classification, yesterday, last week and last month, and a history chart for 30D, 90D, 1Y and All. Index data from Alternative.me (https://alternative.me/crypto/fear-and-greed-index/). Not affiliated with or endorsed by Alternative.me.","repo":"gloom-sh/gloom-fear-greed-crypto","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["data","crypto"],"targets":["cli","tui","desktop","web"],"hosts":["api.alternative.me"],"contributes":{"panes":["crypto-fear-greed"],"capabilities":[],"broker":false,"shortcuts":[{"code":"CFNG","name":"Crypto Fear & Greed","description":"The crypto Fear and Greed Index with its history. Data from Alternative.me."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":1,"updatedAt":"2026-10-09T02:46:19Z","readme":"# Crypto Fear & Greed for Gloom\n\nToday's Crypto Fear and Greed Index (0 to 100) with its classification from Extreme Fear to Extreme Greed, yesterday, last week and last month, and a history chart with 30D, 90D, 1Y and All ranges. The chart is drawn in the five zone colours with the zone edges (25, 46, 54, 75) marked.\n\nIndex data from [Alternative.me](https://alternative.me/crypto/fear-and-greed-index/). This plugin is not affiliated with or endorsed by Alternative.me.\n\n## Install\n\nRequires Gloom 0.15.0 or newer.\n\n```sh\ngloomberb install gloom-sh/gloom-fear-greed-crypto\n```\n\nOpen `CFNG` in the command bar. (`FNG` is the stock-market Fear & Greed index that ships with Gloom.)\n\n## Usage\n\n`h`/`l` or the arrow keys switch the range. `o` opens the source, `r` refreshes. Click \"Alternative.me\" next to the value or the chart to open the source in the browser.\n\nThe pane shows a dial when it is tall enough for the dial and the chart, and a zone bar when it is not, so it stays usable at 90x30.\n\nFrom the command line:\n\n```sh\ngloomberb fn CFNG                 # today, comparisons and 30 days of history\ngloomberb fn CFNG --range 1Y      # 30D, 90D, 1Y or ALL\ngloomberb fn CFNG --json\ngloomberb shot CFNG --range 1Y --output cfng.png\n```\n\n## Data\n\n[Alternative.me](https://alternative.me/crypto/fear-and-greed-index/) publishes the Crypto Fear and Greed Index. Its terms are on that page; this plugin follows them:\n\n- The data is not used to impersonate Alternative.me or to build a service that could be confused with theirs. The plugin is a pane that shows their index, named for what it is, and it uses none of their branding.\n- The source is credited right next to the data. The pane shows \"Source: Alternative.me\", linked to the page above, beside the index value and again beside the history chart. The command-line report carries the same credit.\n\nFetched directly from `api.alternative.me/fng/`, a free API with no key; nothing goes through Gloom Cloud. The index changes once a day, so the plugin does not poll:\n\n- The first read takes the whole history (one request). After that it asks only for the days it is missing.\n- The next read is scheduled from the `time_until_update` the API returns, shortly after 00:00 UTC. If the new day is late it looks again a few minutes later.\n- The readings are kept between sessions, so the pane opens with data before anything is fetched. If a request fails, the last readings stay on screen marked stale and the retry backs off from five minutes to an hour.\n- Pressing `r` more than once a minute does not make more than one request.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\nThe tests never reach the network. `fixtures/fng-latest-130.json` is the newest 130 days of a real response, and `fixtures/fng-label-samples.json` holds one real entry per value the API has published, which pins the classification boundaries to the API's own labels.\n\n```sh\ngloomberb plugin link .\ngloomberb plugin doctor .\n```\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-fear-greed-crypto/HEAD/icon.webp"},{"id":"fear-greed","name":"Fear & Greed","tagline":"CNN Fear & Greed index with the seven indicator charts","description":"The CNN Fear & Greed sentiment gauge, its history, and the seven indicators behind it: momentum, strength, breadth, put/call, junk bond demand, volatility, and safe haven demand. Also available as `gloomberb fear-greed` on the command line.","repo":"gloom-sh/gloom-fear-greed","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["markets","sentiment"],"targets":["cli","tui","desktop","web"],"hosts":["production.dataviz.cnn.io"],"contributes":{"panes":["fear-greed"],"capabilities":[],"broker":false,"shortcuts":[{"code":"FNG","name":"Fear & Greed","description":"CNN Fear & Greed index with its history and the seven indicators behind it."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":1,"updatedAt":"2026-09-29T07:05:52Z","readme":"# Fear & Greed for Gloom\n\nThe CNN Fear & Greed sentiment gauge, its history, and the seven indicators behind it: market momentum, stock price strength, stock price breadth, put and call options, junk bond demand, market volatility, and safe haven demand.\n\n## Install\n\nRequires Gloom 0.15.0 or newer. Gloom restores this plugin once for existing installations when it moves out of the core app: saved panes keep working because the pane and template ids are unchanged, a previously disabled plugin stays disabled, and a deliberate removal is respected.\n\n```sh\ngloomberb install gloom-sh/gloom-fear-greed\n```\n\nOpen `FNG` in the command bar. Also in the hosted web app at term.gloom.sh, where the host proxies the data source.\n\n## Usage\n\nThe readings at the previous close and one week, month, and year ago sit in a band along the top, above today's gauge, a year of index history, and the seven indicator charts. `r` refreshes. `gloomberb fear-greed` prints the same data on the command line, and `gloomberb fn fear-greed` returns the headless model.\n\n## Data\n\nCNN's public Fear & Greed endpoint at `production.dataviz.cnn.io`. Unofficial; if CNN changes it the pane breaks until this plugin is updated, which is one reason it is a plugin rather than part of the core app. The last good reading is cached so the pane has something to show before the first fetch.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-fear-greed/HEAD/icon.webp"},{"id":"substack","name":"Substack","tagline":"Read your Substack subscriptions in the terminal","description":"Your Substack inbox, per-publication archives, and full article reading without leaving Gloomberb. Signs in with a Substack magic link.","repo":"gloom-sh/gloom-substack","ref":"v1.0.0","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["news","reading"],"targets":["cli","tui","desktop"],"hosts":["substack.com"],"contributes":{"panes":["substack"],"capabilities":[],"broker":false,"shortcuts":[{"code":"SUB","name":"Substack","description":"Your Substack inbox and publication archives, with full articles."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":1,"updatedAt":"2026-10-25T10:55:19Z","readme":"# Substack for Gloomberb\n\nYour Substack subscriptions in [Gloomberb](https://github.com/gloom-sh/gloomberb) — inbox, per-publication archives, and full article reading without leaving the terminal.\n\nRequires Gloomberb 0.15.0 or later. On the desktop the pane puts its Feed and subscription tabs in its own title bar, which 0.14 hosts cannot do ([Gloomberb #1091](https://github.com/gloom-sh/gloomberb/pull/1091)).\n\n```bash\ngloomberb install gloom-sh/gloom-substack\n```\n\nThen press `SUB` in the command bar.\n\n## Signing in\n\nThe pane signs in with a Substack magic link, the same way the website does. The session is stored in Gloomberb's plugin persistence, scoped to this plugin.\n\n## Terminal and desktop only\n\nSubstack's API sends no CORS headers, so the browser build at term.gloom.sh cannot reach it. The plugin declares `targets: [\"cli\", \"tui\", \"desktop\"]`, and the marketplace shows it accordingly.\n\n## This used to ship with Gloomberb\n\nIt moved to its own repository so it can be released independently. Existing installs restore it automatically on first launch after upgrading; nothing is lost, and stored sessions and read state carry over because the plugin id is unchanged.\n\n## Development\n\n`gloomberb` and `react` are peer dependencies, never real ones — Gloomberb symlinks its own copies into every plugin directory so there is exactly one instance of each in the process. CI links the host the same way.\n\n```bash\nbun install\ngit clone --depth 1 https://github.com/gloom-sh/gloomberb.git /tmp/gloomberb\nbun install --cwd /tmp/gloomberb\nln -sfn /tmp/gloomberb node_modules/gloomberb\nln -sfn /tmp/gloomberb/node_modules/react node_modules/react\nbun run typecheck && bun test\n```\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-substack/HEAD/icon.svg"},{"id":"alerts","name":"Alerts","tagline":"Price, earnings, filing, news and flow alerts.","description":"Price, valuation, daily technical and event alerts","author":{"name":"Gloom","github":"gloom-sh"},"categories":["alerts"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":[],"capabilities":[],"broker":false},"tier":"official","bundled":true,"stars":0},{"id":"application","name":"Application","tagline":"Core layout, help, and release information.","description":"Core layout, help, and release information.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["core"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["changelog","connections","docs","help","layout-marketplace","plugin-marketplace","roadmap"],"capabilities":[],"broker":false,"shortcuts":[{"code":"PL","name":"Plugins","description":"Browse and install Gloom plugins, and enable or disable the ones you have.","targets":["cli","tui","desktop"]},{"code":"CHG","name":"Changelog","description":"Browse version history and release notes."},{"code":"CONN","name":"Connections","description":"Inspect live request and socket health."},{"code":"DOCS","name":"Docs","description":"Read the docs and Academy lessons in the app: search them, or open a function's entry."},{"code":"ROADMAP","name":"Roadmap","description":"What is being built, what is planned and what shipped. Pro members vote on what comes next."}]},"tier":"official","bundled":true,"stars":0,"highlights":["PL","CHG","CONN"]},{"id":"aries","name":"Aries","tagline":"Aries brokerage accounts, quotes and orders","description":"Sign in with Aries to bring simulation and live accounts into Gloom's broker, portfolio and trading surfaces.","repo":"gloom-sh/gloom-aries","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["broker"],"targets":["cli","tui","desktop"],"hosts":["api.aries.com"],"contributes":{"panes":[],"capabilities":[],"broker":true,"shortcuts":[{"code":"ARA","name":"Aries Accounts","description":""}]},"minGloomberb":"0.18.2","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-10-21T10:04:16Z","readme":"# Aries for Gloom\n\nTrade your Aries account from Gloom: accounts, live quotes, charts, option chains and orders.\n\n![Gloom's order ticket beside an AAPL chart, with the draft limit and average cost drawn on it](docs/images/ticket.png)\n\n## Set up\n\n1. Install [Gloom](https://gloom.sh) 0.18.2 or later.\n2. Open **Plugins** (`PL`), find **Aries** and install it.\n3. Open **Brokers** (`BR`), add **Aries** and press **Connect**. Sign in to Aries in the browser that opens.\n4. Start on **Simulation**. **Enable trading** is on, so you can place orders; set it to Off for a read-only profile.\n\n[TESTING.md](TESTING.md) walks through a first simulation order. A personal API client from Aries Client Center also works ([setup](docs/setup.md)).\n\n## What works\n\n- Simulation and live accounts, balances and positions\n- Real-time quotes, charts and option chains\n- Stock, ETF and option orders, and spreads of 2 to 4 legs\n- Live order updates and 90 days of history\n\n## Good to know\n\n- Trading is off until you turn it on. A live order asks you to type its symbol.\n- Your sign-in and Aries quotes stay on your machine. Accounts sync with Gloom Cloud unless you keep them local.\n- Independent plugin, not affiliated with Aries.\n\n## More\n\n[Setup](docs/setup.md) · [Features](docs/features.md) · [Trading](docs/trading.md) · [Privacy and terms](docs/privacy.md) · [API notes](docs/aries-api-notes.md) · [Development](docs/development.md)\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-aries/HEAD/icon.webp"},{"id":"broker","name":"Broker","tagline":"Broker accounts, sync and connections.","description":"Broker profiles, account sync, order review, and trading status.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["broker"],"targets":["cli","tui","desktop"],"hosts":[],"contributes":{"panes":["broker-orders","brokers"],"capabilities":[],"broker":false,"shortcuts":[{"code":"BR","name":"Brokers","description":"Open broker profiles and connection status"},{"code":"ORD","name":"Orders","description":"Open orders and recent activity for a broker account"}]},"tier":"official","bundled":true,"stars":0,"highlights":["BR","ORD"]},{"id":"byok-ai","name":"BYOK AI","tagline":"Bring your own AI account","description":"Bring your own Anthropic, OpenAI, Google, GitHub Copilot, xAI, or OpenRouter account for in-app AI. Connect Claude, ChatGPT, the OpenAI API, Gemini, GitHub Copilot, xAI, or OpenRouter once and use it from the Ask AI research tab, the AI Agent thread, and the AI Screener, plus `gloomberb ai` on the command line. Requests go from your machine to the provider you connected; nothing is routed through Gloom Cloud.","repo":"gloom-sh/gloom-byok-ai","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["ai","research"],"targets":["cli","tui","desktop"],"hosts":["api.anthropic.com","api.openai.com","chatgpt.com","generativelanguage.googleapis.com","api.githubcopilot.com","github.com","api.x.ai","openrouter.ai"],"contributes":{"panes":["ai-screener","local-agent-workspace"],"capabilities":["ai.runner"],"broker":false},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-10-30T20:24:23Z","readme":"# BYOK AI for Gloom\n\nBring your own Anthropic, OpenAI, Google, GitHub Copilot, xAI, or OpenRouter account for in-app AI. Connect Claude, ChatGPT, the OpenAI API, Gemini, GitHub Copilot, xAI, or OpenRouter once, and use it from three places: the **Ask AI** tab in ticker research, the **AI Agent** thread that can drive the app for you, and the **AI Screener** that turns a sentence into a table of validated tickers.\n\nRequests go from your machine to the provider you connected. Nothing is routed through Gloom Cloud, and no key of ours is involved: the account, the quota, and the bill are yours.\n\n## Install\n\nRequires Gloom 0.15.0 or newer. Gloom restores this plugin once for existing installations when it moves out of the core app: saved panes, threads, screeners, and the default provider keep working because the pane, template, and state ids are unchanged, a previously disabled plugin stays disabled, and a deliberate removal is respected.\n\n```sh\ngloom install gloom-sh/gloom-byok-ai\n```\n\n## Usage\n\nOpen a provider from pane settings (`PS`) and sign in; the OAuth flow opens in your browser and the credential is stored under your data directory, never sent anywhere else. The provider's row in the settings dialog says how the sign-in is going, shows the code to enter when the provider asks for one, and says why a sign-in or disconnect failed. Providers that only take an API key read it from their standard environment variable or from the Pi credential store.\n\n- `AI <prompt>` opens the screener. Describe the screen in plain English; the run returns tickers with a reason each, validated against the app's own instrument search, as a reusable tab. `t` adds a screener, `e` edits its prompt, provider, or model (saving does not rerun it; `r` does), and `w` closes it. Candidates that could not be resolved are listed behind the footer's warning icon (`!`).\n- `AGENT` opens a persistent thread with the model of your choice. It holds a tool for the app's remote-control protocol, so it can read your panes and run research for you. A thread keeps the provider and model it was created with; `n` starts another thread to switch. No financial context is attached automatically: `a` attaches the ticker selected in another pane and shows exactly what will be sent, `x` removes it, and `c` cancels a reply in progress.\n- The **Ask AI** tab in ticker research answers about the ticker in front of you, with its quote, fundamentals, and latest annual statement attached. `t` switches between connected providers.\n- `gloom ai providers` lists what is connected; `gloom ai ask [--provider id] [--model id] <prompt>` runs one prompt headlessly.\n\nScreener reasons are generated by the model. The app checks each candidate's listing identity, which does not establish that every financial criterion is met; review the cited periods and sources in company research.\n\n## Where it runs\n\nThe terminal and the desktop app. The runtime holds credentials and talks to provider APIs from a Bun process, which the hosted web app at term.gloom.sh does not have, so the panes are not offered there. On the desktop the panes render in the view and every call is forwarded to the Bun process over the `ai.runner` capability.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\nThe Pi runtime (`@earendil-works/pi-ai`) is loaded with a dynamic `import()` after the app is up, never from `setup()`: it is hundreds of modules and would otherwise sit in front of the first frame.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-byok-ai/HEAD/icon.webp"},{"id":"clinical-trials","name":"Clinical Trials","tagline":"Clinical trials by drug, condition, sponsor.","description":"Track clinical trials from ClinicalTrials.gov. Search by condition, drug, or sponsor with phase and status.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["trials"],"capabilities":[],"broker":false,"shortcuts":[{"code":"TRIAL","name":"Clinical Trials","description":"Search ClinicalTrials.gov studies by condition, drug, or sponsor. Filter by status, phase and sponsor class; listed sponsors show their ticker."}]},"tier":"official","bundled":true,"stars":0,"highlights":["TRIAL"]},{"id":"futures-commodities","name":"Commodities & Energy","tagline":"Futures, curves, positioning, inventories and balances.","description":"Futures markets, curves, CFTC positioning, EIA inventories, and crop and oil and gas balances.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["markets","macro"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["commodities-energy"],"capabilities":[],"broker":false,"shortcuts":[{"code":"FUT","name":"Commodities & Energy","description":"Futures markets, curves, positioning, inventories, crop balances, and oil and gas balances."},{"code":"CTM","name":"Futures Curve","description":""},{"code":"COT","name":"CFTC Positioning","description":"Weekly futures positioning, changes, historical percentiles and cross-market extremes."},{"code":"DOE","name":"Oil and Gas Inventories","description":"EIA weekly petroleum and gas storage: builds and draws, year-ago and five-year ranges, seasonal charts."},{"code":"NGS","name":"Natural Gas Storage","description":"EIA weekly working gas in storage, lower 48 and by region, against a year ago and the five-year range."},{"code":"PSD","name":"Crop Balances","description":"World balances for wheat, corn, soybeans, cotton, coffee and sugar, with season-average price forecasts when a table is published."},{"code":"JODI","name":"Oil and Gas Balances","description":"Latest monthly crude oil and natural gas production, demand, trade and stocks for the largest countries."}]},"tier":"official","bundled":true,"stars":0,"highlights":["FUT","CTM","COT"],"screenshots":["CTM","COT","FUT"]},{"id":"credit","name":"Credit & Fixed Income","tagline":"CDS, credit spreads, auctions and bonds.","description":"Credit markets, issuer debt, corporate bonds, Treasury auctions and debt, and dealer positions.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["macro","markets"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["fixed-income"],"capabilities":[],"broker":false,"shortcuts":[{"code":"FI","name":"Fixed Income","description":"Credit markets, issuer debt, corporate bonds, Treasury auctions and debt, and dealer positions."},{"code":"CDS","name":"Single-Name CDS","description":""},{"code":"CDX","name":"Index CDS","description":"CDX IG, HY, EM, iTraxx Main and Crossover on the run from DTCC public dissemination: level, 1D and 1W moves, 1Y rank. Sovereign CDS is the other tab."},{"code":"SOVR","name":"Sovereign CDS","description":"The CDS pane on Sovereign: 5Y CDS from DTCC public dissemination, ranked by the month's move, beside each local currency's month."},{"code":"CRD","name":"Credit Spreads","description":"ICE BofA option-adjusted spreads from FRED: US investment grade and high yield by rating, and euro high yield."},{"code":"AUCT","name":"Treasury Auctions","description":"Bill, note, bond, and TIPS auction results from Treasury Fiscal Data: rate, stop-out versus average, bid-to-cover, indirect, direct and dealer takedown, and size. Search by benchmark (10Y) or CUSIP."},{"code":"YAS","name":"Bond Calculator","description":"Price, yield, accrued interest, duration, convexity and Treasury spread for a fixed coupon bond."},{"code":"TRACE","name":"Corporate Bond Tape","description":"Latest corporate and agency bond sales: issuer, coupon, price, yield, and grade."},{"code":"DTS","name":"Treasury Cash and Debt","description":"Treasury operating cash for the latest day with the Treasury General Account's closing balance history, and debt held by the public for the last 20 business days."},{"code":"PDLR","name":"Primary Dealer Positions","description":"Weekly net positions with history, by sector and Treasury tenor, and settlement fails."},{"code":"CRDOC","name":"Credit Documents","description":"Pro credit documents: capital structure, covenant headroom, maturities and amendment evidence. Free preview available.","access":"preview"},{"code":"COVN","name":"Covenants","description":"Pro covenant thresholds, supported headroom and credit-document evidence. Free preview available.","access":"preview"},{"code":"DDIS","name":"Debt Maturities","description":"Principal maturity wall, concentration and dated annual filing history."}]},"tier":"official","bundled":true,"stars":0,"highlights":["CDS","CRD","YAS"],"screenshots":["CDX","SOVR","YAS"]},{"id":"crypto","name":"Crypto & Perps","tagline":"Crypto prices, funding and open interest.","description":"Top crypto assets by market cap, daily spot bitcoin and ether ETF flows, and perpetual funding, open interest and premiums.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["markets","crypto"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["crypto-board","crypto-etf-flows","perps"],"capabilities":[],"broker":false,"shortcuts":[{"code":"CRYP","name":"Crypto","description":"Top crypto assets by market cap with live prices, 7D, 30D and 1Y returns, volume and market cap, stablecoin supply, and DeFi TVL by protocol and chain."},{"code":"ETFF","name":"Crypto ETF Flows","description":"Daily net flows of the US spot bitcoin and ether ETFs, per fund in US$ millions, with the running total since launch, as Farside Investors publishes them."},{"code":"PERP","name":"Perpetuals","description":"Perpetual funding, open interest and premiums by market and venue, with rankings, a venue comparison, liquidations, order book depth and Pro history.","access":"preview"}]},"tier":"official","bundled":true,"stars":0,"highlights":["CRYP","ETFF","PERP"],"screenshots":["CRYP"]},{"id":"custom-view","name":"Custom Views","tagline":"Tables built from any data function: columns, a filter, a sort. Made by the agent, shared with a team.","description":"Tables built from any data function: columns, a filter, a sort. Made by the agent, shared with a team.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["data","productivity"],"targets":["cli","tui","desktop"],"hosts":[],"contributes":{"panes":["custom-view"],"capabilities":[],"broker":false,"shortcuts":[{"code":"VIEW","name":"Custom View","description":"A table from any data function with your columns, filter, and sort."}]},"tier":"official","bundled":true,"stars":0,"highlights":["VIEW"]},{"id":"debug","name":"Debug","tagline":"Debug logs to read and export.","description":"View and export debug logs","author":{"name":"Gloom","github":"gloom-sh"},"categories":["developer"],"targets":["cli","tui","desktop"],"hosts":[],"contributes":{"panes":[],"capabilities":[],"broker":false},"tier":"official","bundled":true,"stars":0},{"id":"earnings","name":"Earnings","tagline":"Earnings calendar, calls and the ripple.","description":"Earnings calendar with surprises and implied moves, call transcripts, and the earnings ripple through customers and suppliers.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research","markets"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["earnings-calendar","earnings-calls","earnings-ripple"],"capabilities":[],"broker":false,"shortcuts":[{"code":"ERN","name":"Earnings Calendar","description":"The market's report days with implied and past moves; with a ticker, its report history."},{"code":"EVTS","name":"Earnings Days","description":"The market's report days with implied and past moves; a ticker picks its row."},{"code":"CALLS","name":"Earnings Calls","description":"Pro earnings call transcripts with speaker attribution, analyst Q&A, and extracted guidance. Alone, the calendar of upcoming calls this week; with a ticker, that company's calls, its next one first.","access":"pro"},{"code":"RIPL","name":"Earnings Ripple","description":"Customers and suppliers of your holdings that report soon, with the disclosed revenue share, and with Pro the companies two hops away."}]},"tier":"official","bundled":true,"stars":0,"highlights":["ERN","EVTS","CALLS"],"screenshots":["ERN"]},{"id":"openfda","name":"FDA Reports and Recalls","tagline":"FDA adverse events and drug recalls.","description":"FDA adverse event reports for drugs and devices, and drug recalls, from openFDA. Search by drug, device, or firm name.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["adverse-events"],"capabilities":[],"broker":false,"shortcuts":[{"code":"FDA","name":"FDA Reports","description":"Drug and device adverse event reports and drug recalls, by drug, device, or firm name."}]},"tier":"official","bundled":true,"stars":0,"highlights":["FDA"]},{"id":"filings","name":"Filings & Events","tagline":"SEC filings, 8-Ks, risk factors, litigation.","description":"SEC filings, risk factors, 8-K events, catalysts and litigation, and M&A and distress.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["catalysts","filing-events","litigation","mna","risk-factors","sec"],"capabilities":[],"broker":false,"shortcuts":[{"code":"SEC","name":"SEC","description":"Recent SEC filings for the selected ticker."},{"code":"ETF","name":"Fund Facts","description":""},{"code":"RISK","name":"Risk Factors","description":"The company's 10-K risk factors, and what was added, dropped, or rewritten since the prior year.","access":"pro"},{"code":"EK","name":"8-K Filings","description":"The company's 8-K filings, classified by item and read: agreements, executive changes, auditor changes, restructurings, and what each said.","access":"pro"},{"code":"CATL","name":"Catalysts","description":"Pro regulatory, clinical, legal and trade-policy calendar with source evidence and revision history.","access":"preview"},{"code":"LITI","name":"Litigation","description":"Pro company litigation, enforcement and antitrust dockets with dated source evidence.","access":"preview"},{"code":"MA","name":"M&A","description":"Pending, rumored and closed mergers and acquisitions, with live arbitrage spreads on listed targets."},{"code":"DIST","name":"Distress","description":"Dated public records about companies in difficulty: US 8-K bankruptcy, obligation and listing filings, SEC going-concern disclosures, Taiwan listing designations, and French and UK insolvency notices."}]},"tier":"official","bundled":true,"stars":0,"highlights":["SEC","EK","RISK"],"screenshots":["EK","RISK"]},{"id":"global-markets","name":"Global Markets","tagline":"World indices, map, sectors, FX, rotation.","description":"World indices, the world map with chokepoint transits, sector and thematic performance, the FX matrix, and relative rotation.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["markets"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["fx-matrix","relative-rotation","sectors","world-indices","world-venue-map"],"capabilities":["geo-series"],"broker":false,"shortcuts":[{"code":"WEI","name":"World Equity Indices","description":"Monitor global equity indices grouped by region."},{"code":"MAP","name":"World Map","description":"A world map with trading venues and their hours; ships, ports, energy and airports as layers."},{"code":"CHOKE","name":"Chokepoint Transits","description":"Chart daily vessel transits through the main shipping chokepoints, or one of them."},{"code":"BI","name":"Sector Performance","description":"S&P 500 sector and industry performance sorted by daily change."},{"code":"THEM","name":"Thematic Baskets","description":"Curated themes with equal-weight returns, breadth and member leaders and laggards."},{"code":"FXC","name":"FX Cross Rates","description":"Currency cross-rate matrix for major FX pairs."},{"code":"RRG","name":"Relative Rotation","description":"Sector or watchlist strength and momentum versus a benchmark, with weekly trails."}]},"tier":"official","bundled":true,"stars":0,"highlights":["WEI","MAP","RRG"],"screenshots":["MAP","RRG","WEI"]},{"id":"growthepie","name":"growthepie","tagline":"Layer 2 Metrics from growthepie","description":"Layer 2 Metrics from growthepie. Ethereum and Layer 2 chains side by side with transactions, active addresses, fees, transaction cost, throughput, stablecoin supply and total value secured, 30 day changes and a daily history chart. Data is CC BY 4.0 from growthepie; 30 day changes are computed by Gloom.","repo":"gloom-sh/gloom-growthepie","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["data","crypto"],"targets":["cli","tui","desktop","web"],"hosts":["api.growthepie.com"],"contributes":{"panes":["growthepie"],"capabilities":[],"broker":false,"shortcuts":[{"code":"GTP","name":"Layer 2 Metrics","description":"Ethereum and Layer 2 chains side by side with fees, activity, stablecoin supply and value secured."}]},"minGloomberb":"0.15.3","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-10-25T10:41:26Z","readme":"# Layer 2 Metrics from growthepie\n\nEthereum and Layer 2 chains side by side: transactions, active addresses, fees, transaction cost, throughput, stablecoin supply and total value secured, with a 30 day change for the metric you pick and a daily history chart for the selected chain.\n\nThis is an independent plugin. It is not made, reviewed or endorsed by growthepie.\n\n## Install\n\nRequires Gloom 0.15.3 or newer.\n\n```sh\ngloomberb install gloom-sh/gloom-growthepie\n```\n\nOpen `GTP` in the command bar, or `GTP base` to open it on one chain. It works in the terminal and the desktop app. It also declares the web target and its one API host, `api.growthepie.com`, so the hosted web app can bundle it and proxy the requests.\n\n## Usage\n\n`h`/`l` or the arrow keys switch the metric: the table ranks by it, the 30D column follows it, and the chart draws it. `j`/`k` or the arrow keys pick a chain, and the chart follows. Type `/` to search chains. The pane menu (`.`) has the chart range: 30D and 90D come with the table, 1Y and All load that one chain's history when you ask for them. `o` opens growthepie, `r` refreshes.\n\nOn the command line:\n\n```sh\ngloomberb fn GTP                                  # every chain, ranked by transactions\ngloomberb fn GTP base --metric fees --range 1y    # plus Base's daily fees for a year\ngloomberb shot GTP base --metric fees --watermark \"Source: growthepie, CC BY 4.0\"\n```\n\n| Metric | Tab | growthepie series |\n| --- | --- | --- |\n| Transactions | Txns | `txcount` |\n| Active addresses | Addresses | `daa` |\n| Fees paid | Fees | `fees_paid_usd` |\n| Median transaction cost | Tx cost | `txcosts_median_usd` |\n| Throughput (Mgas/s) | Throughput | `gas_per_second` |\n| Stablecoin supply | Stables | `stables_mcap` |\n| Total value secured | TVS | `tvl` |\n\nAll values are daily and in USD where they are money, up to the newest UTC day growthepie has published. Not every chain has every metric; a chain without one shows `--`.\n\n## Data\n\nData is from [growthepie](https://www.growthepie.com) (orbal GmbH), licensed [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) under growthepie's [Data and API terms](https://docs.growthepie.com/methodology-caveats/methodology-and-caveats/usage-rules-and-data-tiers).\n\nSource: growthepie, https://www.growthepie.com\n\nThe pane footer carries the same credit, and `o` opens growthepie.\n\nWhat Gloom changes or computes:\n\n- The 30D change is computed by Gloom. It compares the latest daily value with the value 30 days earlier, the same comparison growthepie publishes as `changes.daily.30d` in its metric detail. It is left empty when either day is missing or the earlier value is not above zero, and for a series that stopped more than two days before the others.\n- Chains are the ones growthepie lists in `master.json`, without its aggregate entries (`all_l2s`, `multiple`) and without chains it marks `DEV` or `ARCHIVED`.\n- Rankings, sorting, number formatting and charts are Gloom's.\n\nHow it reaches the API, which is public and needs no key:\n\n| Request | When | Cached |\n| --- | --- | --- |\n| `v1/master.json` | opening the pane | 1 day |\n| `v1/fundamentals.json` | opening the pane | 4 hours |\n| `v1/metrics/chains/{chain}/{metric}.json` | choosing the 1Y or All range for a chain, once its selection rests | 6 hours |\n\ngrowthepie asks for at most 10 calls a minute. The plugin sends at most 8, retries included. Opening the pane with a warm cache makes no request. After a failure each endpoint waits 30 seconds before the next try, doubling up to ten minutes, and a 429 holds every endpoint back for at least a minute. The last good data stays on screen, marked stale, while that happens. Nothing goes through Gloom Cloud.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\nThe tests read small trimmed copies of real growthepie responses in `fixtures/` and never touch the network.\n\n## License\n\nMIT. The data is not part of this license; see Data.\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-growthepie/HEAD/icon.webp"},{"id":"members","name":"Index and ETF members","tagline":"ETF holdings and index changes.","description":"ETF holdings, member returns, contributions, breadth and index changes","author":{"name":"Gloom","github":"gloom-sh"},"categories":["markets","research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["members"],"capabilities":[],"broker":false,"shortcuts":[{"code":"MEMB","name":"Index and ETF members","description":"ETF holdings, member returns, daily contributions, breadth and index changes."}]},"tier":"official","bundled":true,"stars":0,"highlights":["MEMB"]},{"id":"ipo-calendar","name":"IPO Calendar","tagline":"Upcoming and recent IPOs with pricing and first-day return","description":"Upcoming and recently priced IPOs from Stock Analysis: expected date, price range, offer size, and the first-day return once it has traded. Select a row to open the ticker.","repo":"gloom-sh/gloom-ipo-calendar","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["macro","markets"],"targets":["cli","tui","desktop","web"],"hosts":["stockanalysis.com"],"contributes":{"panes":["ipo-calendar"],"capabilities":[],"broker":false,"shortcuts":[{"code":"IPO","name":"IPO Calendar","description":"Upcoming and recently priced IPOs with offer size and first-day return."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-09-29T07:05:58Z","readme":"# IPO Calendar for Gloom\n\nUpcoming and recently priced IPOs: expected date, price range, offer size, and the first-day return once it has traded.\n\n## Install\n\nRequires Gloom 0.15.0 or newer. Gloom restores this plugin once for existing installations when it moves out of the core app: saved panes keep working because the pane and template ids are unchanged, a previously disabled plugin stays disabled, and a deliberate removal is respected.\n\n```sh\ngloomberb install gloom-sh/gloom-ipo-calendar\n```\n\nOpen `IPO` in the command bar. Also in the hosted web app at term.gloom.sh, where the host proxies the data source.\n\n## Usage\n\n`/` focuses the search, `r` refreshes, `o` opens the selected IPO on Stock Analysis. Activate a row to open the ticker once it trades. Narrow panes drop the SHARES, EXCH and OFFER columns, in that order, so the first-day return stays in view. When the upcoming or the recent list fails to load, the footer shows a warning and `!` says which half is missing; a board kept from before a failed refresh is marked stale. `gloomberb fn ipo-calendar` returns the headless model.\n\n## Data\n\n[Stock Analysis](https://stockanalysis.com). Unofficial; if the site changes, the pane breaks until this plugin is updated, which is one reason it is a plugin rather than part of the core app. The last good list is cached so the pane has something to show before the first fetch.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-ipo-calendar/HEAD/icon.webp"},{"id":"market-halts","name":"Market Halts","tagline":"Current and recent US trading halts from Nasdaq Trader","description":"Every current and recent US trading halt from the Nasdaq Trader feed, with the halt reason code, halt time, and resumption times. Select a row to open the ticker.","repo":"gloom-sh/gloom-market-halts","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["markets"],"targets":["cli","tui","desktop","web"],"hosts":["nasdaqtrader.com"],"contributes":{"panes":["market-halts"],"capabilities":[],"broker":false},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-09-24T09:56:32Z","readme":"# Market Halts for Gloom\n\nEvery current and recent US trading halt from the Nasdaq Trader feed, with the halt reason code, halt time, and resumption times.\n\n## Install\n\nRequires Gloom 0.15.0 or newer. Gloom restores this plugin once for existing installations when it moves out of the core app: saved panes keep working because the pane and template ids are unchanged, a previously disabled plugin stays disabled, and a deliberate removal is respected.\n\n```sh\ngloomberb install gloom-sh/gloom-market-halts\n```\n\nOpen `HALT` in the command bar. Also in the hosted web app at term.gloom.sh, where the host proxies the data source.\n\n## Usage\n\nAll, Active and Resumed filter the table from the pane's tab strip; `f` cycles them. `[` and `]` cycle the sort, `r` refreshes. Activate a row to open the ticker. The pane refreshes on its own and reports the feed's status in the footer and the Connections pane.\n\nA narrow pane drops columns instead of scrolling sideways, in this order: market, quote resumption, reason code, company. The status column always stays.\n\n## Data\n\nThe public Nasdaq Trader halts RSS feed at `nasdaqtrader.com`. Fetched directly; nothing goes through Gloom Cloud.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-market-halts/HEAD/icon.webp"},{"id":"market-heatmap","name":"Market Heatmap","tagline":"Largest US stocks and ETFs, sized by market cap and colored by daily move","description":"A treemap of the largest US stocks or ETFs, sized by market cap or net assets and colored by the day's move, with live quotes streamed through Gloom's quote feed. Arrow keys walk the tiles; select one to open the ticker.","repo":"gloom-sh/gloom-market-heatmap","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["markets"],"targets":["cli","tui","desktop","web"],"hosts":["api.gloom.sh"],"contributes":{"panes":["market-heatmap"],"capabilities":[],"broker":false},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-10-02T12:28:48Z","readme":"# Market Heatmap for Gloom\n\nA treemap of the largest US stocks or ETFs, sized by market cap or net assets and colored by the day's move, with live quotes streamed through Gloom's quote feed.\n\n## Install\n\nRequires Gloom 0.15.0 or newer. Gloom restores this plugin once for existing installations when it moves out of the core app: saved panes keep working because the pane and template ids are unchanged, a previously disabled plugin stays disabled, and a deliberate removal is respected.\n\n```sh\ngloomberb install gloom-sh/gloom-market-heatmap\n```\n\nOpen `HM` in the command bar. Also in the hosted web app at term.gloom.sh, with the same market data as the desktop and terminal.\n\n## Usage\n\n`h`/`j`/`k`/`l` or the arrow keys walk the tiles; activate one to open the ticker. The universe tabs sit in the pane title bar on the desktop and at the top of the pane in the terminal; `1` and `2` pick one directly, `[` and `]` step through them, `r` refreshes. The universe is also in pane settings, and live streaming toggles from the pane header. The footer shows the selected tile's price and move, when the board updated, and whether quotes are live, mixed, or polling. A failed refresh keeps the last board up and says so in the footer.\n\n## Data\n\nUniverse snapshots come from Gloom's backend (`api.gloom.sh`). Prices update through the host's quote feed, including connected brokers. Delayed snapshots work without signing in.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-market-heatmap/HEAD/icon.webp"},{"id":"news","name":"News","tagline":"Market news wire and company news.","description":"Market news wire and company news for each ticker.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["news"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["news-breaking","news-feed","news-industry","news-story","news-top","ticker-news"],"capabilities":[],"broker":false,"shortcuts":[{"code":"CN","name":"Ticker News","description":"Company news for the selected ticker."},{"code":"TOP","name":"Top News","description":"Curated top market stories ranked by importance"},{"code":"N","name":"News Feed","description":"Chronological market news firehose"},{"code":"NI","name":"Topic News","description":"Market news by topic code (MNA, CB, ENERGY, METALS, REG, CRYPTO, EARN, IPO) or sector, and public fund letters (LTR)"},{"code":"FIRST","name":"Breaking News","description":"Breaking and urgent market news"}]},"tier":"official","bundled":true,"stars":0,"highlights":["CN","TOP","N"]},{"id":"notes","name":"Notes","tagline":"Notes on tickers, personal or shared.","description":"Markdown notes on tickers and on their own, personal or shared with a team.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["productivity"],"targets":["cli","tui","desktop"],"hosts":[],"contributes":{"panes":[],"capabilities":[],"broker":false},"tier":"official","bundled":true,"stars":0},{"id":"options-volatility","name":"Options & Volatility","tagline":"Option chains, positioning and volatility.","description":"Option chains and positioning, a pricing calculator, scenarios, the volatility surface, and realized and implied volatility history.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research","markets"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["csp-screen","iv-history","iv-screen","options","options-calculator","options-positioning","options-scenario","realized-vol","vol-surface"],"capabilities":[],"broker":false,"shortcuts":[{"code":"OMON","name":"Options","description":"Options chain for the selected ticker."},{"code":"OPX","name":"Options Positioning","description":"Open interest by strike and expiry, max pain, walls and dealer gamma (GEX); BTC-USD and ETH-USD from Deribit."},{"code":"GEX","name":"Dealer Gamma","description":"Net dealer gamma by strike, its total, flip level, call and put walls and the range for the dealer assumption."},{"code":"OVME","name":"Options Calculator","description":"European Black-Scholes or American CRR value, Greeks, implied volatility and cash dividends."},{"code":"CSP","name":"Options Strategy Screen","description":""},{"code":"OSA","name":"Options Scenario","description":"Build multi-leg positions and compare scenario P&L, payoff and aggregate Greeks."},{"code":"OVDV","name":"Volatility Surface","description":"Implied volatility surface, smiles, term structure, skew (25-delta risk reversal and butterfly) and forwards; DVOL beside BTC-USD and ETH-USD."},{"code":"HVG","name":"Realized Volatility Graph","description":"Rolling realized volatility, price and a dated current ATM IV reference."},{"code":"HVT","name":"Realized Volatility Cone","description":"Current realized volatility against its historical range and percentile."},{"code":"HIVG","name":"Implied Volatility History","description":"30-day, 90-day and one-year ATM implied volatility since 2024 against realized, with IV rank and percentile."},{"code":"VCA","name":"Volatility Rich/Cheap","description":"IV rank, percentile, one-year IV, term slope, skew and IV/HV across a list, ranked rich to cheap."}]},"tier":"official","bundled":true,"stars":0,"highlights":["OMON","OPX","OVDV"],"screenshots":["OPX","HIVG","HVG"]},{"id":"ownership","name":"Ownership & Insiders","tagline":"Holders, 13F funds, insiders, short interest.","description":"Holders, 13F funds, insider trades, short interest and volume, and congressional trades.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["holders","insider","short-interest","short-watch","thirteenf-funds"],"capabilities":[],"broker":false,"shortcuts":[{"code":"HDS","name":"Holders","description":"Institutional holders from 13F filings, and 13D/13G beneficial owners: activist and passive stakes over 5% of the class."},{"code":"13F","name":"13F Funds","description":"Browse institutional 13F fund filings and estimated long-book performance."},{"code":"INS","name":"Insider","description":"Insider transactions for a ticker; alone, the companies whose insiders are buying or selling."},{"code":"SI","name":"Short Interest","description":"Bi-monthly short interest settlements from FINRA with days to cover and average daily volume. Daily volume, fails to deliver and weekly ATS/OTC volume share the pane."},{"code":"SIV","name":"Daily Short Volume","description":"The short interest pane on Daily volume: FINRA daily off-exchange short-volume ratios, historical percentile and reported share quantities."},{"code":"FTD","name":"Fails to Deliver","description":"The short interest pane on Fails to deliver: outstanding fail shares by settlement date and CUSIP from SEC publications."},{"code":"ATS","name":"Weekly ATS / OTC Volume","description":"The short interest pane on Weekly ATS/OTC: FINRA weekly ATS and non-ATS shares and trades, including dark-pool volume."},{"code":"SIW","name":"Short Squeeze Watch","description":"Short interest as a share of float, days to cover, the change since the prior settlement and the month's price move across your names."}]},"tier":"official","bundled":true,"stars":0,"highlights":["HDS","INS","SI"],"screenshots":["INS","SI"]},{"id":"polls","name":"Polls","tagline":"Political polls from VoteHub","description":"Browse VoteHub political polls by type: approval, favorability, generic ballot, Senate, governor, and House. Trend charts, pollster breakdowns, search, and links to each source. Data is CC BY 4.0 from VoteHub.","repo":"gloom-sh/gloom-polls","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["data","politics"],"targets":["cli","tui","desktop","web"],"hosts":["api.votehub.com"],"contributes":{"panes":["polls"],"capabilities":[],"broker":false,"shortcuts":[{"code":"POLL","name":"Polls","description":"Political polls by race, with trend charts and pollster breakdowns."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-10-25T10:57:47Z","readme":"# Polls for Gloom\n\nVoteHub political polls: approval, favorability, generic ballot, Senate, governor, and House. Trend charts, pollster breakdowns, search, and a link to each source.\n\n## Install\n\nRequires Gloom 0.15.0 or newer. Gloom restores this plugin once for existing installations when it moves out of the core app: saved panes keep working because the pane and template ids are unchanged, a previously disabled plugin stays disabled, and a deliberate removal is respected.\n\n```sh\ngloomberb install gloom-sh/gloom-polls\n```\n\nOpen `POLL` in the command bar. Also in the hosted web app at term.gloom.sh, where the host proxies the data source.\n\n## Usage\n\nThe poll types are tabs in the pane title bar (a tab row in the terminal); `h`/`l` or the arrow keys switch them. `/` searches subjects and pollsters; arrow keys move between the search field and the list. The result column shows the top two answers, candidates by surname, tinted by what leads (disapproval red, approval green).\n\nEnter opens a poll: when and by whom it was fielded, sample, margin of error, this poll against the recent weighted average, a trend chart of the leading answer, and each pollster's average of it. `h`/`l` switch between those views. `o` opens the source, `r` refreshes.\n\n## Data\n\n[VoteHub](https://votehub.com), licensed CC BY 4.0. Fetched directly from `api.votehub.com`; nothing goes through Gloom Cloud.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-polls/HEAD/icon.webp"},{"id":"portfolio","name":"Portfolio","tagline":"Portfolios, watchlists and position sizing.","description":"Portfolio and watchlist management, analytics, and position sizing.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["portfolio"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["analytics","kelly-sizer","portfolio-list"],"capabilities":[],"broker":false,"shortcuts":[{"code":"PF","name":"Collection Pane","description":"Holdings, weights and P&L of a portfolio or watchlist; set target weights to see drift and the trades that rebalance"},{"code":"PORT","name":"Portfolio Analytics","description":"Benchmark-relative risk, factor betas, stress shifts and local account evidence."},{"code":"MARS","name":"Portfolio Market Risk","description":"Benchmark-relative risk, factor betas, stress shifts and local account evidence."},{"code":"KELLY","name":"Position Sizer","description":"Open Kelly-based position sizing for a ticker."}]},"tier":"official","bundled":true,"stars":0,"highlights":["PF","PORT","MARS"]},{"id":"prediction-markets","name":"Prediction Markets","tagline":"Event markets from Polymarket, Kalshi and five more venues","description":"Browse event markets in one table: Polymarket and Kalshi together, or Gemini, Limitless, Crypto.com, Polymarket US or Pascal on their own from the Venue menu. Prices, spreads, volume, liquidity, and close dates, filtered by category. Open a market for its order book, recent trades, outcome breakdown, price history, and resolution rules, with live book and trade updates from Polymarket. Also `gloomberb predictions [...]` on the command line for Polymarket and Kalshi, and a chart-series capability so a Polymarket or Kalshi market's price history can be plotted beside anything else.","repo":"gloom-sh/gloom-prediction-markets","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["markets","data"],"targets":["cli","tui","desktop","web"],"hosts":["gamma-api.polymarket.com","clob.polymarket.com","data-api.polymarket.com","api.elections.kalshi.com","api.gemini.com","api.limitless.exchange","api.crypto.com","gateway.polymarket.us","data.pascal.trade"],"contributes":{"panes":["prediction-markets"],"capabilities":["prediction-markets.series"],"broker":false,"shortcuts":[{"code":"PM","name":"Prediction Markets","description":"Event markets from Polymarket, Kalshi and five more venues, with order books, trades and price history."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-10-31T10:24:43Z","readme":"# Prediction Markets for Gloom\n\nEvent markets from Polymarket, Kalshi, Gemini, Limitless, Crypto.com, Polymarket US, and Pascal in one table: price, spread, 24h volume, liquidity, and close date, filtered by venue and category. Open a market for its order book, recent trades, outcome breakdown, price history, and resolution rules.\n\n## Install\n\nRequires Gloom 0.15.0 or newer. Gloom restores this plugin once for existing installations when it moves out of the core app: saved panes keep working because the pane and template ids are unchanged, a previously disabled plugin stays disabled, and a deliberate removal is respected.\n\n```sh\ngloomberb install gloom-sh/gloom-prediction-markets\n```\n\nOpen `PM` in the command bar, or `PM <query>` to land on a search. `PM polymarket:fed` scopes the search to one venue.\n\n## Usage\n\nCategories are the pane's tabs: `h`/`l` or the left and right arrows move between them, and with Shift they step through the venues. The query bar above the table holds the search (`/`), the venue filter (All venues is Polymarket and Kalshi; the other venues are picked one at a time), and the view: top, ending soon, new, or watchlist (`1` to `4`). `w` stars the selected market for the watchlist; the up and down arrows move between the search field and the table. Open a market for its detail: its figures across the top, then overview (outcomes, price history and its range, description), order book, trades, and rules, which `h`/`l` switch between. Polymarket books and trades update live over its websocket while a market is open; Kalshi is polled. `o` opens the market on its venue, `r` refreshes.\n\n`gloomberb predictions [venue] [category] [tab] [search...]` launches the app straight into the pane, for example `gloomberb predictions polymarket world ending iran`. `gloomberb fn prediction-markets` returns the same model headlessly. Its rows are dated by when the venue last refreshed their prices, where it says so (Polymarket); a market Polymarket has not refreshed in a day is left out, and `--stale` lists it with `not refreshed since <date>` as its status.\n\nThe plugin also registers a `prediction-markets.series` chart-series capability, so a market's price history can be plotted in the chart composer next to anything else Gloom charts.\n\n## Data\n\nPolymarket's public Gamma, CLOB, and data APIs, Kalshi's public trade API, and the public market endpoints of Gemini, Limitless, Crypto.com, Polymarket US, and Pascal. Unofficial and unauthenticated; if a venue changes its shape the pane breaks until this plugin is updated, which is one reason it is a plugin rather than part of the core app. Nothing goes through Gloom Cloud. Responses are cached in plugin persistence so the pane has something to show before the first fetch.\n\n## Development\n\n```sh\nbun install\n# Link a Gloom checkout, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`gloomberb` and `react` are peer dependencies, never real ones. Gloom symlinks its own copies into every plugin directory on install and on load, so there is exactly one instance of each in the process. CI links the host the same way.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-prediction-markets/HEAD/icon.webp"},{"id":"public","name":"Public","tagline":"Read-only account and position sync for Public","description":"Sync every account on a Public API secret, with holdings, cost basis, and market values. The secret is exchanged for a short-lived access token and every call after that is a read against a reporting endpoint. No order placement.","repo":"gloom-sh/gloom-public","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["broker"],"targets":["cli","tui","desktop"],"hosts":["api.public.com"],"contributes":{"panes":[],"capabilities":[],"broker":true},"minGloomberb":"0.12.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-09-22T16:42:35Z","readme":"# gloom-public\n\nRead-only account and position sync for [Public](https://public.com) in [Gloomberb](https://github.com/gloom-sh/gloomberb).\n\n```bash\ngloomberb install gloom-sh/gloom-public\n```\n\n## Setup\n\n1. In Public, open **Settings → API** and generate an API secret.\n2. In Gloomberb, run `BROKER` (or `Ctrl+P` → \"Connect a broker\"), pick **Public**, and paste the secret.\n\nSync pulls every account on the secret, along with its holdings, cost basis, and market values.\n\n## What it can do\n\nNothing but read. The secret is exchanged for an access token that Public only honours for five minutes, and every call after that exchange is a `GET` against a reporting endpoint. There is no order placement path in this plugin.\n\nThe secret is stored in your local Gloomberb config and is never sent anywhere except `api.public.com`.\n\n## Development\n\n```bash\nbun install\nbun test\nbun run typecheck\n```\n\nThe plugin depends on the host through the `gloomberb` package, which Gloomberb symlinks into `node_modules` at install time so there is exactly one copy of the runtime.\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-public/HEAD/icon.svg"},{"id":"quant","name":"Quant","tagline":"Correlations, backtests and seasonality.","description":"Correlation matrix and relationship graphs, backtests, seasonality, and moves on macro release days.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["markets","research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["backtest","correlation","macro-day","relationship-graph","seasonality"],"capabilities":[],"broker":false,"shortcuts":[{"code":"CORR","name":"Correlation Matrix","description":"Date-aligned Pearson correlation matrix for ticker returns and map series such as GEO:HORMUZ."},{"code":"GR","name":"Relationship Graph","description":"Graph ratio, rolling correlation, and regression between two tickers."},{"code":"BT","name":"Backtest","description":"Test a long-only indicator rule on daily history against buy-and-hold."},{"code":"BTST","name":"Backtest (BTST)","description":"Test a long-only indicator rule on daily history against buy-and-hold."},{"code":"SEAS","name":"Seasonality","description":"Monthly returns by year, each month's average and hit rate, every year's path on one calendar, and returns by weekday and turn of month."},{"code":"MDAY","name":"Macro-Day Reaction","description":"How a name moves on CPI, jobs, FOMC and Brazil IPCA days against a normal day: average move, direction, hit rate, and every release day with its actual, forecast and prior."}]},"tier":"official","bundled":true,"stars":0,"highlights":["CORR","BT","SEAS"],"screenshots":["BT","CORR","SEAS"]},{"id":"rates-macro","name":"Rates & Macro","tagline":"Economic data, yield curves, the rate path.","description":"Economic calendar and statistics, consumer prices, yield curve, rate path, money markets, central bank rates, volatility, and market valuation.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["macro"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["central-bank-rates","cpi","econ-calendar","econ-statistics","market-valuation","money-markets","rate-path","volatility-term-structure","yield-curve"],"capabilities":[],"broker":false,"shortcuts":[{"code":"ECO","name":"Economic Calendar","description":"Upcoming economic events, releases, and indicators."},{"code":"ECST","name":"Economic Statistics","description":"Inflation, labour, growth, housing and rates against their own history."},{"code":"CPI","name":"US Consumer Prices","description":"The US consumer price index by component: weights, monthly, annualised and yearly changes, and contributions to the headline."},{"code":"GC","name":"Yield Curve","description":"Government bond curves, a world grid, and USD SOFR swap rates, swap spreads and tenor history."},{"code":"WIRP","name":"US Rate Path","description":"Fed funds futures implied FOMC path and conditional target probabilities."},{"code":"BTMM","name":"Money Markets","description":"Funding rates, Treasury bills and Federal Reserve liquidity with historical context."},{"code":"CBR","name":"Central Bank Rates","description":"Policy rates of the G20, SNB, Norges Bank, Riksbank and RBNZ, last observed changes and dated historical context."},{"code":"VIX","name":"VIX Curve","description":"Dated VIX tenor closes, the 3M/30D ratio history and the cross-asset volatility board."},{"code":"VOLS","name":"Cross-asset Volatility","description":"Volatility index closes, daily changes and one-year percentiles."},{"code":"VAL","name":"Market Valuation","description":"Whole-market valuation ratios against their own history, with zones and trend deviation."}]},"tier":"official","bundled":true,"stars":0,"highlights":["ECO","GC","WIRP"],"screenshots":["WIRP","CPI","GC"]},{"id":"research-search","name":"Research Search","tagline":"Search calls, wires and filings.","description":"Full-text search across earnings call transcripts, news wires, and SEC filings, with saved searches and keyword alerts.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research","news"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["research-search"],"capabilities":[],"broker":false,"shortcuts":[{"code":"SRCH","name":"Research Search","description":"Full-text search across earnings call transcripts, news wires, and SEC filings, with saved searches and keyword alerts.","access":"pro"}]},"tier":"official","bundled":true,"stars":0,"highlights":["SRCH"]},{"id":"robinhood","name":"Robinhood","tagline":"Read-only account and position sync through Robinhood Trading MCP","description":"Sync Robinhood accounts and equity positions over the Robinhood Trading MCP endpoint. Signs in with OAuth in your browser, asks for the two read-only tools it needs, and refuses to run if either is not marked read-only. No order placement.","repo":"gloom-sh/gloom-robinhood","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["broker"],"targets":["cli","tui","desktop"],"hosts":["agent.robinhood.com","robinhood.com"],"contributes":{"panes":[],"capabilities":[],"broker":true},"minGloomberb":"0.12.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-09-22T16:42:26Z","readme":"# gloom-robinhood\n\nRead-only account and position sync for [Robinhood](https://robinhood.com) in [Gloomberb](https://github.com/gloom-sh/gloomberb), over the Robinhood Trading MCP endpoint.\n\n```bash\ngloomberb install gloom-sh/gloom-robinhood\n```\n\n## Setup\n\nRun `BROKER` (or `Ctrl+P` → \"Connect a broker\") and pick **Robinhood**. The first sync opens Robinhood in your browser to sign in. There is no password or API key to paste, and the tokens Robinhood issues are stored in your local Gloomberb config.\n\n## What it can do\n\nNothing but read. The plugin asks the MCP server for exactly two tools, `get_accounts` and `get_equity_positions`, and **refuses to run if either one is not marked read-only**. No order-placing tool is ever requested or called.\n\nThe OAuth callback listens on `127.0.0.1` with a random state parameter and stops after five minutes.\n\n## Desktop and terminal\n\nThe OAuth flow needs a local HTTP server, so it runs in Gloomberb's Bun process on every platform. The desktop view loads `index.browser.ts`, which carries the broker's identity and fields and forwards the actual work to the backend. See the `browser` field in `package.json`.\n\n## Development\n\n```bash\nbun install\nbun test\nbun run typecheck\n```\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-robinhood/HEAD/icon.svg"},{"id":"screeners","name":"Screeners & Movers","tagline":"Screener, movers, highs and lows, flow.","description":"Equity screener, top movers, session highs and lows, and unusual options flow.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["markets"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["equity-screener","market-movers","scanner-flow","scanner-hilo","scanner-live"],"capabilities":[],"broker":false,"shortcuts":[{"code":"EQS","name":"Equity Screener","description":"Screen stored equities by valuation, growth, liquidity and reported activity; save criteria to your Cloud account."},{"code":"MOST","name":"Market Movers","description":"Top gainers, losers, most active, and trending tickers, pre-market and after-hours movers, and gaps.","targets":["cli","tui","desktop"]},{"code":"HILO","name":"New Highs / Lows","description":"Session new-high and new-low momentum with 30s/1m/5m counts."},{"code":"FLOW","name":"Options Flow","description":"Unusual options activity: sweeps, blocks, large premium prints, and the net premium tide.","access":"pro"},{"code":"SCAN","name":"Live Scanner","description":"Your own intraday scan of US stocks: moves, volume spikes, new highs and lows, VWAP crosses and gaps, with alerts."}]},"tier":"official","bundled":true,"stars":0,"highlights":["EQS","MOST","FLOW"],"screenshots":["EQS","MOST"]},{"id":"comment-letters","name":"SEC Comment Letters","tagline":"SEC comment letters and company replies.","description":"SEC staff comment letters and company responses (CORRESP and UPLOAD). Search their text or list a company's letters by ticker.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["comment-letters"],"capabilities":[],"broker":false,"shortcuts":[{"code":"CLTR","name":"SEC Comment Letters","description":"SEC staff comment letters and company responses (CORRESP, UPLOAD): search their text, or a ticker for one company's letters."}]},"tier":"official","bundled":true,"stars":0,"highlights":["CLTR"]},{"id":"simplefin","name":"SimpleFIN","tagline":"Read-only investment position sync through SimpleFIN Bridge","description":"Sync investment accounts and positions from any institution connected to SimpleFIN Bridge. Paste a one-time setup token; Gloomberb claims it, stores the access URL locally, and only ever reads over HTTPS.","repo":"gloom-sh/gloom-simplefin","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["broker"],"targets":["cli","tui","desktop"],"hosts":["bridge.simplefin.org","beta-bridge.simplefin.org"],"contributes":{"panes":[],"capabilities":[],"broker":true},"minGloomberb":"0.12.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-09-22T16:42:43Z","readme":"# gloom-simplefin\n\nRead-only investment position sync through [SimpleFIN Bridge](https://beta-bridge.simplefin.org) for [Gloomberb](https://github.com/gloom-sh/gloomberb).\n\n```bash\ngloomberb install gloom-sh/gloom-simplefin\n```\n\n## Setup\n\n1. Connect your institutions at SimpleFIN Bridge and generate a **setup token**.\n2. In Gloomberb, run `BROKER` (or `Ctrl+P` → \"Connect a broker\"), pick **SimpleFIN**, and paste the token.\n\nThe token is one-time: Gloomberb claims it once, stores the access URL it receives, and clears the token. Accounts with no holdings are skipped, since this syncs investments rather than balances.\n\n## What it can do\n\nNothing but read, and only over HTTPS. The claim and access URLs are rejected unless they are HTTPS with no unusual port, and the hostname is resolved and refused if it points at a private address. The stored access URL contains credentials, so it never leaves your machine and is shown in the profile form as a placeholder rather than the real value.\n\n## Desktop and terminal\n\nAddress checks need `node:dns` and `node:net`, so the sync runs in Gloomberb's Bun process. The desktop view loads `index.browser.ts`, which carries the broker's identity, its fields, and the credential round-trip, and forwards the actual work to the backend. See the `browser` field in `package.json`.\n\n## Development\n\n```bash\nbun install\nbun test\nbun run typecheck\n```\n\n## License\n\nMIT\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-simplefin/HEAD/icon.svg"},{"id":"alt-data","name":"Supply Chain & Alt Data","tagline":"Supply chains, hiring, apps, GPUs and power.","description":"Supply chains and exposure, government awards, hiring, apps and job postings, social mentions, GPU prices, and power queues.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research","data"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["apps","attention","attention-trending","awards","exposure","gpu","hiring","jobs","power","social-mentions","supply-chain"],"capabilities":[],"broker":false,"shortcuts":[{"code":"GPU","name":"GPU Rental Prices","description":"Pro GPU rental list prices, provider-declared spot and marketplace asks, with sourced price history and related equities. Free preview available.","access":"preview"},{"code":"POWER","name":"Power & Grid","description":"Pro: interconnection queues, historical MW and outcomes, datacenter loads, utility exposure and generation capacity, with primary evidence.","access":"preview"},{"code":"EPWR","name":"EU Power, Carbon & Gas","description":""},{"code":"SPLC","name":"Supply Chain","description":"Pro global supply chain evidence from filings, company announcements, calls and news, with trust tiers, original quotes, native units, four-hop graphs, ranked paths and a free preview.","access":"preview"},{"code":"EXPO","name":"Exposure","description":"Pro scenario exposures across holdings, geographic revenue and supply chains, with source evidence and portfolio concentrations.","access":"preview"},{"code":"AWARDS","name":"Government Awards","description":"Pro: government awards, company history, agency concentration and revenue exposure with source evidence.","access":"preview"},{"code":"HIRE","name":"Hiring Momentum","description":"","access":"preview"},{"code":"APPS","name":"App Attention","description":"Pro app attention: public global app ranks, rank velocity, rating drift, company ownership and source evidence.","access":"preview"},{"code":"JOBS","name":"Hiring","description":"Pro hiring read from the company's own careers system: open roles over time, by function and location, new roles, pay ranges. Alone, every covered company ranked.","access":"pro"},{"code":"BUZZ","name":"Social Mentions","description":"Daily posts on X naming the ticker's cashtag, the day's top posts and their stance."}]},"tier":"official","bundled":true,"stars":0,"highlights":["SPLC","GPU","JOBS"],"screenshots":["SPLC","GPU","JOBS"]},{"id":"ticker-core","name":"Ticker Research","tagline":"Quotes, charts, financials and estimates.","description":"Company overview, charts, financials, quotes and returns, analyst research and estimates, KPIs and segments, valuation, dividends, executives, and time and sales.","author":{"name":"Gloom","github":"gloom-sh"},"categories":["research"],"targets":["cli","tui","desktop","web"],"hosts":[],"contributes":{"panes":["analyst-research","chart-composer","company-guidance","company-kpis","corporate-actions","data-catalog","dividend-yield","earnings-estimates","equity-diagnostic","estimate-revisions","executives","financial-analysis","historical-prices","pe-band","quote-monitor","relative-valuation","returns","revenue-breakdown","reverse-dcf","ticker-research","time-sales"],"capabilities":[],"broker":false,"shortcuts":[{"code":"DES","name":"Ticker Research","description":"Open another research pane for the selected ticker or current collection"},{"code":"ADR","name":"ADR vs Home","description":"A depositary receipt beside its home listing: the ratio, both prices, the dollar rate they imply (the CCL rate for an Argentine pair), spot, and the receipt's premium or discount."},{"code":"QQ","name":"Quote Monitor","description":"Open a compact quote monitor for one or more tickers"},{"code":"RETURN","name":"Returns","description":"Inspect interval and cumulative price returns over a selectable range and granularity."},{"code":"HP","name":"Historical Prices","description":"Open a historical OHLCV table for a ticker."},{"code":"FA","name":"Financial Analysis","description":"Open financial statements for a ticker."},{"code":"G","name":"Custom Chart","description":"Chart arbitrary market, fundamental, valuation, and FRED series together."},{"code":"CAT","name":"Data Catalog","description":"Browse and search every series a chart can draw: securities, rates, credit, economic data, volatility, sentiment, positioning and your own files."},{"code":"GP","name":"Graph Price","description":"Open a price chart for a ticker."},{"code":"GIP","name":"Intraday Price Graph","description":"Open an intraday price chart for one or five sessions."},{"code":"CMP","name":"Comparison Chart","description":""},{"code":"GF","name":"Fundamental Graph","description":"Graph quarterly revenue for one or more tickers, then choose any available field in Series."},{"code":"GE","name":"Valuation Graph","description":"Graph trailing P/E for one or more tickers, then choose any available field in Series."},{"code":"ANR","name":"Analyst Research","description":"Price targets, recommendations, and recent analyst actions."},{"code":"DIAG","name":"Equity Diagnostic","description":"Red flags, anomalies, green flags, and watch items for one company, with cited evidence.","access":"preview"},{"code":"EVT","name":"Corporate Actions","description":"Dividends, splits, reported earnings, and analyst estimates."},{"code":"EE","name":"Earnings Estimates","description":"EPS and revenue estimates with reported earnings."},{"code":"RV","name":"Relative Valuation","description":"Compare valuation and operating metrics across peers."},{"code":"EM","name":"Estimate Revisions","description":"Consensus EPS changes, analyst revision counts, surprises and cited guidance."},{"code":"GUID","name":"Company Guidance","description":"Company EPS guidance cited from filings and transcripts, against consensus."},{"code":"KPIS","name":"Company KPIs","description":"Pro company operating KPIs, comparable history, revisions and cited evidence. Free preview.","access":"preview"},{"code":"GUIDE","name":"Company Guidance","description":"Pro management guidance ranges, raises and cuts, actual versus guide and cited evidence. Free preview.","access":"preview"},{"code":"SEG","name":"Revenue Breakdown","description":"Quarterly revenue by product, segment or region from the company's 10-Q and 10-K filings.","access":"preview"},{"code":"DVD","name":"Dividend Yield","description":""},{"code":"RDCF","name":"Reverse DCF","description":"The free cash flow growth the current enterprise value prices in, next to the growth the company delivered."},{"code":"PEB","name":"P/E Band","description":"Price against round multiples of trailing EPS, and where today's P/E ranks in the stock's own history."},{"code":"EXEC","name":"Executives","description":"Named executive officers and what they were paid, read from the company's proxy statement and checked against the filing.","access":"preview"},{"code":"TAS","name":"Time and Sales","description":"Trade prints, observed VWAP and large prints."},{"code":"QR","name":"Quote Recap","description":"NBBO history: bid and ask with sizes, venues and spread."}]},"tier":"official","bundled":true,"stars":0,"highlights":["DES","G","FA"],"screenshots":["DES","G","FA"]},{"id":"tv","name":"TV","tagline":"Live financial television alongside your research","description":"Live Bloomberg, CNBC, and Yahoo Finance television for Gloomberb","repo":"gloom-sh/gloom-tv","author":{"name":"gloom-sh","github":"gloom-sh"},"categories":["news","media"],"targets":["cli","tui","desktop"],"hosts":["youtube.com","googlevideo.com","ytimg.com"],"contributes":{"panes":["macro-tv"],"capabilities":["tv.stream"],"broker":false,"shortcuts":[{"code":"TV","name":"TV","description":"Live Bloomberg, CNBC and Yahoo Finance television."}]},"minGloomberb":"0.15.0","tier":"official","bundled":false,"stars":0,"updatedAt":"2026-09-29T07:06:03Z","readme":"# TV for Gloomberb\n\nLive Bloomberg, CNBC, and Yahoo Finance television alongside your market research. When a channel is off air, TV falls back to its latest public video and shows its publication label.\n\n## Install\n\nThis plugin requires Gloomberb 0.15.0 for title-bar tabs ([Gloomberb #1038](https://github.com/gloom-sh/gloomberb/pull/1038)). That host release is pending; released 0.14.x is not supported.\n\n```sh\ngloomberb install gloom-sh/gloom-tv\n```\n\nOpen `TV` in the command bar. Existing Gloomberb installations restore this plugin once during the migration. Saved TV panes and their selected channels keep working because their pane and template IDs remain unchanged. A previously disabled TV/Macro plugin is not re-enabled, and deliberate removals are respected.\n\n## Playback\n\n- Desktop: embedded video with playback and mute controls. The channels sit as tabs in the pane title bar.\n- Terminal: Kitty-compatible video output through `mpv`, started with `p` or the `[p]lay` action in the pane footer. Install `mpv` with Kitty support; `yt-dlp` is not required. Playback never starts on its own here, because the player takes the terminal over for as long as it runs. The app resumes when playback exits.\n- Hosted web: external plugins are not loaded by the hosted Gloomberb app.\n\nPress `1`, `2`, or `3` to change channels, `r` to refresh, `p` to play/pause, `m` to mute/unmute, and `o` to open the channel in your browser. The footer actions and channel tabs also support the mouse. When a stream cannot be resolved, or the desktop player cannot play it, the pane shows the reason with a Try again button.\n\nPublic stream availability depends on YouTube, the channel, your location, and consent requirements. Stream URLs are refreshed before expiry; playback failures trigger one recovery attempt per video.\n\n## Development\n\n```sh\nbun install\n# Link a checkout containing the new host API, as the plugin installer does:\nln -s /path/to/gloomberb node_modules/gloomberb\nln -s /path/to/gloomberb/node_modules/react node_modules/react\nbun run typecheck\nbun test\n```\n\n`index.ts` is the native entry: it registers the `tv.stream` capability and owns stream resolution. `index.browser.ts` exports the same pane UI and invokes that capability in the desktop backend. Browser bundles do not carry `youtubei.js`, native code, or a second React instance.\n\nThe pane uses only Gloomberb's public UI, component, runtime, and capability APIs. YouTube resolution stays in this repository; the host supplies generic media playback.\n","icon":"https://raw.githubusercontent.com/gloom-sh/gloom-tv/HEAD/icon.webp"},{"id":"alpaca-data","name":"Alpaca Market Data","tagline":"Real-time US equity quotes, charts and options chains from Alpaca's free IEX feed","description":"Serves US-listed equities and ETFs from Alpaca Market Data ahead of Gloom Cloud: real-time IEX quotes and streaming trades, intraday and daily bars at every chart resolution, and options chains from the indicative options feed. Fundamentals, filings, news, FX and non-US listings keep coming from Gloom Cloud. Needs a free Alpaca account's API key pair.","repo":"TestRxMD/gloom-alpaca-data","author":{"name":"TestRxMD","github":"TestRxMD"},"categories":["data","market-data"],"targets":["cli","tui","desktop","web"],"hosts":["data.alpaca.markets","stream.data.alpaca.markets","paper-api.alpaca.markets","api.alpaca.markets"],"contributes":{"panes":[],"capabilities":[],"broker":false},"minGloomberb":"0.17.2","tier":"community","bundled":false,"stars":1,"updatedAt":"2026-10-15T13:52:58Z","readme":"# Alpaca Market Data for Gloomberb\n\n[![CI](https://github.com/TestRxMD/gloom-alpaca-data/actions/workflows/ci.yml/badge.svg)](https://github.com/TestRxMD/gloom-alpaca-data/actions/workflows/ci.yml)\n[![Stream check](https://github.com/TestRxMD/gloom-alpaca-data/actions/workflows/stream-check.yml/badge.svg)](https://github.com/TestRxMD/gloom-alpaca-data/actions/workflows/stream-check.yml)\n\nA [Gloomberb](https://github.com/gloom-sh/gloomberb) plugin that serves US-listed\nequities and ETFs from [Alpaca Market Data](https://alpaca.markets/data) ahead of\nGloom Cloud. Alpaca's free plan includes the IEX feed in real time, so quotes,\nstreamed trades, intraday and daily bars, and options chains arrive live instead\nof fifteen minutes behind.\n\nIt registers one `asset-data` capability (provider id `alpaca`, priority 5) and\nanswers only for tickers Alpaca lists as active US equities. Everything else\nfalls through to Gloom Cloud as before.\n\n## What comes from where\n\n| Data | Source |\n|---|---|\n| Quotes for US equities and ETFs (price, change, bid/ask, day range) | Alpaca, real-time IEX |\n| Streamed trades and quotes in watchlists, portfolios and detail panes | Alpaca, one shared IEX websocket |\n| Charts at every resolution (1m to 1mo), `GP`, `history` | Alpaca bars, split-adjusted |\n| Options chains (strikes, bid/ask, last, open interest) | Alpaca indicative options feed plus its contract catalogue |\n| Ticker search for US symbols and company names | Alpaca asset catalogue, merged with Gloom Cloud's results |\n| Fundamentals, statements, profiles, earnings | Gloom Cloud |\n| SEC filings, holders, analyst research, corporate actions | Gloom Cloud |\n| News and article summaries | Gloom Cloud |\n| Crypto, FX, indices, futures, non-US listings, OTC | Gloom Cloud |\n\nA quote carries `providerId: \"alpaca\"` and `dataSource: \"live\"` when Alpaca\nanswered it. `gloomberb quote AAPL --json` shows both.\n\n## Install\n\n```bash\ngloomberb install TestRxMD/gloom-alpaca-data\n```\n\nNeeds Gloomberb 0.17.2 or newer and a free Alpaca API key pair (see Setup).\n\n## Setup\n\n1. Create a free account at [app.alpaca.markets](https://app.alpaca.markets) and\n   generate an API key pair. Paper-trading keys are fine: market data is the same\n   for paper and live keys, and the free Market Data plan comes with either.\n2. Install the plugin:\n\n   ```bash\n   gloomberb install TestRxMD/gloom-alpaca-data\n   ```\n\n   or, from a checkout, `gloomberb plugin link ./gloom-alpaca-data`.\n3. In Gloomberb open the Plugins pane (`PL`), select **Alpaca Market Data** and\n   press `s`, or run the **Set up Alpaca Market Data** command. Enter the key ID\n   and secret, and pick *Paper* or *Live* to match the account the pair belongs\n   to (the asset catalogue and market clock are read from that account's trading\n   API host).\n\nThe values are stored under `pluginConfig[\"alpaca-data\"]` in Gloomberb's\n`config.json`. CLI commands such as `gloomberb quote` read them from there, so\nthey work without the app running. The pair can also come from the environment\nas `APCA_API_KEY_ID` / `APCA_API_SECRET_KEY` (or `ALPACA_API_KEY` /\n`ALPACA_SECRET_KEY`, with `ALPACA_PAPER=false` for live keys).\n\nCheck that it loaded:\n\n```bash\ngloomberb plugin doctor gloom-alpaca-data\ngloomberb quote AAPL --json\n```\n\n## What to expect from the IEX feed\n\n- **Prices are IEX prints.** IEX handles a few percent of US volume, so the last\n  trade can differ by a cent or two from the consolidated tape, and the day's\n  volume is IEX volume only, not the consolidated total.\n- **After hours is thin.** IEX trades 8:00 to 17:00 New York (pre-market from\n  8:00, a short post-market to 17:00), so a quote after 17:00 shows the regular\n  close with the last IEX print beside it, and a pre-market quote before 8:00 is\n  the previous close.\n- **Bid and ask** are IEX's top of book. An empty side (a one-cent bid after the\n  close) is dropped rather than shown.\n- **Charts** show regular-hours bars (09:30 to 16:00) unless the chart asks for\n  extended hours. History reaches back to 2016 at every resolution.\n- **Options** use Alpaca's indicative feed: real-time, derived quotes. Implied\n  volatility is shown when the feed includes it, otherwise 0: during the\n  session roughly the strikes near the money carry it (checked 2026-10-15, AAPL\n  weekly: 19 of 95 calls and 21 of 95 puts), deep in-the-money contracts and\n  pre-market chains come without it. Open interest is the prior session's,\n  dated in the chain's `openInterestAsOf`.\n- **One streaming connection.** A free account holds one websocket. Another\n  process on the same keys (a bot, a second Gloomberb) takes it over, and the\n  plugin falls back to re-reading snapshots once a minute until it is free.\n  Two Gloomberbs at once (the terminal app and the desktop app, or either one\n  and `gloomberb api subscribe`) are the usual case: Alpaca answers the second\n  one `406 connection limit exceeded`, and whichever connected first keeps\n  streaming. The app shows a toast and a debug-log line once when that\n  happens and once when the connection is free again; the second instance\n  retries every 30 seconds in between. A CLI command has no logger, so there\n  `--json` output simply keeps `\"delivery\": \"poll\"` with a fresh seed every\n  minute.\n- **Sessions and holidays.** The market state is derived from the New York\n  clock, corrected by Alpaca's market clock for holidays during regular hours.\n- **Silent sockets.** Alpaca's stream sends no heartbeat, so a websocket left\n  half-open by a network change (sleep, Wi-Fi roaming, an IPv6 flap) looks like\n  a quiet market. Streamed symbols are re-seeded from a snapshot once a minute\n  anyway; when that snapshot's latest trade is more than 45 seconds newer than\n  the stream's last message, the socket is dropped and reopened, with a\n  \"silent for Ns while trades printed\" line in the debug log.\n\n## Development\n\nThe plugin is plain TypeScript with no dependencies beyond the host. It uses\n`httpFetch` from `gloomberb/utils` for REST and the native `WebSocket` for\nstreaming, so it compiles for the terminal, the desktop view and the web app.\n\n```bash\nbun install            # dev dependencies: typescript and type packages\nbun run link-host      # clone Gloomberb at the installed version and link it into node_modules\nbun run typecheck\nbun test               # mapper tests against recorded Alpaca responses in fixtures/\ngloomberb plugin link . && gloomberb plugin doctor gloom-alpaca-data\n```\n\n`link-host` mirrors what Gloomberb does at install time for a source-run host:\none copy of `gloomberb` and `react`, linked rather than installed. A packaged\nGloomberb (the .app) has no source tree to link, so the script keeps a checkout\nunder `~/.cache/gloomberb-host` (`GLOOMBERB_SRC` overrides the path,\n`GLOOMBERB_VERSION` the tag).\n\n### Continuous integration\n\n- **CI** (`.github/workflows/ci.yml`) runs on every push and pull request. It\n  links Gloomberb at the tag matching `minGloom` in `gloom.json`, then runs\n  `bun run typecheck` and `bun test`. When the repository secrets\n  `APCA_API_KEY_ID` and `APCA_API_SECRET_KEY` are present it also opens the IEX\n  websocket for a 20-second authenticate-and-subscribe handshake; forks without\n  the secrets skip that step and still pass.\n- **Stream check** (`.github/workflows/stream-check.yml`) runs on weekdays at\n  13:42 UTC (9:42 AM New York during daylight time, 8:42 AM during standard\n  time) and on demand. It watches SPY and AAPL for 45 seconds and fails when no\n  trade arrives. A failed scheduled run emails the repository owner through\n  GitHub's default notification settings. The run is kept short because a free\n  Alpaca account allows one websocket, and the check takes it away from any\n  local Gloomberb on the same keys while it runs. A run outside IEX hours or on\n  a market holiday is expected to fail.\n\n### Layout\n\n| File | Role |\n|---|---|\n| `index.ts` | The `GloomPlugin`: config schema, hosts, the capability, and `setup()` wiring the keys in |\n| `provider.ts` | The `AssetDataProvider`: `canProvide`, quotes, batches, streaming, history, search, options |\n| `alpaca-client.ts` | The REST endpoints, paginated, through `httpFetch` |\n| `stream.ts` | The shared IEX websocket with per-symbol reference counts and reconnects |\n| `quotes.ts`, `bars.ts`, `options.ts` | Pure mappers from Alpaca JSON to Gloomberb's `Quote`, `PricePoint`, `OptionsChain` |\n| `session.ts` | The New York session clock and Alpaca timestamp parsing |\n| `symbols.ts` | Which tickers Alpaca can answer for, and how it spells them (`BRK-B` is `BRK.B`) |\n| `credentials.ts` | Where the key pair comes from: the config form, the environment, or `config.json` |\n\n### Why priority 5\n\nThe provider router sorts sources by the lowest priority among a source's\ncapabilities. Gloom Cloud's market provider declares 100, but its news\ncapability declares 10, so Gloom Cloud sorts at 10. A market provider that wants\nto be asked first has to sit below that.\n\n## License\n\nMIT\n"},{"id":"fxmacrodata","name":"FXMacroData","tagline":"Macroeconomic calendars, indicator charts and research tools","description":"Native macroeconomic tables, indicator charts and research tools backed by https://fxmacrodata.com/?utm_source=gloomberb&utm_medium=integration&utm_campaign=gloomberb-fxmacrodata&utm_content=homepage. The public USD workflow requires no key. Source: https://github.com/fxmacrodata/gloomberb-fxmacrodata.","repo":"fxmacrodata/gloomberb-fxmacrodata","ref":"v0.1.0","author":{"name":"fxmacrodata","github":"fxmacrodata"},"categories":["macro","data"],"targets":["cli","tui","desktop"],"hosts":["api.fxmacrodata.com","mcp.fxmacrodata.com"],"contributes":{"panes":[],"capabilities":[],"broker":false},"minGloomberb":"0.15.0","tier":"community","bundled":false,"stars":1,"updatedAt":"2026-10-05T08:41:46Z","readme":"# FXMacroData for Gloomberb\n\nResearch macroeconomic conditions in Gloomberb with [FXMacroData](https://fxmacrodata.com/?utm_source=github&utm_medium=referral&utm_campaign=gloomberb-fxmacrodata&utm_content=readme): chart indicator histories, inspect upcoming releases and query market data in native research panes.\n\n[Subscribe to FXMacroData](https://fxmacrodata.com/subscribe?utm_source=github&utm_medium=referral&utm_campaign=gloomberb-fxmacrodata&utm_content=subscribe) for non-USD data, full available history, FX, commodities and positioning. Use the public USD workflow to evaluate the integration before connecting your subscription.\n\nEvaluate the plugin with the public USD catalogue, recent indicator history and release calendar without an API key. Connect your subscription when you need protected datasets or full available history.\n\n## Install\n\nUse Gloomberb 0.15.0 or newer in the desktop app or terminal. Install this [native plugin](https://github.com/fxmacrodata/gloomberb-fxmacrodata) with:\n\n```sh\ngloomberb install fxmacrodata/gloomberb-fxmacrodata\n```\n\nRestart Gloomberb and enable **FXMacroData** in its plugin settings. For a local source installation, place this package at `~/.gloomberb/plugins/fxmacrodata/`, with `index.ts` at that directory's root, and run `bun install --production` there.\n\nThird-party plugins run in the desktop and terminal clients. The hosted web app at `term.gloom.sh` runs built-in plugins only.\n\n## Use\n\nOpen the command bar and choose **FXMacroData: USD release calendar**. The table keeps confirmed release timestamps and source fields. Announcement epochs display as UTC times while JSON retains the original values. Select any **FXMacroData** research pane to query the other REST operations or hosted MCP tools. Parameter forms show the contract's fields; optional blank fields use the endpoint defaults. Edit parameters through the pane settings. When a result has several sections, choose one from the **Section** menu above the table or with `[` and `]`. `r` refreshes and keeps the current table until the new result arrives. Column headings sort the current table. `o` or the source footer opens FXMacroData.\n\nFor macro charts, choose **FXMacroData macro indicators** in Gloomberb's chart-series picker. Search a currency followed by the indicator name, for example `usd inflation`, or use the series ID `usd/policy_rate`. Charts use observation dates; publication timestamps remain separate. Select an explicit chart date window when you need a period other than the API default. The chart reports pagination and assumed publication-time warnings; the corresponding research table retains every original row field and the full endpoint payload.\n\nAll 23 documented REST operations and 49 hosted MCP tools from the included public contract snapshot are available through native panes, command discovery and capabilities. This includes catalogue, macro history, release calendar, predictions, news, sessions, FX reference rates, curves, rate differentials, financial prices, factors, risk sentiment, COT, commodities, seasonality, official dataset families, analytical tasks and visual-artifact results. The native chart adapter supports macro indicator histories. Other results appear in structured tables; nested metadata and artifact content remain available in the lossless result envelope.\n\nHeadless examples:\n\n```sh\ngloomberb fn FXMD_REST_DATA_CATALOGUE --currency usd\ngloomberb fn FXMD_REST_RELEASE_CALENDAR --currency usd --json\ngloomberb api invoke fxmacrodata.rest_indicator_history '{\"currency\":\"usd\",\"indicator\":\"policy_rate\",\"limit\":20}' --json\n```\n\nUse `gloomberb catalog` and `gloomberb api list` to discover input options. Empty windows stay empty. The event-stream operation collects a finite snapshot, bounded by `max_events` (1–100) and `max_seconds` (1–60), then closes the stream. It does not create a background subscription.\n\n## Connect your FXMacroData subscription\n\nRun **FXMacroData: configure optional API key** in the command bar. The password input keeps the key only in memory for the current plugin session. Restarting or disabling the plugin clears it; enter it again when needed. A blank input selects public access for the session, including when an environment key exists. Changing access cancels requests using the previous connection.\n\nFor CLI/TUI use, provide your own key through the process environment variable `FXMACRODATA_API_KEY` or `FXMD_API_KEY` before starting Gloomberb. No credential value belongs in a pane parameter, command argument, example, exported configuration or shared layout. The explicit access command also removes the obsolete stored `apiKey` field if an earlier version created it, without reading its value. No key is required for the public USD workflow.\n\nThe client uses FXMacroData's documented authentication inside its transport, refuses redirects, and returns sanitized errors. It adds no analytics requests. Website links carry campaign parameters; API and MCP request URLs carry no campaign parameters.\n\nSee the [API reference](https://fxmacrodata.com/documentation/reference?utm_source=github&utm_medium=referral&utm_campaign=gloomberb-fxmacrodata&utm_content=docs) for units, access requirements and pagination. Market consensus, official projections and FXMacroData-generated predictions retain their original labels.\n\n## Development\n\n```sh\nnpm ci --ignore-scripts\nnpm run typecheck\nnpm test\nnpm run build\nnpm pack --dry-run\n```\n\nThe tests use the real Gloomberb capability registry and terminal render harness with fixture responses. React is pinned to the host version for the test renderer. Typechecking covers production code and service tests; the upstream OpenTUI render harness has an optional-argument typing mismatch, so its test runs through Bun. Tests need neither live credentials nor network access.\n\nThe MIT licence covers this integration code. FXMacroData names identify the provider and do not grant trademark rights.\n"}]}
