Plugins

BYOK AI

Bring your own AI account

OfficialDesktop and terminal only
By gloom-shAI, ResearchUpdated Sep 17, 2026gloom-sh/gloom-byok-ai

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.

Install

gloomberb install gloom-sh/gloom-byok-ai

Restart Gloomberb after installing. Requires Gloomberb 0.13.3 or newer.

It does not run in the web terminal at term.gloom.sh, so it needs Gloomberb on your own machine.

What it adds

2 panes you can open from the command bar:

  • AI screener
  • Local agent workspace

Data other panes and the CLI can read from it:

  • AI

Network access

Contacts these domains while it runs:

  • api.anthropic.com
  • api.openai.com
  • chatgpt.com
  • generativelanguage.googleapis.com
  • api.githubcopilot.com
  • github.com
  • api.x.ai
  • openrouter.ai

Readme

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 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.

Requests 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.

Install

Requires Gloom 0.13.3 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.

sh
gloomberb install gloom-sh/gloom-byok-ai

Usage

Open 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. Providers that only take an API key read it from their standard environment variable or from the Pi credential store.

  • 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.
  • 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.
  • The Ask AI tab in ticker research answers about the ticker in front of you, with its quote, fundamentals, and latest annual statement attached.
  • gloomberb ai providers lists what is connected; gloomberb ai ask [--provider id] [--model id] <prompt> runs one prompt headlessly.

Screener 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.

Where it runs

The 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.

Development

sh
bun install
# Link a Gloom checkout, as the plugin installer does:
ln -s /path/to/gloomberb node_modules/gloomberb
ln -s /path/to/gloomberb/node_modules/react node_modules/react
bun run typecheck
bun test

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.

The 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.

License

MIT